ZaminDocs

Yangilanishlar

getUpdates

Yangilanishlarni long polling bilan oladi.

POSThttps://api.zamin.app/bot<TOKEN>/getUpdates

GET ham ishlaydi. Parametrlar: query, JSON, form yoki multipart β€” batafsil.

Kutilayotgan yangilanishlarni (Update massivi) qaytaradi. Yangilanish yo'q bo'lsa va timeout > 0 bo'lsa, so'rov yangilanish kelguncha yoki vaqt tugaguncha ochiq turadi (long polling).

  • offset β€” oxirgi olingan update_id + 1. update_id < offset bo'lgan yangilanishlar tasdiqlangan hisoblanadi va o'chiriladi.
  • Manfiy offset (masalan, -1) navbatdagi oxirgi -offset ta yangilanishni qaytaradi.
  • Webhook o'rnatilgan bo'lsa, getUpdates ishlamaydi (409).
  • Bir vaqtda faqat bitta getUpdates: yangi so'rov eskisini 409 bilan tugatadi.

Batafsil: Yangilanishlarni olish.

Parametrlar

ParametrTuriMajburiyCheklovIzoh
offsetIntegerIxtiyoriyβ€”Birinchi kerakli update_id. Manfiy β€” oxirgi N ta.
limitIntegerIxtiyoriy1–100Standart: 100.
timeoutIntegerIxtiyoriy0–50 soniyaStandart: 0 (darhol javob). 50 dan katta qiymat 50 soniyaga qisqartiriladi. HTTP mijozingiz kutish vaqti undan uzunroq bo'lsin.
allowed_updatesArray of StringIxtiyoriy≀20 elementmessage, edited_message, callback_query, my_chat_member, chat_member, channel_post, edited_channel_post. Bot uchun saqlanadi va keyingi yangilanishlarga ta'sir qiladi. [] β€” barcha turlar (chat_member'dan tashqari: u faqat ro'yxatda aniq ko'rsatilsa keladi). Noma'lum nomlar tashlab yuboriladi.

Javob

Natija (result): Array of Update

JSON
{
  "ok": true,
  "result": [
    {
      "update_id": 17,
      "message": {
        "message_id": 14,
        "from": {
          "id": 4810235517,
          "is_bot": false,
          "first_name": "Ali",
          "last_name": "Valiyev",
          "username": "ali",
          "language_code": "uz"
        },
        "chat": {
          "id": 4810235517,
          "type": "private",
          "first_name": "Ali",
          "last_name": "Valiyev",
          "username": "ali"
        },
        "date": 1791106200,
        "text": "/start"
      }
    }
  ]
}

Xatolar

KodTavsifSabab va yechim
409Conflict: can't use getUpdates method while webhook is active; use deleteWebhook to delete the webhook firstAvval deleteWebhook chaqiring.
409Conflict: terminated by other getUpdates request; make sure that only one bot instance is runningBotning ikkinchi nusxasi ishlayapti: bittasini to'xtating.
400Bad Request: limit: Too big: expected number to be <=100limit 1–100 oralig'ida bo'lsin.

Istalgan metodda bo'lishi mumkin: 401 Unauthorized, 403 Forbidden: bot is suspended, 429 Too Many Requests, 400 Bad Request: <maydon>: … β€” xato kodlari.

Misol

Python
import os
import requests

TOKEN = os.environ["ZAMIN_BOT_TOKEN"]
API = f"https://api.zamin.app/bot{TOKEN}"

offset = None
while True:
    params = {"timeout": 30}
    if offset is not None:
        params["offset"] = offset
    # HTTP kutish vaqti long poll'dan uzunroq bo'lsin
    updates = requests.post(f"{API}/getUpdates", json=params, timeout=40).json()["result"]
    for update in updates:
        offset = update["update_id"] + 1
        print(update)
curl
curl -s -X POST "https://api.zamin.app/bot$ZAMIN_BOT_TOKEN/getUpdates" \
  -H "Content-Type: application/json" \
  -d '{"offset": 18, "timeout": 30}'