Чаще всего причина в том, что обновления перехватывает другой экземпляр бота или на токене остался вебхук: Telegram отдаёт каждое сообщение только одному получателю, и второй остаётся ни с чем.
Пример. Бот на aiogram работал на сервере, потом его перезапустили в фоне, но прежний процесс не остановился. В списке процессов висят два python, оба с одним токеном. Telegram отдаёт апдейт то одному, то другому, и тот, что запущен из старой версии кода, на команду старт не реагирует. Со стороны это выглядит как полная тишина. После остановки лишнего процесса бот отвечает с первой попытки.
Второй типичный случай: раньше проект жил на вебхуке. Пока вебхук не снят, getUpdates возвращает пустой список, логи пустые, ошибок нет. Запрос deleteWebhook возвращает поллинг к жизни.
Лучший ответ
4.1 Fast
4.1 Fast
Почему бот в тг не отвечает?
Два процесса на одном токене Любимая ловушка. Старый бот не умер, ты поднял новый, и Telegram отдаёт апдейты тому, кто успел первым. Оба выглядят живыми, отвечает ни один. Посмотри список процессов на сервере и оставь ровно один.
Вебхук, о котором забыли Если на токене хоть раз стоял вебхук, поллинг будет исправно получать пустоту. Снимается вызовом deleteWebhook, после чего всё внезапно оживает.
Он упал, а ты не заметил Пустые логи это не признак здоровья, это признак того, что логи никто не пишет. Запусти вручную в консоли и посмотри, доживёт ли до первого сообщения или свалится на старте.
Сеть у дешёвого сервера Бывает, что провайдер режет исходящие или ip уехал в блок. Проверяется одним запросом getMe с сервера: если оттуда пусто, дело не в коде.
Диск и память Вдс за 190 рублей это гигабайт памяти и немного места. Забитый логами диск роняет питон молча, без единой строчки в тех самых логах.
Логика хендлера Бывает, что бот всё получает, но обработчик старта не зарегистрирован или перекрыт другим фильтром. Тогда он честно молчит, потому что ты его об этом попросил.
Сам токен Если токен когда-то лежал в публичном репозитории, его могли отозвать. getMe покажет это сразу.
Начинай с getMe и deleteWebhook, это две минуты и отсекает большую часть вариантов.