Yangilanishlar
getUpdates
Yangilanishlarni long polling bilan oladi.
POST
https://api.zamin.app/bot<TOKEN>/getUpdatesGET 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 olinganupdate_id + 1.update_id < offsetbo'lgan yangilanishlar tasdiqlangan hisoblanadi va o'chiriladi.- Manfiy
offset(masalan,-1) navbatdagi oxirgi-offsetta yangilanishni qaytaradi. - Webhook o'rnatilgan bo'lsa, getUpdates ishlamaydi (
409). - Bir vaqtda faqat bitta getUpdates: yangi so'rov eskisini
409bilan tugatadi.
Batafsil: Yangilanishlarni olish.
Parametrlar
| Parametr | Turi | Majburiy | Cheklov | Izoh |
|---|---|---|---|---|
offset | Integer | Ixtiyoriy | β | Birinchi kerakli update_id. Manfiy β oxirgi N ta. |
limit | Integer | Ixtiyoriy | 1β100 | Standart: 100. |
timeout | Integer | Ixtiyoriy | 0β50 soniya | Standart: 0 (darhol javob). 50 dan katta qiymat 50 soniyaga qisqartiriladi. HTTP mijozingiz kutish vaqti undan uzunroq bo'lsin. |
allowed_updates | Array of String | Ixtiyoriy | β€20 element | message, 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
| Kod | Tavsif | Sabab va yechim |
|---|---|---|
| 409 | Conflict: can't use getUpdates method while webhook is active; use deleteWebhook to delete the webhook first | Avval deleteWebhook chaqiring. |
| 409 | Conflict: terminated by other getUpdates request; make sure that only one bot instance is running | Botning ikkinchi nusxasi ishlayapti: bittasini to'xtating. |
| 400 | Bad Request: limit: Too big: expected number to be <=100 | limit 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}'