Сообщество / Боты

бот для маленького чата, webhook или polling на vps

H
hopstop
Junior
Сообщения: 6
Репутация: 0
Дата регистрации:
03.09.2026
АВТОР ТЕМЫ03 сент. 2026 г., 22:02 (GMT+3)
Из Твери держу маленький чат, телега и дискорд, бот модерации на питоне. Сидел на ноуте, крышку закрыл — ну бот отвалился, пока чайник кипел уже ждали кика)

Перетащил на vps, polling за полчаса поднял и живёт. Вебхук вроде правильнее, но порт в мир ради десятка сообщений в час и токен светить через url — как-то стрёмно.

На таком объёме кто чем сидит, webhook или polling?
0
masha_spb
Junior
Сообщения: 34
Репутация: 16
Дата регистрации:
11.08.2026
04 сент. 2026 г., 23:07 (GMT+3)
hopstop у меня та же крышка, только бот был не про кики. На ноуте крутился питоновский скрипт: ollama дожёвывает длинный pdf, он мне в телегу пишет «готово, можно смотреть». Села в метро на Московском, крышку закрыла по привычке — и тишина. Пока доехала, уже полчаса как всё посчиталось, а я сидела и ждала пуш. После этого скрипт уехал на vps, polling, systemd, и крышку закрываю не думая.

Про вебхук «правильнее» — это тон документации, не физика. Телеге без разницы, как ты апдейты забираешь. Правильнее то, что не торчит в мир. На десятке сообщений в час polling — это вообще не архитектура, это http-запрос раз в несколько секунд. Процессор даже не замечает.

hopstop писал:
порт в мир ради десятка сообщений в час и токен светить через url — как-то стрёмно.


стрёмно нормально, я бы тоже не открыла. Токен в url — это даже не требование апи, это копипаста из гайдов, где путь делают /bot<token>. Можно секретную строку, можно заголовок. Но это уже если вебхук вам зачем-то понадобится, а на таком чате он не понадобится.

если совсем просто, в одном вопросе смешались два разных клиента, и из-за этого «правильнее» путается.

в телеге polling — это getUpdates: бот сам ходит наружу. Входящих портов нет, файрвол можно оставить глухим. Вебхук — телега стучится к вам на 443, нужен белый вход, сертификат, прокси. Упал nginx или протух сертификат — бот молчит, а в чате уже кто-то флудит. Для модерации это хуже, чем лишние две сотни миллисекунд на polling.

с дискордом развилка webhook/polling почти фальшивая. Живой бот с киками и ролями сидит на gateway, это исходящий вебсокет, не ваш открытый порт. Вебхуки дискорда умеют постнуть сообщение в канал, для модерации с ролями их не хватает. Если питон-бот у вас уже живой после переезда — вы скорее всего на gateway, просто в гайде это не назвали страшным словом.

два чата на одной машине ничего не меняют: два исходящих соединения, входящих по-прежнему ноль. Я бы их даже разнесла по разным systemd-юнитам, чтобы телега не утащила за собой дискорд, если api на секунду задумается.

я вебхук в телеге поднимала один раз, из желания сделать «как взрослые в проде». Поддомен, caddy сам сертификат выпустил, путь не из токена, снаружи только 443. Работало. Потом через неделю поймала себя на мысли, что открыла вход на сервер ради галочки и пары десятков апдейтов в час. Вернула polling, порт закрыла. В чате задержку никто не заметил, потому что её и не было.

из того, что реально кусалось при переезде с ноута, не протокол, а мелочи. На ноуте мог остаться второй экземпляр — он ловит апдейты и орёт в никуда, пока vps думает, что тишина. Токен в ExecStart systemd светится в ps aux и в логах, лучше EnvironmentFile. long polling не надо дёргать каждые 50 мс, timeout=25–30 телега спокойно держит. И offset после рестарта сохраняйте, иначе модерация может повторно отработать старые сообщения или наоборот проглотить пачку. Это не лечится вебхуком, это лечится файлом или sqlite сбоку.

у меня юнит выглядит примерно так, без поэзии:


[Service]
Restart=always
RestartSec=3
EnvironmentFile=/etc/bot/telegram.env
ExecStart=/opt/bot/.venv/bin/python bot.py


крышку это не заменит само по себе, зато после ребута vps не надо вспоминать, что бот лежал. 11434 я в мир тоже не свечу, та же логика: если серверу не должны стучаться снаружи, пусть не стучатся.

на вашем объёме я бы осталась на polling и забыла. Порт в мир ради маленького чата — это снимать входную дверь, потому что в учебнике написано «так логистика правильнее». Когда появится что-то ещё публичное на этой же машине, тогда уже можно говорить про 443 и прокси. Пока нет — не надо.

а у кого на десятке сообщений в час всё-таки вебхук, и вы правда видите в этом смысл, не «мне так в гайде сказали»?
0
void_3am
Junior
Сообщения: 37
Репутация: 7
Дата регистрации:
14.08.2026
05 сент. 2026 г., 00:13 (GMT+3)
masha_spb вторая крышка в теме) я дома зарядку выдернул — и тоже тишина. polling уже, вебхук не трогай
0
n1kita
Junior
Сообщения: 40
Репутация: 14
Дата регистрации:
19.08.2026
05 сент. 2026 г., 01:10 (GMT+3)

masha_spb писал:
Можно секретную строку, можно заголовок.


void_3am не надо. секрет в пути не прячет 443. я токен из nginx лога уже вытаскивал.
0