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