Боты и Telegram

Что такое aiogram

Что это

Библиотека на Python для ботов Telegram. Отвечает за приём сообщений, кнопки и сценарии; сам бот, его база и интеграции пишутся поверх неё.

Как используем

Основа всех наших Telegram-ботов: продажи подписок, тикет-система, финансовый ассистент. Бот запускается в контейнере на сервере заказчика.

Где это важно бизнесу

Сам aiogram заказчик не видит, но от него зависит, как бот себя ведёт:

  • бот отвечает многим людям одновременно, пока чей-то тяжёлый запрос ещё выполняется;
  • сотрудник видит только меню своей роли, а заблокированный пользователь не попадает в меню вовсе;
  • оформление заявки идёт по шагам, и бот помнит, на каком шаге человек остановился;
  • бот работает без открытого порта и публичного адреса.

Как мы это используем

  • Роли через middleware. В электронной очереди роль читается из базы перед каждым обработчиком, поэтому студент физически не видит меню старосты. Там же защита от частых нажатий: не больше одного запроса в 0,5 секунды. В тикет-системе так же подставляются четыре роли.
  • Пошаговые диалоги (FSM). Запись дня рождения, заявка в IT-отдел, создание очереди — машина состояний помнит шаг диалога. В тикет-системе незаконченные диалоги лежат в Redis и переживают перезапуск.
  • Polling или webhook. Бот продажи подписок по умолчанию сам опрашивает Telegram, а режим webhook включается настройкой. Бот входа в «Переговорку» работает на long polling, потому что публичного адреса у него нет.
  • Тяжёлую работу — в сторону. В боте для полисов обработка PDF идёт в отдельном потоке, в боте загрузки видео yt-dlp и FFmpeg — в отдельных процессах, а число одновременных загрузок ограничено.
  • Версия на виду. Версия бота пишется в лог при старте, а скрытая команда /version показывает её только администратору: видно, что на самом деле запущено на сервере.

Ботов на aiogram делаем в разделе Боты для Telegram и ВКонтакте.

Типичные проблемы

  • Состояния в памяти пропадают. В боте дней рождений и электронной очереди незаконченный диалог после перезапуска начинается заново. Если это критично, состояния переносятся в Redis.
  • Один экземпляр. Когда состояния и ограничение частоты хранятся в памяти процесса, бот рассчитан на один запущенный экземпляр.
  • Блокирующий код вешает всех. Долгая операция в основном потоке задерживает ответы всем пользователям, поэтому её выносят в поток или процесс.
  • Права проверяются на сервере. Скрытая команда должна отвечать чужому как на опечатку, а не «у вас нет прав».

Когда это не нужно

Если вы хотите бота, которого будете править сами в визуальном конструкторе, aiogram не подойдёт: это код. Для простой рассылки или уведомления о заявке иногда хватает сценария в n8n без отдельного бота.

← Все термины

Нужен сайт, бот или автоматизация?

Термины объяснили — теперь давайте к делу: расскажите о задаче, а мы переведём её на понятный план работ.