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. Use when: telegram bot, bot api, telegram automation, chat bot telegram, tg bot.
npx claude-code-templates@latest --skill β’β’β’β’β’β’β’β’β’β’β’β’β’β’β’β’β’β’β’β’Unlock this skill to run and inspect the interactive installation sequence.
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.
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
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]);
}
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:
Premium ($5/month):
### 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 };
}
Why bad: Telegram has timeout limits.
Users think bot is dead.
Poor experience.
Requests pile up.
Instead: Acknowledge immediately.
Process in background.
Send update when done.
Use typing indicator.
Why bad: Users get no response.
Bot appears broken.
Debugging nightmare.
Lost trust.
Instead: Global error handler.
Graceful error messages.
Log errors for debugging.
Rate limiting.
Why bad: Users block the bot.
Telegram may ban.
Annoying experience.
Low retention.
Instead: Respect user attention.
Consolidate messages.
Allow notification control.
Quality over quantity.
Works well with: telegram-mini-app, backend, ai-wrapper-product, workflow-automation
# Step 1: Initialize skill agent setup
npx skills add Telegram Bot Builder --install-production
python -m pip install -r requirements.txt
codex plugin install Telegram Bot Builder@latest
export API_KEY=secret_token_key_here
Unlock this skill to reveal complete step-by-step setup guides, terminal commands, configuration recipes, repository links, and interactive installation video walkthroughs.
Get instant access to complete setup guides, repository source code, and integration assets.
A curated list of resources for distributed teams - remote work policies, asynchronous communication frameworks, and global talent platforms.
A curated and opinionated list of resources for Chief Technology Officers and engineering leaders, with an emphasis on high-growth technology startups.
A collection of inspiring resources related to engineering management, tech leadership, 1-on-1s, feedback mechanisms, and team dynamics.