telegram-bot
Создание Telegram-ботов: aiogram/python-telegram-bot/grammY, команды, кнопки, FSM, вебхуки, деплой
SKILL.mdskills/telegram-bot/SKILL.md
GitHubTelegram Bot
Гайд по разработке Telegram-ботов.
Выбор стека
| Язык | Библиотека |
|---|---|
| Python (рекомендуется) | aiogram 3.x (async) или python-telegram-bot |
| Node.js/TypeScript | grammY или telegraf |
Важные концепции
- Long polling — простой режим через
getUpdates, подходит для дева и малых ботов. - Webhook — для продакшена (быстрее, но нужен HTTPS-домен).
- FSM (Finite State Machine) — цепочки диалогов (
State,MemoryStorage/RedisStorage).
Чек-лист разработки
Настройка
- Создай бота через @BotFather, сохрани токен в
.env(не коммить) - Установи библиотеку:
pip install aiogram/npm i grammy - Базовый скелет: dispatcher + роутеры + запуск polling
Команды и обработчики
-
/start,/help— приветствие и список возможностей - Обработчики сообщений (
message,callback_query,inline_query) - Инлайн-кнопки (
InlineKeyboardMarkup) и меню (ReplyKeyboard) - FSM-диалоги для пошаговых сценариев (анкеты, заказы)
Интеграции
- Хранение состояния: SQLite/Redis для FSM
- Интеграция с БД для данных пользователей
- Платежи (Telegram Payments API) или внешние сервисы при необходимости
- Webhooks: маршрут + регистрация через
setWebhook
Надёжность
- Обработка ошибок в хендлерах (middleware для логов/ошибок)
- Rate-limit и retry при сбоях API
- Graceful shutdown (закрыть polling/webhook)
Деплой
- Docker-образ или
systemd/pm2 для long-polling - Для webhook — HTTPS (nginx/caddy + certbot)
- Логирование ошибок
Правила
- Токен бота — секрет, храни в env, не в репозитории.
- Разделяй хендлеры по роутерам (фичи → модули).
- Обрабатывай ошибки — бот не должен падать от одного кривого запроса.
- Тестируй в @BotFather и реальном клиенте перед релизом.