ACLClouds
ACLClouds

Бот Telegram 24/7: хостинг и ограничения

Polling или webhook, память, перезапуск: что предусмотреть, чтобы бот Telegram оставался доступным днём и ночью, и его ограничения.

Бот Telegram отвечает пользователям в любое время. Чтобы оставаться доступным, он должен работать непрерывно на постоянно включённой машине. Важнее всего то, как он получает сообщения: регулярными запросами (polling) или через webhook.

  • Polling не требует публичного порта; webhook требует доступный HTTPS-адрес.
  • Активный webhook блокирует polling: удалите его, прежде чем вернуться к polling.
  • Telegram ограничивает скорость отправки: распределяйте сообщения и обрабатывайте отказы.

Polling или webhook

При polling бот регулярно спрашивает у Telegram, есть ли новые сообщения. Ему не нужен открытый порт наружу. При webhook Telegram отправляет каждое сообщение на HTTPS-адрес, который вы указываете, поэтому нужен публичный адрес, который отвечает.

  • Polling: самый простой вариант для бота на сервере, без публичного порта.
  • Webhook: полезен для веб-интеграции или большого трафика, с HTTPS-адресом, доступным из интернета.
  • Активный webhook блокирует polling (getUpdates): удалите его, прежде чем вернуться к polling.

Поддержка работы процесса

Бот, запущенный на вашем ПК, останавливается вместе с ним. На сервере процесс должен перезапускаться сам после ошибки. Поэтому код должен обрабатывать сетевые сбои, а не завершаться при первом.

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

Ограничения, которые стоит знать

Telegram ограничивает скорость отправки. Бот, который публикует слишком быстро в одной группе, получает временные отказы. Предусмотрите очередь отправки и паузу между сообщениями.

  • Слишком частые отправки могут временно отклоняться: распределяйте их во времени и обрабатывайте ошибку.
  • Бот, который хранит длинную историю в памяти, тратит ОЗУ: лучше держать эти данные в базе.
  • Бесплатный тариф даёт 315 МБ ОЗУ: достаточно для бота с командами, меньше для бота, который обрабатывает большие файлы.

Почему хостить бота Telegram в ACLClouds

Бот Telegram: лёгкий процесс, хорошо подходящий для бесплатного тарифа. Напишите его на Node.js или Python и загрузите по SFTP на порт 2222.

  • Бесплатный тариф: 1 бот, 315 МБ ОЗУ, 0,25 vCPU, 715 МБ хранилища, 4 дня, продлевается бесплатно.
  • Доступ SFTP для каждого бота на порту 2222, чтобы загрузить код.
  • Образы Node.js и Python включают ffmpeg, yt-dlp и deno.

Часто задаваемые вопросы

Бот Telegram тратит много ОЗУ?

При простых командах нет. Рост потребления дают данные в памяти и обработка файлов. Измеряйте неделю, прежде чем делать выводы.

Может ли бот работать без webhook?

Да. Polling достаточно для большинства ботов и не требует публичного адреса.

Какой язык выбрать?

Node.js и Python: два языка, которые предлагаются для ботов в ACLClouds. Выберите тот, который знаете: для бота Telegram хватит любого из них.