telegram-bot-builder

Frontend & Expérience UX

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

Documentation

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

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

}

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.

Related Skills

Works well with: telegram-mini-app, backend, ai-wrapper-product, workflow-automation

Utiliser l'Agent telegram-bot-builder - Outil & Compétence IA | Skills Catalogue | Skills Catalogue