Бот 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 хватит любого из них.