Telegram бот на Python: как устроен проект для бизнеса

Telegram бот на Python — один из самых распространённых вариантов для бизнеса в Узбекистане: язык читаемый, библиотеки зрелые, разработчиков найти несложно. Но между ботом, который отвечает на «привет», и ботом, который принимает заказы, передаёт заявки в CRM и берёт оплату через Click или Payme, большая дистанция. Разберём, из чего складывается такой проект и на что смотреть заказчику.

Зачем бизнесу бот и почему часто выбирают Python

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

Python выбирают не из моды. Код легко читать, а значит, проект проще передать другому разработчику. Есть готовые инструменты для баз данных, платежей и таблиц. Для типового бота скорость самого языка не узкое место, гораздо важнее аккуратная архитектура.

Какую библиотеку выбрать и при чём тут асинхронность

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

  • aiogram — асинхронный фреймворк с роутерами, фильтрами, middleware и машиной состояний; популярен у русскоязычных разработчиков и хорош для ботов с большой аудиторией.
  • python-telegram-bot — давно развивающаяся библиотека с подробной документацией, в актуальных версиях тоже асинхронная.
  • pyTelegramBotAPI — простая библиотека для небольших ботов и быстрых прототипов.

Как устроен проект изнутри

Главный признак здорового проекта — разделение ответственности. Если вся логика лежит в одном файле на тысячу строк, через месяц любая правка превращается в риск. Обычно структура выглядит так:

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

Кнопки, сценарии и память бота

Меню, каталог и выбор вариантов обычно делают инлайн-кнопками: они прикреплены к сообщению и передают данные без текста в чат. Для частых действий вроде «Мои заказы» удобна постоянная клавиатура.

Многошаговые сценарии — заказ, запись, анкета — требуют, чтобы бот помнил шаг и введённые данные. Для этого используют машину состояний. В разработке её можно держать в памяти, но в рабочем боте состояния хранят в Redis или базе: иначе после перезапуска сервера клиенты, не закончившие оформление, потеряют диалог и, скорее всего, не вернутся.

База данных, токены и секреты

SQLite подходит для прототипа, PostgreSQL — для рабочего проекта, где одновременно пишет много людей. Структуру базы меняют через миграции, чтобы обновление бота не уничтожило заказы и историю обращений.

Токен бота, пароли и ключи API хранят в переменных окружения или в файле вне репозитория, но не в коде. Для тестового и рабочего бота нужны разные токены, чтобы проверять правки не на живых клиентах.

Запуск, ошибки и что проверить заказчику

Бот работает на сервере круглосуточно. Его обычно упаковывают в контейнер вместе с базой и Redis, настраивают автоматический перезапуск и журналы. При разработке удобен длинный опрос, домен не нужен, в рабочей среде часто используют вебхук. Ошибки неизбежны: внешний сервис не ответил, человек прислал фото вместо номера телефона. Хороший бот отвечает понятным сообщением, пишет детали в журнал и уведомляет администратора в Telegram. Вы должны узнать о падении бота раньше клиентов. Перед приёмкой проверьте:

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

С чего начать

Эти простые пункты решают большинство проблем при смене подрядчика. В markdev мы закладываем их с самого начала и подключаем к боту CRM, оплату и аналитику заявок, чтобы было видно, какая реклама приводит клиентов. Если у вас есть задача — приём заказов, запись, обработка заявок из рекламы — расскажите о ней, и мы подскажем, нужен ли вам бот на Python или хватит решения проще.

Частые вопросы

Можно ли сделать Telegram бот на Python самому?

Простого бота с несколькими командами — да, это посильная задача для начинающего. Если нужны заказы, оплата, база данных и интеграция с CRM, лучше привлечь разработчика: ошибки в структуре потом дорого исправлять.

Какая библиотека лучше для бизнес-бота: aiogram или python-telegram-bot?

Обе подходят. Aiogram часто берут для ботов с большой аудиторией и многими интеграциями, python-telegram-bot ценят за документацию. Чаще решает опыт команды и размер проекта.

Где хранить токен бота?

В переменных окружения или файле, который не попадает в репозиторий. Токен и доступы к серверу должны быть оформлены на компанию, чтобы не зависеть от одного человека.

Зачем боту Redis или база данных?

Чтобы хранить шаги диалога и данные пользователей. Если держать их только в памяти, после перезапуска бота все незавершённые заказы и записи пропадут.

Разберём вашу задачу бесплатно

Оставьте контакт — за 15 минут созвона покажем, где теряются заявки и что сделать в первую очередь.