Telegram Bot на Python: от идеи до рабочего MVP

Цель кейса: запустить Telegram-бота, который обрабатывает команды, ведет простой диалог и устойчиво работает в реальных условиях.


Что вы соберете

MVP-бот с командами:

  • /start — приветствие;
  • /help — список возможностей;
  • /task — добавление задачи в память процесса;
  • /list — вывод задач пользователя.

Термины перед стартом

  • Bot API — HTTP API Telegram для работы с ботами (проверка webhook и методов — утилита curl, curl / fetch — примеры).
  • Token — секретный ключ доступа к API.
  • Update — событие от Telegram (сообщение, команда, нажатие кнопки).
  • Long polling — бот сам регулярно запрашивает обновления.
  • Webhook — Telegram отправляет события на ваш HTTPS-адрес.

Шаг 1. Создайте бота через BotFather

  1. Откройте @BotFather в Telegram.
  2. Введите /newbot.
  3. Укажите имя и username бота.
  4. Сохраните выданный токен в защищенном месте.
Безопасность токена

Токен дает полный доступ к управлению ботом. Храните его в .env, добавьте .env в .gitignore и сразу отзывайте токен через /revoke при утечке.


Шаг 2. Подготовьте проект

mkdir telegram-bot-mvp
cd telegram-bot-mvp
python -m venv .venv

Активация:

  • Windows: .venv\Scripts\activate
  • Linux/macOS: source .venv/bin/activate

Установка библиотек:

pip install python-telegram-bot python-dotenv

Создайте .env:

TELEGRAM_BOT_TOKEN=ваш_токен_из_BotFather

Шаг 3. Реализуйте минимального бота

Полный main.py — в каталоге примеров (можно скопировать целиком):

Запуск:

python main.py

Шаг 4. Проверьте сценарий пользователя

  1. Откройте чат с ботом.
  2. Выполните /start.
  3. Добавьте 2-3 задачи через /task.
  4. Проверьте выдачу через /list.

Критерий успеха: команды стабильно выполняются, ошибки отсутствуют в консоли.


Шаг 5. Улучшите архитектуру

Для роста проекта разделите код:

  • handlers/commands.py — обработчики команд;
  • services/task_service.py — бизнес-логика;
  • storage/memory.py или storage/sqlite.py — хранение данных;
  • config.py — загрузка переменных окружения.

Шаг 6. Добавьте устойчивость

  • логирование (logging);
  • обработчик ошибок приложения;
  • лимиты на длину входных сообщений;
  • очистка и валидация пользовательского ввода.

Когда переходить с long polling на webhook

Long polling подходит для разработки и небольших проектов.

Webhook нужен, когда важны:

  • минимальная задержка обработки;
  • стабильная работа под нагрузкой;
  • управляемый production-деплой.

Частые ошибки

  • токен в репозитории;
  • вся логика в одном файле;
  • отсутствие валидации команд;
  • хранение состояния только в памяти без плана миграции в БД.

Практическое продолжение

Следующие улучшения:

  1. добавить inline-кнопки;
  2. подключить SQLite/PostgreSQL;
  3. внедрить FSM для пошаговых диалогов;
  4. добавить деплой в Docker;
  5. покрыть ключевые сценарии автоматическими тестами.