telegram-bot-builder — Claude Code skill for Telegram bots
This skill guides Telegram bot architecture, from command handlers and inline keyboards to payments and webhooks. Use it when starting a bot project or preparing one for deployment.
npx skills add sickn33/agentic-awesome-skills --skill telegram-bot-builder -a claude-codeWhat telegram-bot-builder does
The skill covers Telegram bot architecture and the Telegram Bot API. Its examples use Node.js libraries telegraf and grammY, plus Python libraries python-telegram-bot and aiogram. Topics include command design, onboarding, and bot analytics.
Code samples show message handlers, inline keyboards, and pagination. Payment guidance covers access models and Telegram Stars; deployment sections compare polling with webhooks and describe checks such as verifying the webhook secret header. Treat the snippets as starting points: the source says they omit production error and rate-limit handling, so they do not certify a deployment.
Install it in Claude Code with npx skills add sickn33/agentic-awesome-skills --skill telegram-bot-builder -a claude-code. The examples also use JavaScript and the BOT_TOKEN environment variable. The skill provides guidance and code patterns, not a running bot project.
What it helps with
- outline a new Telegram bot's project structure
- add command and message handlers
- build inline menus with pagination
- choose polling or webhook delivery
- plan access payments through Telegram Stars
Example prompts for the agent
- Outline a Node.js Telegram bot using `telegraf`, with commands and message handlers.
- Build an inline menu with pagination and callback handlers for a list of items.
- Review this Telegram Stars payment flow and webhook setup; what checks should happen before granting access?
How to install telegram-bot-builder
1Skills CLI (Vercel)
npx skills add sickn33/agentic-awesome-skills --skill telegram-bot-builder -a claude-code2Manually: put the files in place
~/.claude/skills/telegram-bot-builder/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/telegram-bot-builder/
1Skills CLI (Vercel)
npx skills add sickn33/agentic-awesome-skills --skill telegram-bot-builder -a codex2Manually: put the files in place
.agents/skills/telegram-bot-builder/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add sickn33/agentic-awesome-skills --skill telegram-bot-builder -a cursor2Manually: put the files in place
.cursor/skills/telegram-bot-builder/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install sickn33/agentic-awesome-skills telegram-bot-builder2Manually: put the files in place
.github/skills/telegram-bot-builder/SKILL.md1Skills CLI (Vercel)
npx skills add sickn33/agentic-awesome-skills --skill telegram-bot-builder -a gemini-cli2Platform CLI
gemini skills install https://github.com/sickn33/agentic-awesome-skills --path skills/telegram-bot-builderManually: put the files in place
.devin/skills/telegram-bot-builder/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add sickn33/agentic-awesome-skills --skill telegram-bot-builder -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set80
The whole set →Similar
Questions about telegram-bot-builder
How do I install telegram-bot-builder in Claude Code?
Run npx skills add sickn33/agentic-awesome-skills --skill telegram-bot-builder -a claude-code. This installs the skill for Claude Code.
What does telegram-bot-builder do?
It guides Telegram bot design, including project structure, commands, inline keyboards, payments, and webhooks. It includes examples in Node.js and Python.
Which bot libraries does the skill cover?
For Node.js, it covers telegraf and grammY; for Python, it covers python-telegram-bot and aiogram.
Source text
SKILL.md · MIT
---
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
Premium bot access is a digital service: [Telegram requires Stars/XTR](https://core.telegram.org/bots/payments-stars) for digital goods/services sold inside Telegram. Handle `pre_checkout_query` within the documented deadline, validate the server-owned order/payload, currency and amount, and grant entitlement idempotently only after `successful_payment`, persisting its charge ID. A fixed payload and `activatePremium` placeholder alone are not a payment system.
```javascript
// Create invoice
bot.command('buy', (ctx) => {
ctx.replyWithInvoice({
title: 'Premium Access',
description: 'Unlock all features',
payload: 'premium_monthly',
provider_token: "",
currency: 'XTR',
prices: [{ label: 'Premium', amount: 100 }], // Illustrative Stars amount, not USD
});
});
// Handle successful payment
bot.on('successful_payment', async (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 |
### Webhook trust
Verify the configured webhook secret header before accepting updates, deduplicate update/payment IDs, validate callback data against the authenticated Telegram user, and protect the bot token. Sending broadcasts or configuring a production webhook requires applicable user authorization. Polling and webhooks are alternative delivery modes; do not run both for one bot. The snippets omit production error/rate-limit handling and are not deployment certification.
### 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.
© sickn33 · MIT · sickn33/agentic-awesome-skills