Zamin Bot API v1
Zamin uchun bot yarating
Zamin β uchidan-uchiga shifrlangan messenger, kanallar va Davra. Bot API orqali siz Zamin foydalanuvchilari bilan yozishadigan dasturlar yaratasiz: yordamchilar, do'kon botlari, eslatmalar, bildirishnomalar va boshqalar. Oddiy HTTPS so'rovlar, JSON va istalgan dasturlash tili.
Nima qurish mumkin
Tez boshlash
Sizga Zamin ilovasi, Python 3 va requests kutubxonasi kerak bo'ladi.
@ZaminBot'ni oching
Ilovada @ZaminBot'ni toping (yoki havolani oching) va Start'ni bosing. U Zamin botlarini yaratish va boshqarish uchun rasmiy bot.
/newbot yuboring
Bot nomini yozing (masalan, Ob-havo), so'ng username tanlang: u
botbilan tugashi kerak, masalanobhavo_uz_bot. Username qoidalari.Tokenni oling
@ZaminBot tokenni yuboradi. U
123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11ko'rinishida bo'ladi. Uni maxfiy saqlang va muhit o'zgaruvchisiga yozing:Terminalexport ZAMIN_BOT_TOKEN="123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11" pip3 install requestsBirinchi skript
bot.pyfaylini yarating. U botni tekshiradi va har bir matnli xabarni qaytarib yozadi:bot.pyimport os import requests TOKEN = os.environ["ZAMIN_BOT_TOKEN"] API = f"https://api.zamin.app/bot{TOKEN}" me = requests.get(f"{API}/getMe", timeout=15).json()["result"] print(f"@{me['username']} ishga tushdi") offset = None while True: params = {"timeout": 30} if offset is not None: params["offset"] = offset updates = requests.post(f"{API}/getUpdates", json=params, timeout=40).json()["result"] for update in updates: offset = update["update_id"] + 1 message = update.get("message") if message and "text" in message: requests.post( f"{API}/sendMessage", json={"chat_id": message["chat"]["id"], "text": f"Siz yozdingiz: {message['text']}"}, timeout=15, )Ishga tushiring
Terminalpython3 bot.pyIlovada botingizni oching, Start'ni bosing va biror narsa yozing. Bot javob qaytaradi. Keyingi qadam: darsliklar va Bot API asoslari.
Asosiy tushunchalar
Bot hisobi
Bot β Zamin'dagi maxsus hisob. Uning egasi bor (siz), username'i bot bilan tugaydi va u faqat Bot API orqali boshqariladi. Bot o'zi suhbat boshlay olmaydi: foydalanuvchi avval botni ochib Start'ni bosishi (yoki unga yozishi) kerak. Guruh egasi yoki admini botni guruhga yoki kanalga qo'shishi ham mumkin (Guruhlar va kanallar).
Token
Token β botingizning paroli: <bot_id>:<36 belgi>. U har bir so'rov manzilida bo'ladi: https://api.zamin.app/bot<TOKEN>/getMe. Server tokenning faqat xeshini saqlaydi, shuning uchun uni qayta ko'rsatib bo'lmaydi: @ZaminBot'dagi /token ham yangi token beradi. Tokenni himoyalash.
Yangilanishlar (updates)
Bot uchun sodir bo'lgan voqealar: yangi xabar, tahrirlangan xabar, tugma bosilishi, botni boshlash yoki bloklash. Ularni ikki usulda olasiz: getUpdates (long polling) yoki webhook. Ikkalasi birga ishlamaydi. Batafsil.
chat_id
Xabar yuborish uchun foydalanuvchining chat_id'si kerak. Uni yangilanishdan olasiz: message.chat.id (shaxsiy chatda u message.from.id bilan bir xil). Bot faqat o'zini boshlagan va bloklamagan foydalanuvchilarga yoza oladi; boshqa har qanday id uchun javob bir xil: 400 Bad Request: chat not found. Guruh va kanallarning id'lari manfiy (masalan -4012345678) β chat id'lari.
Botga xos foydalanuvchi id'lari
Bot foydalanuvchining haqiqiy hisob id'sini hech qachon ko'rmaydi. Uning o'rniga shu botga xos psevdonim raqam (10β13 xonali) beriladi. Bitta odam ikki xil botda ikki xil id bilan ko'rinadi, shuning uchun botlar foydalanuvchilarni o'zaro solishtira olmaydi. Bitta bot uchun esa bu id doimiy: uni ma'lumotlar bazangizda kalit sifatida ishlatishingiz mumkin.
Maxfiylik modeli: bot nimani ko'radi
| Bot ko'radi | Bot hech qachon ko'rmaydi |
|---|---|
| Ism, familiya, ochiq username, ilova tili; botga yozilgan xabarlar va fayllar; tugma bosilishlari; Start/bloklash holati. | Telefon raqam, profil rasmi, bio, tug'ilgan kun, onlayn holat, kontaktlar, joylashuv, Davra, boshqa chatlar, qurilmalar, email, haqiqiy hisob id'si. |
Telefon raqam yoki joylashuv β faqat foydalanuvchi request_contact / request_location tugmasini bosib, tasdiqlab yuborganda. | Foydalanuvchi qidirish, ro'yxat yoki boshqa foydalanuvchilar haqida ma'lumot olish usuli yo'q. |
To'liq ro'yxat: User turi va Maxfiylik va xavfsizlik.
Nega bot chatlari uchidan-uchiga shifrlanmagan
Zamin'dagi oddiy chatlar uchidan-uchiga shifrlangan: xabarlarni faqat suhbatdoshlarning telefonlari o'qiy oladi, server ham o'qiy olmaydi. Bot esa telefon emas β u sizning serveringizda ishlaydigan dastur va xabarlarni Bot API orqali oddiy JSON ko'rinishida oladi. Demak, server xabarni botga ochiq holda uzatishi kerak.
Shuning uchun bot chatlari serverda server kaliti bilan shifrlangan holda saqlanadi (at rest), lekin Zamin serveri va bot egasi ularni o'qiy oladi. Ilova har bir bot chatida "uchidan-uchiga shifrlanmagan" ogohlantirishini ko'rsatadi. Bot egasi sifatida foydalanuvchilarga shunga yarasha munosabatda bo'ling: faqat kerakli ma'lumotni saqlang.