Botxona

Как сделать, чтобы Telegram-бот работал 24/7 без перерывов

Многие считают, что «мой бот должен работать постоянно», но на самом деле большинству ботов это не нужно — в этой статье объясняем, почему, как и когда это действительно требуется.

Сначала: вам правда нужен режим «всегда включён»?

На Botxona боты по умолчанию остаются активными, пока хватает памяти сервера, и отвечают мгновенно; когда ресурсы нужны, неактивный бот может быть усыплён и просыпается за несколько секунд при поступлении сообщения (подробнее). Для простого бота «вопрос-ответ», бота для приёма заказов или справочного бота пользователь почти не заметит разницы — у спящего бота первое сообщение задерживается всего на несколько секунд.

Когда «всегда включён» действительно нужен:

  • Бот должен отправлять сообщения или напоминания по расписанию (например, каждый день в 09:00).
  • Бот управляет процессами, чувствительными ко времени, — например, оплатами или заказами, — и даже задержка в несколько секунд неудобна.
  • Бот должен поддерживать постоянное фоновое соединение с другим сервисом (например, WebSocket).

Три способа сделать бота «всегда включённым»

1. Автоматическое определение (самый простой)

Если в коде есть библиотека для работы по расписанию — APScheduler, node-cron, JobQueue, setInterval и т. п., — Botxona определит это автоматически и в режиме «Авто» сделает бота всегда включённым — никаких дополнительных настроек не нужно.

2. Явно через botxona.yaml

always_on: true

Это самый надёжный способ сделать бота всегда включённым, даже если в коде нет планировщика. Подробнее: botxona.yaml.

3. Вручную в панели

На странице бота в разделе Настройки → Режим работы можно выбрать вариант «Всегда включён» — эту настройку можно менять в любое время без изменения кода.

Тариф Business

Боты на тарифе Business всегда включены независимо от настроек — если непрерывная работа бота важна для вашего бизнеса, это самый надёжный вариант.

Что будет, если запланированная задача пропустится?

Если бот работает в режиме «Авто» или «Сон» и уснул из-за неактивности, а в это время должна была выполниться запланированная задача (например, ежедневный отчёт), — задача не выполнится, потому что бот не активен. Это ожидаемое поведение, когда вы сознательно выбрали режим «Сон»; если вы этого не хотите, переключитесь на «Всегда включён» или добавьте always_on: true в botxona.yaml.

Как узнать, что бот перестал работать?

Для важных процессов можно добавить в код бота простой механизм самопроверки (например, отправлять админу сообщение «я запустился» при каждом старте). Кроме того, резкие падения на графике DAU и активности в разделе аналитики помогают заметить проблему заранее. При crash-loop (бот падает больше 5 раз за 10 минут) система автоматически отправит вам уведомление (подробнее).

Следующий шаг

В зависимости от того, на чём написан ваш бот, смотрите инструкции по aiogram, python-telegram-bot, grammY или Telegraf.