Есть бот на PHP, отправляет 3 сообщения, sendContact,sendText,sendDocument. Через какое-то время получаю от Telegram "Too Many Requests", но только по sendContact, остальные сообщения нормально доходят.
Вопрос: почему "Too Many Requests" не у всех методов если я уж превысил лимит? у разных методов разные лимиты? на api telegram информацию не нашел, только по общим лимитам.
дело в том что на вебхуке телеграму надо всегда возвращать ok, 200. Когда у нас на вебхуке происходит ошибка, то телеграм повторно отсылает сообщение и таким образом получается завал. Надо вебхук обернуть в try/catch и при возникновении ошибки записывать ее в логи, а телеграму возвратить ok, 200. Таким образом все встанет на свои места
ну тоже самое, оберните sendContact в try/catch расставьте логи, поизучайте логи, записывайте результат обращения к api, анализируйте. Другого решения пока нет (и вряд ли будет)
@erniesto77
sendContact вызывается вместе с sendMessage.
sendMessage успешно отрабатывает сотни раз в минуту.
sendContact зарубается телеграм-сервером после 10-15-го сообщения.
sendMessage продолжает успешно слать сообщения.
try/catch и логи никак не помогут - сообщение успешно отсылается, телеграм его успешно принимает, но вместо ответа "ок, я передал твоё сообщение" возвращает: "чувак. ты слишком часто делаешь запросы".
На тут же вызываемый sendMessage отвечает: "ок, я передал твоё сообщение".
Предметом анализа в этом случае могут быть либо логи или исходный код серверов телеграма, либо политика обработки sendContact.
По первому: не у всех есть (далеко не у всех!))) такой уровень компетенции, чтобы в рамках своей текущей задачи прошерстить исходники телеграма)
По второму: нет в доке телеграма на текущий момент ни слова об ограничениях, касающихся именно sendContact. Сами ограничения есть.
Вывод: если вы запускаете sendContact больше чем 2-3 раза в сутки, смириться и заменять sendContact обычным sendMessage. А лучше изначально использовать sendMessage и не ждать пока прилетит ограничение по sendContact.
ps
И да, для sendMessage и sendContact хуки не нужны.