Bot API

Long polling guide

Как читать update через `GET /v1/bot-api/updates` и не терять события.

1. Базовый запрос

Используйте `offset`, `limit` и `timeout`. Сервер вернёт только update с `update_id > offset`. При `timeout > 0` запрос подождёт новые события до указанного лимита.

curl -H "Authorization: Bearer <bot_token>" \
  "https://api.yullama.ru/v1/bot-api/updates?offset=0&limit=50&timeout=30"
2. Ack-семантика

Подтверждение делается клиентом через следующий `offset`. Если вы обработали update `41`, следующий запрос должен идти минимум с `offset=41`. Тогда Bot API не вернёт этот update повторно.

3. Рекомендуемый цикл

Храните `lastSeenUpdateID`, после успешной обработки всех items обновляйте offset и сразу делайте новый poll. Если обработчик упал посередине пачки, не двигайте offset дальше последнего подтверждённого update.

let offset = loadOffset();
for (;;) {
  const { items } = await client.bot.getUpdates({ offset, limit: 50, timeout: 30 });
  for (const item of items) {
    await handleUpdate(item);
    offset = item.update_id;
  }
}