Как создать Telegram-бота на Python и aiogram 3

Для Telegram-бота на Python нужен токен BotFather, проект на aiogram 3, обработчики команд и сообщений, FSM для пошаговых сценариев, база данных и сервер для работы 24/7. Если бот решает бизнес-задачу, сразу закладывайте логирование, обработку ошибок и интеграции.

Базовая архитектура

Типовой проект на aiogram 3 разделяют на конфигурацию, роутеры, хендлеры, клавиатуры, сервисы, модели базы данных и фоновые задачи. Такой подход позволяет не смешивать Telegram-интерфейс, бизнес-логику и интеграции.

  • BotFather: создает токен и базовые настройки бота.
  • Aiogram 3: принимает апдейты, маршрутизирует команды и сообщения.
  • FSM: хранит состояние пользователя в анкетах, заказах и сценариях.
  • База данных: SQLite для простых проектов, PostgreSQL для продакшена.
  • Docker: упрощает запуск на сервере и перенос между окружениями.

Когда нужен FSM

FSM нужен, если бот задает вопросы по шагам: собирает заявку, оформляет заказ, принимает документы, подключает профиль или проводит пользователя через оплату. Без FSM сложный сценарий быстро превращается в набор хрупких условий.

Примеры FSM-сценариев есть в кейсах TenderBot, Mr. Wey Customs и Деломант.

Что важно для продакшена

Рабочий бот должен корректно переживать ошибки API, рестарты сервера, повторные сообщения и недоступность внешних сервисов. Минимальный набор: переменные окружения, логирование, обработка исключений, резервные копии базы и понятные админ-команды.

Polling или webhook

Polling проще для старта и небольших проектов. Webhook удобен для систем, где уже есть FastAPI backend, внешние webhooks платежей или строгая инфраструктура. Выбор зависит от нагрузки и архитектуры проекта.

Связанные материалы

Минимальный чек-лист проекта на aiogram

  • Токен хранится в переменных окружения, а не в коде.
  • Роутеры разделены по смыслу: пользователь, админ, платежи, отчеты.
  • FSM-состояния описаны явно и покрывают отмену сценария.
  • Все внешние API вызываются через отдельные сервисы.
  • Ошибки логируются, а критичные сбои отправляются администратору.

Типичные ошибки в aiogram-проектах

  • Писать всю логику в одном файле bot.py.
  • Смешивать текст сообщений, бизнес-правила и работу с базой.
  • Не учитывать повторные клики по кнопкам и дубли апдейтов.
  • Не очищать состояние FSM после завершения сценария.

FAQ

Aiogram 2 или aiogram 3?

Для новых проектов лучше выбирать aiogram 3: он современнее, лучше структурирует роутеры и удобнее для сложной архитектуры.

SQLite или PostgreSQL?

SQLite достаточно для MVP и небольших внутренних ботов. PostgreSQL лучше для продакшена, аналитики, нескольких администраторов и роста нагрузки.

Нужен ли Docker?

Docker не обязателен, но сильно упрощает перенос проекта, деплой и повторяемость окружения.