getUpdates
getUpdates
Забирает очередь апдейтов методом long polling. Webhooks не поддерживаются — это единственный способ получать события.
GET https://api.kodari.ru/msg/bot.php?method=getUpdates&offset=0&timeout=20&limit=100
Authorization: Bearer bot_ВАШ_ТОКЕН
Параметры
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
offset | int | 0 | update_id последнего обработанного + 1 |
timeout | int | 0 | Сколько секунд ждать новые апдейты, максимум 25 |
limit | int | 100 | Сколько апдейтов вернуть за раз, максимум 100 |
Выданные апдейты помечаются доставленными и повторно не приходят. offset служит страховкой: сервер отдаёт только записи с update_id >= offset.
Ответ
{
"ok": true,
"result": [
{
"update_id": 12,
"message": {
"message_id": 100,
"from": { "id": 5, "is_bot": false, "first_name": "Иван", "username": "ivan" },
"chat": { "id": 123, "type": "private" },
"date": 1714728000,
"text": "/start"
}
},
{
"update_id": 13,
"callback_query": {
"id": "a1b2c3d4",
"from": { "id": 5, "is_bot": false, "first_name": "Иван", "username": "ivan" },
"message": { "message_id": 100, "chat": { "id": 123 } },
"data": "yes"
}
}
]
}
Типы апдейтов
| Поле | Когда приходит |
|---|---|
message | Пользователь или другой бот отправил сообщение в общий чат |
edited_message | Сообщение отредактировано |
callback_query | Нажата inline-кнопка сообщения бота |
Собственные сообщения бота ему не возвращаются.
Одновременный запуск
На бота допускается один активный getUpdates. Второй параллельный вызов получает 409 Conflict: another getUpdates is running. Это защита от двух запущенных копий бота.
Ошибки
| Код | Описание |
|---|---|
| 401 | Неверный токен |
| 409 | Уже выполняется другой getUpdates |
pykodaribot
Обычно поллинг не пишут вручную — им занимается Dispatcher:
asyncio.run(dp.start_polling(bot)) # timeout=20
asyncio.run(dp.start_polling(bot, timeout=10))
Ручной цикл:
offset = 0
while True:
for upd in await bot.get_updates(offset=offset, timeout=20):
offset = upd.update_id + 1
if upd.message:
print(upd.message.text)
66 просмотров