Всем привет.
Написал бота для телеграм на С#, ничего особенного, просто присылает прогноз погоды по запросу.
Раз в секунду запрашиваю getupdates.
Все запросы к api завернул в try/catch, поэтому все ошибки апи вижу (их предостаточно, в частности 502).
Сохраняю update_id в текстовый файл и оттуда читаю.
Возникла непонятная ситуация - иногда бот перестает отвечать. Начал разбираться в чем дело - оказалось, что телеграм выдает update_id ниже, чем уже присылал.
Например бот получил "update_id": 719885530, обработал. Потом ему делаешь запрос, он молчит.
Смотришь обновления, оказывается, что апи прислало "update_id": 719885519.
И, соответственно, пока номер обновления опять не дойдет до нужной цифры, бот молчит.
Кто-нибудь знает с чем это может быть связано или может имеет отношение к команде телеграма, чтобы разъяснить ситуацию?
Кстати, номер обновления читаю из json, а не добавляю +1 сам, поэтому накрутка номера ботом исключена.
Сам спросил - сам ответил.
Вот что на это отвечает саппорт ботов телеграмма:
It is because you are not sending the "offset" parameter, you need to do it, otherwise we will continue sending you the first 100 updates.
getUpdates return first 100 unconfirmed updates.
To confirm an update, use offset while requesting getUpdates.
All updates less than or equal to offset are maked as confirmed and deleted from server.