telegram-bot-builder
Expert in building Telegram bots that solve real problems - from
Install
npx skills add https://github.com/sickn33/agentic-awesome-skills/tree/main/skills/telegram-bot-builder
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install sickn33-agentic-awesome-skills@llmmart
git clone https://github.com/sickn33/agentic-awesome-skills.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole sickn33/agentic-awesome-skills collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
Telegram Bot Builder
Expert in building Telegram bots that solve real problems - from simple automation to complex AI-powered bots. Covers bot architecture, the Telegram Bot API, user experience, monetization strategies, and scaling bots to thousands of users.
Role: Telegram Bot Architect
You build bots that people actually use daily. You understand that bots should feel like helpful assistants, not clunky interfaces. You know the Telegram ecosystem deeply - what's possible, what's popular, and what makes money. You design conversations that feel natural.
Expertise
- Telegram Bot API
- Bot UX design
- Monetization
- Node.js/Python bots
- Webhook architecture
- Inline keyboards
Capabilities
- Telegram Bot API
- Bot architecture
- Command design
- Inline keyboards
- Bot monetization
- User onboarding
- Bot analytics
- Webhook management
Patterns
Bot Architecture
Structure for maintainable Telegram bots
When to use: When starting a new bot project
Bot Architecture
Stack Options
| Language | Library | Best For |
|---|---|---|
| Node.js | telegraf | Most projects |
| Node.js | grammY | TypeScript, modern |
| Python | python-telegram-bot | Quick prototypes |
| Python | aiogram | Async, scalable |
Basic Telegraf Setup
import { Telegraf } from 'telegraf';
const bot = new Telegraf(process.env.BOT_TOKEN);
// Command handlers
bot.start((ctx) => ctx.reply('Welcome!'));
bot.help((ctx) => ctx.reply('How can I help?'));
// Text handler
bot.on('text', (ctx) => {
ctx.reply(`You said: ${ctx.message.text}`);
});
// Launch
bot.launch();
// Graceful shutdown
process.once('SIGINT', () => bot.stop('SIGINT'));
process.once('SIGTERM', () => bot.stop('SIGTERM'));
Project Structure
telegram-bot/
├── src/
│ ├── bot.js # Bot initialization
│ ├── commands/ # Command handlers
│ │ ├── start.js
│ │ ├── help.js
│ │ └── settings.js
│ ├── handlers/ # Message handlers
│ ├── keyboards/ # Inline keyboards
│ ├── middleware/ # Auth, logging
│ └── services/ # Business logic
├── .env
└── package.json
Inline Keyboards
Interactive button interfaces
When to use: When building interactive bot flows
Inline Keyboards
Basic Keyboard
import { Markup } from 'telegraf';
bot.command('menu', (ctx) => {
ctx.reply('Choose an option:', Markup.inlineKeyboard([
[Markup.button.callback('Option 1', 'opt_1')],
[Markup.button.callback('Option 2', 'opt_2')],
[
Markup.button.callback('Yes', 'yes'),
Markup.button.callback('No', 'no'),
],
]));
});
// Handle button clicks
bot.action('opt_1', (ctx) => {
ctx.answerCbQuery('You chose Option 1');
ctx.editMessageText('You selected Option 1');
});
Keyboard Patterns
| Pattern | Use Case |
|---|---|
| Single column | Simple menus |
| Multi column | Yes/No, pagination |
| Grid | Category selection |
| URL buttons | Links, payments |
Pagination
function getPaginatedKeyboard(items, page, perPage = 5) {
const start = page * perPage;
const pageItems = items.slice(start, start + perPage);
const buttons = pageItems.map(item =>
[Markup.button.callback(item.name, `item_${item.id}`)]
);
const nav = [];
if (page > 0) nav.push(Markup.button.callback('◀️', `page_${page-1}`));
if (start + perPage < items.length) nav.push(Markup.button.callback('▶️', `page_${page+1}`));
return Markup.inlineKeyboard([...buttons, nav]);
}
Bot Monetization
Making money from Telegram bots
When to use: When planning bot revenue
Bot Monetization
Revenue Models
| Model | Example | Complexity |
|---|---|---|
| Freemium | Free basic, paid premium | Medium |
| Subscription | Monthly access | Medium |
| Per-use | Pay per action | Low |
| Ads | Sponsored messages | Low |
| Affiliate | Product recommendations | Low |
Telegram Payments
// Create invoice
bot.command('buy', (ctx) => {
ctx.replyWithInvoice({
title: 'Premium Access',
description: 'Unlock all features',
payload: 'premium_monthly',
provider_token: process.env.PAYMENT_TOKEN,
currency: 'USD',
prices: [{ label: 'Premium', amount: 999 }], // $9.99
});
});
// Handle successful payment
bot.on('successful_payment', (ctx) => {
const payment = ctx.message.successful_payment;
// Activate premium for user
await activatePremium(ctx.from.id);
ctx.reply('🎉 Premium activated!');
});
Freemium Strategy
Free tier:
- 10 uses per day
- Basic features
- Ads shown
Premium ($5/month):
- Unlimited uses
- Advanced features
- No ads
- Priority support
Usage Limits
async function checkUsage(userId) {
const usage = await getUsage(userId);
const isPremium = await checkPremium(userId);
if (!isPremium && usage >= 10) {
return { allowed: false, message: 'Daily limit reached. Upgrade?' };
}
return { allowed: true };
}
Webhook Deployment
Production bot deployment
When to use: When deploying bot to production
Webhook Deployment
Polling vs Webhooks
| Method | Best For |
|---|---|
| Polling | Development, simple bots |
| Webhooks | Production, scalable |
Express + Webhook
import express from 'express';
import { Telegraf } from 'telegraf';
const bot = new Telegraf(process.env.BOT_TOKEN);
const app = express();
app.use(express.json());
app.use(bot.webhookCallback('/webhook'));
// Set webhook
const WEBHOOK_URL = 'https://your-domain.com/webhook';
bot.telegram.setWebhook(WEBHOOK_URL);
app.listen(3000);
Vercel Deployment
// api/webhook.js
import { Telegraf } from 'telegraf';
const bot = new Telegraf(process.env.BOT_TOKEN);
// ... bot setup
export default async (req, res) => {
await bot.handleUpdate(req.body);
res.status(200).send('OK');
};
Railway/Render Deployment
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["node", "src/bot.js"]
Validation Checks
Bot Token Hardcoded
Severity: HIGH
Message: Bot token appears to be hardcoded - security risk!
Fix action: Move token to environment variable BOT_TOKEN
No Bot Error Handler
Severity: HIGH
Message: No global error handler for bot.
Fix action: Add bot.catch() to handle errors gracefully
No Rate Limiting
Severity: MEDIUM
Message: No rate limiting - may hit Telegram limits.
Fix action: Add throttling with Bottleneck or similar library
In-Memory Sessions in Production
Severity: MEDIUM
Message: Using in-memory sessions - will lose state on restart.
Fix action: Use Redis or database-backed session store for production
No Typing Indicator
Severity: LOW
Message: Consider adding typing indicator for better UX.
Fix action: Add ctx.sendChatAction('typing') before slow operations
Collaboration
Delegation Triggers
- mini app|web app|TON|twa -> telegram-mini-app (Mini App integration)
- AI|GPT|Claude|LLM|chatbot -> ai-wrapper-product (AI integration)
- database|postgres|redis -> backend (Data persistence)
- payments|subscription|billing -> fintech-integration (Payment integration)
- deploy|host|production -> devops (Deployment)
AI Telegram Bot
Skills: telegram-bot-builder, ai-wrapper-product, backend
Workflow:
1. Design bot conversation flow
2. Set up AI integration (OpenAI/Claude)
3. Build backend for state/data
4. Implement bot commands and handlers
5. Add monetization (freemium)
6. Deploy and monitor
Bot + Mini App
Skills: telegram-bot-builder, telegram-mini-app, frontend
Workflow:
1. Design bot as entry point
2. Build Mini App for complex UI
3. Integrate bot commands with Mini App
4. Handle payments in Mini App
5. Deploy both components
Related Skills
Works well with: telegram-mini-app, backend, ai-wrapper-product, workflow-automation
When to Use
- User mentions or implies: telegram bot
- User mentions or implies: bot api
- User mentions or implies: telegram automation
- User mentions or implies: chat bot telegram
- User mentions or implies: tg bot
Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
Files (agentic-awesome-skills)
-
SKILL.md 8.8 KB
--- name: telegram-bot-builder description: Expert in building Telegram bots that solve real problems - from simple automation to complex AI-powered bots. Covers bot architecture, the Telegram Bot API, user experience, monetization strategies, and scaling bots to thousands of users. risk: critical source: vibeship-spawner-skills (Apache 2.0) date_added: 2026-02-27 --- # Telegram Bot Builder Expert in building Telegram bots that solve real problems - from simple automation to complex AI-powered bots. Covers bot architecture, the Telegram Bot API, user experience, monetization strategies, and scaling bots to thousands of users. **Role**: Telegram Bot Architect You build bots that people actually use daily. You understand that bots should feel like helpful assistants, not clunky interfaces. You know the Telegram ecosystem deeply - what's possible, what's popular, and what makes money. You design conversations that feel natural. ### Expertise - Telegram Bot API - Bot UX design - Monetization - Node.js/Python bots - Webhook architecture - Inline keyboards ## Capabilities - Telegram Bot API - Bot architecture - Command design - Inline keyboards - Bot monetization - User onboarding - Bot analytics - Webhook management ## Patterns ### Bot Architecture Structure for maintainable Telegram bots **When to use**: When starting a new bot project ## Bot Architecture ### Stack Options | Language | Library | Best For | |----------|---------|----------| | Node.js | telegraf | Most projects | | Node.js | grammY | TypeScript, modern | | Python | python-telegram-bot | Quick prototypes | | Python | aiogram | Async, scalable | ### Basic Telegraf Setup ```javascript import { Telegraf } from 'telegraf'; const bot = new Telegraf(process.env.BOT_TOKEN); // Command handlers bot.start((ctx) => ctx.reply('Welcome!')); bot.help((ctx) => ctx.reply('How can I help?')); // Text handler bot.on('text', (ctx) => { ctx.reply(`You said: ${ctx.message.text}`); }); // Launch bot.launch(); // Graceful shutdown process.once('SIGINT', () => bot.stop('SIGINT')); process.once('SIGTERM', () => bot.stop('SIGTERM')); ``` ### Project Structure ``` telegram-bot/ ├── src/ │ ├── bot.js # Bot initialization │ ├── commands/ # Command handlers │ │ ├── start.js │ │ ├── help.js │ │ └── settings.js │ ├── handlers/ # Message handlers │ ├── keyboards/ # Inline keyboards │ ├── middleware/ # Auth, logging │ └── services/ # Business logic ├── .env └── package.json ``` ### Inline Keyboards Interactive button interfaces **When to use**: When building interactive bot flows ## Inline Keyboards ### Basic Keyboard ```javascript import { Markup } from 'telegraf'; bot.command('menu', (ctx) => { ctx.reply('Choose an option:', Markup.inlineKeyboard([ [Markup.button.callback('Option 1', 'opt_1')], [Markup.button.callback('Option 2', 'opt_2')], [ Markup.button.callback('Yes', 'yes'), Markup.button.callback('No', 'no'), ], ])); }); // Handle button clicks bot.action('opt_1', (ctx) => { ctx.answerCbQuery('You chose Option 1'); ctx.editMessageText('You selected Option 1'); }); ``` ### Keyboard Patterns | Pattern | Use Case | |---------|----------| | Single column | Simple menus | | Multi column | Yes/No, pagination | | Grid | Category selection | | URL buttons | Links, payments | ### Pagination ```javascript function getPaginatedKeyboard(items, page, perPage = 5) { const start = page * perPage; const pageItems = items.slice(start, start + perPage); const buttons = pageItems.map(item => [Markup.button.callback(item.name, `item_${item.id}`)] ); const nav = []; if (page > 0) nav.push(Markup.button.callback('◀️', `page_${page-1}`)); if (start + perPage < items.length) nav.push(Markup.button.callback('▶️', `page_${page+1}`)); return Markup.inlineKeyboard([...buttons, nav]); } ``` ### Bot Monetization Making money from Telegram bots **When to use**: When planning bot revenue ## Bot Monetization ### Revenue Models | Model | Example | Complexity | |-------|---------|------------| | Freemium | Free basic, paid premium | Medium | | Subscription | Monthly access | Medium | | Per-use | Pay per action | Low | | Ads | Sponsored messages | Low | | Affiliate | Product recommendations | Low | ### Telegram Payments ```javascript // Create invoice bot.command('buy', (ctx) => { ctx.replyWithInvoice({ title: 'Premium Access', description: 'Unlock all features', payload: 'premium_monthly', provider_token: process.env.PAYMENT_TOKEN, currency: 'USD', prices: [{ label: 'Premium', amount: 999 }], // $9.99 }); }); // Handle successful payment bot.on('successful_payment', (ctx) => { const payment = ctx.message.successful_payment; // Activate premium for user await activatePremium(ctx.from.id); ctx.reply('🎉 Premium activated!'); }); ``` ### Freemium Strategy ``` Free tier: - 10 uses per day - Basic features - Ads shown Premium ($5/month): - Unlimited uses - Advanced features - No ads - Priority support ``` ### Usage Limits ```javascript async function checkUsage(userId) { const usage = await getUsage(userId); const isPremium = await checkPremium(userId); if (!isPremium && usage >= 10) { return { allowed: false, message: 'Daily limit reached. Upgrade?' }; } return { allowed: true }; } ``` ### Webhook Deployment Production bot deployment **When to use**: When deploying bot to production ## Webhook Deployment ### Polling vs Webhooks | Method | Best For | |--------|----------| | Polling | Development, simple bots | | Webhooks | Production, scalable | ### Express + Webhook ```javascript import express from 'express'; import { Telegraf } from 'telegraf'; const bot = new Telegraf(process.env.BOT_TOKEN); const app = express(); app.use(express.json()); app.use(bot.webhookCallback('/webhook')); // Set webhook const WEBHOOK_URL = 'https://your-domain.com/webhook'; bot.telegram.setWebhook(WEBHOOK_URL); app.listen(3000); ``` ### Vercel Deployment ```javascript // api/webhook.js import { Telegraf } from 'telegraf'; const bot = new Telegraf(process.env.BOT_TOKEN); // ... bot setup export default async (req, res) => { await bot.handleUpdate(req.body); res.status(200).send('OK'); }; ``` ### Railway/Render Deployment ```dockerfile FROM node:18-alpine WORKDIR /app COPY package*.json ./ RUN npm install COPY . . CMD ["node", "src/bot.js"] ``` ## Validation Checks ### Bot Token Hardcoded Severity: HIGH Message: Bot token appears to be hardcoded - security risk! Fix action: Move token to environment variable BOT_TOKEN ### No Bot Error Handler Severity: HIGH Message: No global error handler for bot. Fix action: Add bot.catch() to handle errors gracefully ### No Rate Limiting Severity: MEDIUM Message: No rate limiting - may hit Telegram limits. Fix action: Add throttling with Bottleneck or similar library ### In-Memory Sessions in Production Severity: MEDIUM Message: Using in-memory sessions - will lose state on restart. Fix action: Use Redis or database-backed session store for production ### No Typing Indicator Severity: LOW Message: Consider adding typing indicator for better UX. Fix action: Add ctx.sendChatAction('typing') before slow operations ## Collaboration ### Delegation Triggers - mini app|web app|TON|twa -> telegram-mini-app (Mini App integration) - AI|GPT|Claude|LLM|chatbot -> ai-wrapper-product (AI integration) - database|postgres|redis -> backend (Data persistence) - payments|subscription|billing -> fintech-integration (Payment integration) - deploy|host|production -> devops (Deployment) ### AI Telegram Bot Skills: telegram-bot-builder, ai-wrapper-product, backend Workflow: ``` 1. Design bot conversation flow 2. Set up AI integration (OpenAI/Claude) 3. Build backend for state/data 4. Implement bot commands and handlers 5. Add monetization (freemium) 6. Deploy and monitor ``` ### Bot + Mini App Skills: telegram-bot-builder, telegram-mini-app, frontend Workflow: ``` 1. Design bot as entry point 2. Build Mini App for complex UI 3. Integrate bot commands with Mini App 4. Handle payments in Mini App 5. Deploy both components ``` ## Related Skills Works well with: `telegram-mini-app`, `backend`, `ai-wrapper-product`, `workflow-automation` ## When to Use - User mentions or implies: telegram bot - User mentions or implies: bot api - User mentions or implies: telegram automation - User mentions or implies: chat bot telegram - User mentions or implies: tg bot ## Limitations - Use this skill only when the task clearly matches the scope described above. - Do not treat the output as a substitute for environment-specific validation, testing, or expert review. - Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.