Как создать 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 платежей или строгая инфраструктура. Выбор зависит от нагрузки и архитектуры проекта.
Связанные материалы
- Как создать Telegram-бота для бизнеса
- Как подключить Telegram-бота к Google Sheets
- Кейс: бот для подбора автозапчастей
Минимальный чек-лист проекта на aiogram
- Токен хранится в переменных окружения, а не в коде.
- Роутеры разделены по смыслу: пользователь, админ, платежи, отчеты.
- FSM-состояния описаны явно и покрывают отмену сценария.
- Все внешние API вызываются через отдельные сервисы.
- Ошибки логируются, а критичные сбои отправляются администратору.
Типичные ошибки в aiogram-проектах
- Писать всю логику в одном файле bot.py.
- Смешивать текст сообщений, бизнес-правила и работу с базой.
- Не учитывать повторные клики по кнопкам и дубли апдейтов.
- Не очищать состояние FSM после завершения сценария.
FAQ
Aiogram 2 или aiogram 3?
Для новых проектов лучше выбирать aiogram 3: он современнее, лучше структурирует роутеры и удобнее для сложной архитектуры.
SQLite или PostgreSQL?
SQLite достаточно для MVP и небольших внутренних ботов. PostgreSQL лучше для продакшена, аналитики, нескольких администраторов и роста нагрузки.
Нужен ли Docker?
Docker не обязателен, но сильно упрощает перенос проекта, деплой и повторяемость окружения.
