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 и прокси. Пока нет — не надо.
а у кого на десятке сообщений в час всё-таки вебхук, и вы правда видите в этом смысл, не «мне так в гайде сказали»?