Задать вопрос
@samarkad33

Почему getUpdates у Telegram возвращает []?

Пишу телеграм бота. Отправляю сообщения, они доставляются нормально, sendMessage возращает данные. А вот getUpdates -- никак не хочет. Ошибки нет, просто возвращается [].

{"ok":true,"result":[]}

Код большой, в репозитории, поэтому я не могу его тут запостить.

В чем может быть причина?
  • Вопрос задан
  • 14672 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
@Lynatik001
ответ дам будущему народу, что в гугле эту тему находит. - Пустой массив из за того что бот включен, он успевает обработать не просмотреные сообщения до того как ты напишешь что боту, и вернешся в браузер посмотреть, есть ли что в массиве. Дак что бота надо оффать перед тем как что либо смотреть
Ответ написан
Комментировать
Afres
@Afres
Product Owner
Данный метод возвращает только новые сообщения. Если бот уже реагировал на некие отправляемые ему сообщения, то он их уже получил (скорее всего этим же методом) и они помечены сервером Telegram как полученные. Соответственно, при каждом новом запросе они возвращаться уже не будут, иначе вы бы каждый раз получали всю историю сообщений с момента создания бота. В данном случае, у вас есть два варианта:

Вести лог получаемых ботом сообщений и пользоваться им на своё усмотрение.
Поиграться с параметром offset метода getUpdates. Подробнее здесь: https://core.telegram.org/bots/api#getupdates

Например: https://api.telegram.org/botXXXXXXXXXX/getUpdates?...
Ответ написан
Комментировать
@Maxim_Samburskiy
Похоже на то, что нет никаких апдейтов, попробуйте посмотреть через браузер https://api.telegram.org/bot<token>/getUpdates если результат тот же, то Ваши сообщения попросту не доходят до сервера
Ответ написан
Комментировать
@KirillHamann
Правильно Lynatik001 написал! Я сам мучился с этой проблемой. Ответ приходит, то есть бот работает и сообщения получает но результат пустой! Долго мучился 3 года назад и как-то получилось. А сейчас реально попробовал - идем в телегу, находим нашего бота и пишем ему /stop. Все, повторяем процедуру с получением результата - все работает. Потом снова идем в бот и стартуем его /start.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы