Fayllar
getFile
file_id bo'yicha yuklab olish yo'lini (file_path) qaytaradi.
https://api.zamin.app/bot<TOKEN>/getFileGET ham ishlaydi. Parametrlar: query, JSON, form yoki multipart — batafsil.
Bot ko'rgan fayl (foydalanuvchi yuborgan yoki botning o'zi yuborgan) uchun File obyektini qaytaradi. Faylni yuklab olish manzili:
https://api.zamin.app/file/bot<TOKEN>/<file_path>file_id har bir bot uchun alohida: boshqa botning file_id'si sizning botingizda ishlamaydi. Yuklab olish havolasida token bor, shuning uchun uni hech kimga bermang (masalan, foydalanuvchiga havola qilib yubormang).
Guruhdagi fayllar uchidan-uchiga shifrlangan. Bot faqat kaliti o'ziga shifrlab yuborilgan faylni (masalan, izohida buyruq bo'lgan rasm) yoki o'zi yuborgan faylni ola oladi. Yuklab olishda server faylni bo'lakma-bo'lak ochib, oqim bilan beradi: bunday fayllar uchun chegara 50 MB (file is too big), Content-Type doim application/octet-stream. Guruhdan chiqarilgan bot o'sha guruh fayllarini endi ololmaydi. Guruhdagi fayllar.
Bir vaqtda bot bo'yicha ko'pi bilan 3 ta, umumiy 16 ta yuklab olish (shaxsiy chatlar ham); oshsa, yuklab olish manzili 429, retry_after: 1 qaytaradi.
Parametrlar
| Parametr | Turi | Majburiy | Cheklov | Izoh |
|---|---|---|---|---|
file_id | String | Majburiy | ≤128 belgi | Message ichidagi file_id. |
Javob
Natija (result): File
{
"ok": true,
"result": {
"file_id": "BQx8Kq2vN0aLrT5mW1pZcY7uE3sHdJ9gFbR4",
"file_unique_id": "Xk3pQ9vR2mLwT8aZ",
"file_size": 183402,
"file_path": "files/BQx8Kq2vN0aLrT5mW1pZcY7uE3sHdJ9gFbR4"
}
}Xatolar
| Kod | Tavsif | Sabab va yechim |
|---|---|---|
| 400 | Bad Request: invalid file_id | file_id shu botga tegishli emas, fayl yo'q yoki bot o'sha guruhdan chiqarilgan. |
| 404 | Not Found: file not found | (Yuklab olishda) fayl topilmadi. |
| 400 | Bad Request: file is too big | (Yuklab olishda) guruhdagi shifrlangan fayl 50 MB dan katta. |
| 400 | Bad Request: file can't be decrypted | (Yuklab olishda) guruh faylini ochib bo'lmadi (yuboruvchi ilovasi buzuq fayl yuborgan). |
| 429 | Too Many Requests: retry after 1 | (Yuklab olishda) bir vaqtda juda ko'p yuklab olish: bot bo'yicha 3 ta, umumiy 16 ta. |
Istalgan metodda bo'lishi mumkin: 401 Unauthorized, 403 Forbidden: bot is suspended, 429 Too Many Requests, 400 Bad Request: <maydon>: … — xato kodlari.
Misol
import os
import requests
TOKEN = os.environ["ZAMIN_BOT_TOKEN"]
API = f"https://api.zamin.app/bot{TOKEN}"
FILE_ID = "BQ..." # message.photo[-1].file_id, message.document.file_id ...
info = requests.post(f"{API}/getFile", json={"file_id": FILE_ID}, timeout=15).json()["result"]
url = f"https://api.zamin.app/file/bot{TOKEN}/{info['file_path']}"
with requests.get(url, stream=True, timeout=60) as r:
r.raise_for_status()
with open("yuklangan_fayl", "wb") as f:
for chunk in r.iter_content(64 * 1024):
f.write(chunk)
print("Saqlandi:", info["file_size"], "bayt")curl -s "https://api.zamin.app/bot$ZAMIN_BOT_TOKEN/getFile?file_id=BQ..."
# Yuklab olish (file_path javobdan):
curl -s -o fayl "https://api.zamin.app/file/bot$ZAMIN_BOT_TOKEN/files/BQ..."