telegram-bot-builder

安装量: 1.1K
排名: #1196

安装

npx skills add https://github.com/sickn33/antigravity-awesome-skills --skill telegram-bot-builder

Telegram Bot Builder

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.

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

```python

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 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

```javascript

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 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 }; }

Anti-Patterns

❌ Blocking Operations

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.

❌ No Error Handling

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.

❌ Spammy Bot

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

返回排行榜