using-telegram-bot
SKILL.md
Telegram (Telegraf) Skill — Node.js
Short guide to build Telegram bots with telegraf (Node.js).
Overview
- Library: https://github.com/telegraf/telegraf
- Install:
npm install telegraf - Get a bot token from BotFather and store it in
BOT_TOKEN.
Minimal polling bot
// bot.js
const { Telegraf, Markup } = require('telegraf');
const bot = new Telegraf(process.env.BOT_TOKEN);
bot.start(ctx => ctx.reply('Welcome! I can help with commands.'));
bot.command('echo', ctx => {
const text = ctx.message.text.split(' ').slice(1).join(' ');
ctx.reply(text || 'usage: /echo your message');
});
bot.on('text', ctx => ctx.reply(`You said: ${ctx.message.text}`));
bot.launch();
process.once('SIGINT', () => bot.stop('SIGINT'));
process.once('SIGTERM', () => bot.stop('SIGTERM'));
Run:
BOT_TOKEN=123:ABC node bot.js
Send media and files
// send photo
await ctx.replyWithPhoto('https://example.com/image.jpg', { caption: 'Nice pic' });
// send document
await ctx.replyWithDocument('https://example.com/file.pdf');
Inline keyboards and callbacks
// show inline buttons
await ctx.reply('Choose:', Markup.inlineKeyboard([
Markup.button.callback('OK', 'ok'),
Markup.button.callback('Cancel', 'cancel')
]));
bot.action('ok', ctx => ctx.reply('You pressed OK'));
bot.action('cancel', ctx => ctx.reply('Cancelled'));
Webhook (Express) example
const express = require('express');
const { Telegraf } = require('telegraf');
const bot = new Telegraf(process.env.BOT_TOKEN);
const app = express();
app.use(bot.webhookCallback('/telegraf'));
bot.telegram.setWebhook(`${process.env.PUBLIC_URL}/telegraf`);
app.listen(process.env.PORT || 3000);
Use webhooks for production deployments (faster, lower resource use).
Error handling
bot.catch((err, ctx) => {
console.error('Bot error', err);
});
Tips
- Use environment variables for tokens and URLs.
- Respect Telegram rate limits (avoid flooding large groups).
- For local testing, use polling; for deployment use webhooks behind HTTPS.
- Add
NODE_ENV=productionand graceful shutdown hooks for reliability.
This doc shows the most common Telegraf patterns: start/command handlers, text handlers, media, inline buttons, webhook setup, and error handling.
Weekly Installs
7
Repository
besoeasy/open-skillsGitHub Stars
89
First Seen
Mar 1, 2026
Security Audits
Installed on
kimi-cli7
opencode6
antigravity6
github-copilot6
codex6
gemini-cli6