Telegram-боты на Python: полный практический гид
Что можно и чего нельзя сделать ботом, какой стек выбрать, из чего состоит рабочий бот, что ломается в продакшене и с чего начинать разработку.
Все статьи гида Telegram-боты · 13
Telegram-бот - это самый короткий путь от идеи до продукта, которым пользуются: не нужен сайт, не нужна установка приложения, аудитория уже внутри мессенджера. Отсюда и популярность, и типовые ошибки.
Что можно и нельзя сделать ботом
Можно:
- Принимать заявки и вести диалог по сценарию.
- Продавать: цифровые товары, услуги, подписки, доступ к контенту.
- Уведомлять: заказы, статусы, напоминания, алерты.
- Давать доступ к данным: остатки, статусы, отчёты по запросу.
- Заменять внутренний интерфейс: заявки от сотрудников, согласования, учёт.
- Показывать полноценный интерфейс через Mini App, когда кнопок уже мало.
Нельзя или неудобно:
- Писать пользователю первым, если он не начал диалог. Это ограничение платформы, а не техники.
- Строить сложный интерфейс на одних кнопках - на четвёртом уровне меню пользователь теряется.
- Хранить в переписке то, что должно быть в базе.
Стек
aiogram - основной выбор для Python: асинхронный, живой, с нормальной структурой проекта. Разбор - в статье про aiogram.
Альтернативы существуют, и они рабочие, но у aiogram лучше всего с примерами и сообществом, а на старте это решает.
Конструкторы закрывают простые сценарии без кода и упираются в потолок на нестандартном - разбор развилки в статье про конструкторы против кода.
n8n годится, когда бот - это в основном уведомления и простые сценарии поверх других автоматизаций: Telegram-бот на n8n.
Из чего состоит рабочий бот
Пять частей, и все нужны, если бот не одноразовый:
Обработчики. Команды, нажатия кнопок, сообщения. С ростом бота их разносят по роутерам, иначе один файл становится нечитаемым.
Состояние диалога. Что бот спросил и что ждёт в ответ. Хранить состояние в памяти процесса означает потерять его при перезапуске.
База данных. Пользователи, заказы, настройки. История переписки не является хранилищем.
Внешние интеграции. CRM, платежи, учётная система.
Эксплуатация. Запуск, перезапуск при падении, логи, мониторинг - см. деплой и эксплуатацию.
Что ломается в продакшене
Четыре вещи, которые не видны на этапе разработки:
Перезапуск теряет диалоги. Пользователь на середине оформления заказа, бот перезапустился, состояние в памяти исчезло. Лечится хранением состояния во внешнем хранилище.
Повторные платежи. Вебхук платёжной системы приходит дважды - это нормальное поведение при повторной доставке. Без проверки идентификатора операции вы спишете дважды - см. идемпотентные пайплайны.
Блокировка пользователем. Отправка сообщения заблокировавшему вас пользователю даёт ошибку, и необработанная ошибка в рассылке останавливает всю рассылку.
Лимиты на отправку. Массовая рассылка без пауз упирается в ограничения платформы. Рассылка по десяти тысячам пользователей - это отдельная задача с очередью, а не цикл.
Куда двигаться дальше
Практический порядок:
- Создание бота на Python с нуля и токен от BotFather.
- Кнопки: обычные и инлайн - основа любого интерфейса.
- aiogram: роутеры, состояния, мидлвари - когда бот перерос один файл.
- Деплой и эксплуатация - до того, как показывать пользователям.
Дальше по задачам: приём оплаты и Telegram Stars, chat id и как его узнать, Mini Apps, корпоративные боты, конструкторы против кода и как устроена разработка как работа.
Как это выглядит на реальном проекте
Пример из практики - бот продажи курсов: каталог, приём оплаты, выдача доступа и уведомления, всё внутри мессенджера. Типовой набор задач для коммерческого бота.
Если нужен бот под свою задачу, а не разбор, - см. страницу услуг.
В этом гиде
- Кнопки в Telegram-боте: обычные и инлайнЧем обычная клавиатура отличается от инлайн-кнопок, когда какая нужна, как обрабатывать нажатия и почему обязательно подтверждать callback.
- Конструкторы Telegram-ботов против кода: что выбратьКакие задачи закрывают конструкторы ботов, где они упираются в потолок, из чего складывается стоимость владения и как выбрать между конструктором и кодом.
- Оплата в Telegram-боте: приём платежей по шагамКакие есть способы принимать оплату в боте, чем они отличаются, как обрабатывать подтверждение платежа и почему идемпотентность здесь обязательна.
- Токен Telegram-бота: получение и безопасностьКак получить токен у BotFather, где его хранить, что делать при утечке и какие настройки бота стоит задать сразу после создания.
- Как узнать chat id в Telegram-ботеЧто такое chat id, чем он отличается от идентификатора пользователя, как его получить для личного чата, группы и канала, и почему у супергрупп он выглядит иначе.
- Разработка Telegram-ботов на Python: как устроен процессЧто входит в работу по разработке бота, из чего складывается стек и сроки, что влияет на стоимость сильнее всего и как принимать результат, чтобы не получить демо.
- aiogram 3: роутеры, FSM и мидлвариКак структурировать проект на aiogram, зачем нужны роутеры, как устроены состояния диалога и что решают мидлвари в реальном боте.
- Создание Telegram-бота на Python с нуляЧто нужно для старта, как выглядит минимальный бот, какие первые команды стоит сделать, как его запустить и что добавлять дальше по порядку.
- Telegram Stars в боте: как приниматьЧто такое Telegram Stars, для чего они обязательны, чем отличаются от обычных платежей, как устроен приём и какие ограничения стоит знать заранее.
- Корпоративный Telegram-бот: интеграции и доступыКакие задачи закрывает внутренний бот, как связать его с CRM и учётной системой, как устроены роли и разграничение доступа и зачем нужен аудит действий.
- Личный кабинет в Telegram-боте: Mini AppsЧто такое Telegram Mini App, когда он действительно нужен, а когда хватит кнопок, как устроена авторизация пользователя и что учесть перед разработкой.
- Разработка Telegram-бота с нуля: деплой и эксплуатацияЧем вебхук отличается от опроса, где размещать бота, как настроить автозапуск и мониторинг и что нужно делать при обновлениях, чтобы не терять диалоги.
Вопросы и ответы
Сколько стоит разработка Telegram-бота?
Разброс большой и зависит не от числа кнопок, а от того, есть ли платежи, интеграции с внешними системами и хранение данных. Простой бот-анкета и бот с приёмом оплаты, личным кабинетом и связкой с CRM - это разные задачи по объёму работ на порядок.
Нужен ли для бота свой сервер?
Для постоянной работы да, потому что бот - это процесс, который должен быть запущен всегда. Подойдёт недорогой VPS. Локальный запуск годится только для разработки: закрыли ноутбук - бот перестал отвечать.
Можно ли принимать оплату в Telegram-боте?
Да, тремя способами: через платёжного провайдера внутри Telegram, через Telegram Stars для цифровых товаров и через переход на внешнюю платёжную страницу. Выбор зависит от того, что вы продаёте и какая нужна отчётность.
Сделаю под ключ
Сделаю Telegram-бота под ваш процесс
Заявки, оплата, выдача доступа, рассылки и воронка в одном боте, с админкой для вас.
от 300 $ · 3-7 дней
«Действительно гуру своего дела. Узнал массу новой и полезной информации по телеграм рассылкам. До этого сжег очень много денег на оплате услуг посредников, но после общения с исполнителем буду делать все сам)»