Gem: Telegram How To

Получать обновления: вебхук или getUpdates

Что это

Любое событие, от сообщения до оплаты, приходит к боту как обновление (update). Получают их одним из двух способов, не обоими сразу: либо твой код сам забирает обновления методом `getUpdates` (long polling), либо Telegram шлёт каждое POST-запросом на твой HTTPS-адрес (вебхук). Недоставленные обновления ждут не дольше 24 часов.

Как сделать

  1. Опрос: вызывай `getUpdates` в цикле с положительным `timeout` и передавай… Опрос: вызывай `getUpdates` в цикле с положительным `timeout` и передавай `offset` = последний `update_id` + 1, чтобы подтвердить обработанное.
  2. Вебхук: вызови `setWebhook` с HTTPS-адресом в `url` и секретом в… Вебхук: вызови `setWebhook` с HTTPS-адресом в `url` и секретом в `secret_token`. Запросы, где в заголовке `X-Telegram-Bot-Api-Secret-Token` другое значение, отбрасывай.
  3. В `allowed_updates` оставь только нужные типы, а `max_connections` (1–100, по умолчанию 40) подбери под сервер.
  4. На запросы вебхука отвечай кодом 2XX, иначе Telegram повторит запрос и после разумного числа попыток сдастся.
  5. Проверяй доставку через `getWebhookInfo`: `pending_update_count`, `last_error_message`.
  6. Вернуться к опросу — `deleteWebhook`; с `drop_pending_updates` очередь заодно очистится.

Осторожно

С Gem

Gem не размещает код твоего бота и не принимает его вебхуки, а своего бота к Gem пока не подключить. Проекты работают на @gembot, которого держит Gem: оплата предложений в звёздах, заявки на вступление, посты в каналы и ответы в группах.

Источники

Открыть в Telegram ↗