Guruhlar va kanallardagi botlar
Botni guruhga yoki kanalga qo'shish mumkin: u buyruqlarga javob beradi, yangi a'zolarni kutib oladi, spamni o'chiradi, kanalga post joylaydi. Bot API o'sha-o'sha β faqat chat_id manfiy bo'ladi va bir nechta yangi metod hamda yangilanish qo'shiladi.
Botni guruhga qo'shish
- Bot egasi (siz) hech narsa qilmasa ham bo'ladi: botlarni guruhga qo'shish standart holatda yoqilgan. O'chirish uchun β @ZaminBot'da /setjoingroups (u kanallarga ham taalluqli). Holatni getMe'dagi
can_join_groupsko'rsatadi. - Guruh egasi yoki "A'zo qo'shish" huquqli admin guruh ma'lumotlaridagi Botlar bo'limida botni username bo'yicha qo'shadi.
- Bot
my_chat_member(left β member) va o'zi ham ichida bo'lgannew_chat_membersxizmat xabarini oladi. Shu paytdan boshlabchat.idma'lum β bot guruhga yoza oladi. - Moderatsiya kerak bo'lsa, guruh egasi (yoki "Admin tayinlash" huquqli admin) botni admin qiladi va kerakli huquqlarni beradi (jadval). Bot
my_chat_member(member β administrator, huquqlar bilan) oladi.
- Tarix yo'q. Bot qo'shilishidan oldingi xabarlarni hech qachon ko'rmaydi: ular botga shifrlanmagan va endi shifrlab bo'lmaydi. Bot chiqarilib, qayta qo'shilsa ham, oraliqdagi xabarlar unga ko'rinmaydi.
- Kimlar qo'shilmaydi: @ZaminBot, bloklangan (suspended) botlar,
/setjoingroupso'chirilgan botlar. Davra chatlariga bot qo'shib bo'lmaydi. - Chiqarish: guruh egasi yoki "Foydalanuvchilarni cheklash" huquqli admin (bot admin bo'lsa β faqat ega yoki uni admin qilgan odam). Bot
my_chat_member(β kicked) oladi. Bot o'zi ham chiqishi mumkin: leaveChat (β left). - Limitlar: bitta guruhda ko'pi bilan 20 ta bot; bitta bot ko'pi bilan 200 ta guruh va kanalda (birgalikda).
Privacy mode: bot nimani ko'radi
Oddiy qilib aytganda: bot guruhda faqat o'ziga qaratilgan xabarlarni oladi. Aniqrog'i, privacy mode yoqilgan bo'lsa (standart holat), bot faqat quyidagilarni oladi:
- Buyruqlar β
/bilan boshlanadigan xabar (yoki fayl izohi):/start,/help, shuningdek/help@SizningBot./help@BoshqaBotsizga kelmaydi; oddiy/helpesa guruhdagi har bir botga boradi. - @eslatishlar β matnda
@SizningBotalohida so'z sifatida bor (katta-kichik harf farqsiz). - Botning o'z xabariga javoblar (reply).
- Hamma xabarlar β lekin faqat guruh egasi botni admin qilib, unga "Barcha xabarlarni o'qish" huquqini bergan bo'lsa (pastda).
Bundan tashqari bot doim oladi: server baribir biladigan xizmat voqealari (kim qo'shildi, chiqdi yoki chiqarildi, guruh nomi o'zgardi, botning o'zi qo'shildi, admin qilindi yoki chiqarildi) va o'z xabarlaridagi tugma bosilishlari.
Bot hech qachon ko'rmaydi: boshqa xabarlarni, iqtibos qilingan matnni, havola ko'rinishlarini (link preview), "kimdan forward qilingan"ni, boshqa botlarning xabarlarini, reaksiyalarni, qadashlarni, "o'qildi" belgilarini, telefon raqamlar, profil rasmlari, kontaktlar, onlayn holat va bot qo'shilishidan oldingi tarixni. Odamlar shaxsiy chatdagidek psevdonim id bilan ko'rinadi.
"Barcha xabarlarni o'qish"
Bot guruhdagi barcha xabarlarni faqat ikki shart birga bajarilganda oladi:
- bot o'sha guruhning admini, va
- guruh egasi unga "Barcha xabarlarni o'qish" huquqini o'zi, aniq bergan.
Boshqa yo'l yo'q: bot egasining @ZaminBot'dagi /setprivacy sozlamasi o'zi hech qachon "barcha xabarlar"ni yoqmaydi. Uning ta'siri:
- Privacy holati bot guruhga qo'shilgan paytda shu guruh uchun "suratga olinadi" va keyin hech qachon o'zgarmaydi (admin qilish yoki huquqlarni o'zgartirish ham uni yangilamaydi).
/setprivacy'ni keyin o'zgartirsangiz, faqat bot qayta qo'shilganda hisobga olinadi. - Privacy mode'i o'chiq holda qo'shilgan botni faqat guruh egasi admin qila oladi va faqat "Barcha xabarlarni o'qish" huquqini shu so'rovning o'zida yoqib: ilova ikkinchi marta tasdiq so'raydi, busiz server
409 BOT_PRIVACY_OFFqaytaradi. - Ilova guruhdagi har bir bot uchun suratga olingan holatni (
GroupBot.privacyMode) va haqiqiy holatni (readsAllMessages) ko'rsatadi.
Boshqa adminlar bu huquqni bera olmaydi va privacy mode'i o'chiq botni admin qila olmaydi. Bot egasi guruh rozi bo'lmagan holda botni jimgina "hamma narsani o'quvchi"ga aylantira olmaydi.
Bunday guruhda har bir a'zoning ilovasi doimiy ogohlantirish ko'rsatadi: "π€ @Bot bu guruhdagi barcha xabarlarni o'qiy oladi (ular Zamin serveridan uchidan-uchiga shifrlanmagan)". can_read_all_group_messages (my_chat_member, getChatMember, getChatAdministrators) va ilovadagi readsAllMessages haqiqiy holatni bildiradi: true β bot hozir barcha xabarlarni oladi.
Bu uchidan-uchiga shifrlash uchun nimani anglatadi
Ochiq aytamiz, chunki foydalanuvchilar sizning botingizga ishonadi:
- Bot telefon emas β u sizning serveringizda ishlaydigan dastur va xabarlarni Bot API orqali oddiy JSON ko'rinishida oladi. Shuning uchun guruhdagi har bir bot shu guruh uchun o'z shifrlash kalitiga ega ("bot qurilmasi"), uning maxfiy qismi esa Zamin serverida saqlanadi (serverda shifrlangan holda).
- A'zoning telefoni xabarni botga ham shifrlasa (buyruq, @eslatish, javob yoki "barcha xabarlar"), o'sha xabarni Zamin serveri ham, bot egasi ham o'qiy oladi. Bunday xabar uchidan-uchiga shifrlangan emas deb hisoblang.
- Botga shifrlanmagan xabarlar a'zolarning telefonlari orasida uchidan-uchiga shifrlangan bo'lib qoladi β ularni na server, na bot o'qiy oladi.
- Qaysi xabar botga borishini yuboruvchining telefoni hal qiladi. Server ham tekshiradi: botning nusxasini ochib, u haqiqatan buyruq / @eslatish / botga javob ekanini tekshiradi va mos kelmaganini botga bermaydi.
- Fayl izohida buyruq bo'lsa, bot o'sha faylni ham oladi (fayl kaliti xabar ichida keladi).
- Botning guruhdagi xabarlari ham a'zolar telefonlari uchun shifrlanadi, lekin ularni server yozgan β demak bot yuborgan matnni server biladi.
- Kanallar uchidan-uchiga shifrlanmagan (postlar serverda, hozirgidek).
Bot nusxasida nima bor
A'zoning telefoni botga xabarning qisqartirilgan nusxasini shifrlaydi; server ham nusxani o'qishdan oldin xuddi shu maydonlarni olib tashlaydi:
- Iqtibos yo'q. Javob qilingan xabarning matni va muallifi nusxada yo'q β faqat uning id'si. Shu sababli
reply_to_messageboshqa odamning xabari uchun mazmunsiz keladi (message_id,chat,dateva server biladiganfrom); to'liq faqat botning o'z xabari. - Havola ko'rinishi (link preview) yo'q β faqat matnning o'zi.
- "Kimdan forward qilingan" yo'q.
- Kontaktlar hech qachon botga shifrlanmaydi (guruhda
contactkelmaydi).
Siz β bot egasi β uchun xulosa: botga kelgan guruh xabarlarini kerakli ish tugagach saqlamang, log'larga to'liq yozmang, va "barcha xabarlarni o'qish"ni faqat haqiqatan kerak bo'lsa so'rang (masalan, flood'ga qarshi moderator). Kam ma'lumot saqlang.
Chat id'lari
| Chat | chat.type | id ko'rinishi |
|---|---|---|
| Shaxsiy chat | private | musbat, foydalanuvchining psevdonim id'si (= from.id) |
| Guruh | group | -<10 raqam>, masalan -4012345678 |
| Kanal | channel | -100<10 raqam>, masalan -1004012345678 |
| Kanal izohlari | supergroup | -100β¦; kanalning getChat javobidagi linked_chat_id |
- Guruh va kanal id'lari tasodifiy, lekin doimiy β ularni bazangizda saqlang. Ichki hisob id'lari botga hech qachon berilmaydi.
- Ochiq guruh yoki kanal uchun
chat_idsifatida"@username"ham ishlaydi (bot unda a'zo bo'lsa). - Noma'lum id, bot a'zo bo'lmagan chat yoki botni boshlamagan odamning shaxsiy chati β hammasi uchun bir xil javob:
400 Bad Request: chat not found. message_id: guruhda β guruhning umumiy xabar raqami (hamma a'zolar va botlar uchun bir xil, o'sib boradi, bot ko'rmagan xabarlar sabab oraliqlar bo'ladi). Kanal va izohlarda β bot birinchi marta ko'rganda beriladigan raqam.- Odamlarning
from.id'si shaxsiy chatdagi bilan bir xil psevdonim raqam: bitta odam sizning botingizga guruhda ham, shaxsiy chatda ham bir xil id bilan ko'rinadi, boshqa botga esa boshqa id bilan.
Yangilanishlar
| Tur | Qachon keladi |
|---|---|
message | Guruhda: privacy mode ruxsat bergan xabar (buyruq, @eslatish, botga javob yoki β "barcha xabarlar"da β har biri). Xizmat xabarlari ham message bo'lib keladi (pastda). |
edited_message | A'zo xabarini tahrirladi va yangi matn ham privacy mode shartiga mos. |
callback_query | A'zo botning guruhdagi xabaridagi inline tugmani bosdi. |
my_chat_member | Botni guruh yoki kanalga qo'shishdi (left β member / administrator), admin qilishdi yoki huquqlarini o'zgartirishdi, adminlikdan olishdi, chiqarishdi (β kicked) yoki bot o'zi chiqdi (β left). |
message + new_chat_members | Guruhga odam(lar) yoki bot qo'shildi. Privacy mode'dan qat'i nazar, guruhdagi barcha botlarga. |
message + left_chat_member | Odam (yoki boshqa bot) chiqdi yoki chiqarildi. |
message + new_chat_title | Guruh nomi o'zgardi. |
chat_member | Guruhda odam qo'shildi, chiqdi, chiqarildi yoki ban qilindi. Faqat admin-botlarga va faqat allowed_updates'da "chat_member" aniq ko'rsatilgan bo'lsa (Telegram qoidasi). |
channel_post | Bot admin bo'lgan kanalda yangi post (botning o'z postlari kelmaydi). |
edited_channel_post | Kanal posti tahrirlandi. |
message (izohlar chatida) | Kanal postiga yangi izoh: chat.type = "supergroup", message_thread_id = post raqami. |
O'chirishlar, reaksiyalar va qadashlar haqida yangilanish kelmaydi. Webhook yoki getUpdates'da allowed_updates ishlatsangiz, yangi turlarni ro'yxatga qo'shishni unutmang β ro'yxat bot uchun saqlanadi.
Guruhdagi buyruq
Admin /warn buyrug'ini Vali'ning xabariga javob qilib yozdi. reply_to_message β boshqa odamning xabari, shuning uchun unda mazmun yo'q, faqat raqami va muallifi (botning nusxasida iqtibos yo'q, server esa odamlar xabarlarining matnini saqlamaydi β bot nusxasi):
{
"update_id": 501,
"message": {
"message_id": 815,
"from": {
"id": 4810235517,
"is_bot": false,
"first_name": "Ali",
"last_name": "Valiyev",
"username": "ali",
"language_code": "uz"
},
"chat": {
"id": -4012345678,
"type": "group",
"title": "Dasturchilar"
},
"date": 1791106200,
"text": "/warn@ObHavoBot",
"reply_to_message": {
"message_id": 812,
"chat": {
"id": -4012345678,
"type": "group",
"title": "Dasturchilar"
},
"date": 1791106160,
"from": {
"id": 5203318874,
"is_bot": false,
"first_name": "Vali",
"username": "vali",
"language_code": "uz"
}
}
}
}Yangi a'zo
{
"update_id": 502,
"message": {
"message_id": 816,
"chat": {
"id": -4012345678,
"type": "group",
"title": "Dasturchilar"
},
"date": 1791106200,
"from": {
"id": 4810235517,
"is_bot": false,
"first_name": "Ali",
"last_name": "Valiyev",
"username": "ali",
"language_code": "uz"
},
"new_chat_members": [
{
"id": 5203318874,
"is_bot": false,
"first_name": "Vali",
"username": "vali",
"language_code": "uz"
}
]
}
}from β amalni bajargan odam. Bu xizmat xabarini deleteMessage bilan o'chirish mumkin (can_delete_messages kerak).
Bot admin qilindi
{
"update_id": 503,
"my_chat_member": {
"chat": {
"id": -4012345678,
"type": "group",
"title": "Dasturchilar"
},
"from": {
"id": 4810235517,
"is_bot": false,
"first_name": "Ali",
"last_name": "Valiyev",
"username": "ali",
"language_code": "uz"
},
"date": 1791106200,
"old_chat_member": {
"user": {
"id": 1000001,
"is_bot": true,
"first_name": "Ob-havo",
"username": "ObHavoBot",
"can_join_groups": true,
"can_read_all_group_messages": false,
"supports_inline_queries": false
},
"status": "member"
},
"new_chat_member": {
"user": {
"id": 1000001,
"is_bot": true,
"first_name": "Ob-havo",
"username": "ObHavoBot",
"can_join_groups": true,
"can_read_all_group_messages": false,
"supports_inline_queries": false
},
"status": "administrator",
"can_change_info": false,
"can_delete_messages": true,
"can_restrict_members": true,
"can_invite_users": false,
"can_pin_messages": true,
"can_post_messages": false,
"can_edit_messages": false,
"can_promote_members": false,
"can_manage_video_chats": false,
"can_read_all_group_messages": false
}
}
}chat_member
{
"update_id": 504,
"chat_member": {
"chat": {
"id": -4012345678,
"type": "group",
"title": "Dasturchilar"
},
"from": {
"id": 1000001,
"is_bot": true,
"first_name": "Ob-havo",
"username": "ObHavoBot",
"can_join_groups": true,
"can_read_all_group_messages": false,
"supports_inline_queries": false
},
"date": 1791106200,
"old_chat_member": {
"user": {
"id": 5203318874,
"is_bot": false,
"first_name": "Vali",
"username": "vali",
"language_code": "uz"
},
"status": "member"
},
"new_chat_member": {
"user": {
"id": 5203318874,
"is_bot": false,
"first_name": "Vali",
"username": "vali",
"language_code": "uz"
},
"status": "kicked"
}
}
}chat_member faqat qo'shilish (left β member), chiqish va chiqarish (member β left) hamda ban'da (member β kicked) keladi. Admin tayinlash, huquq o'zgarishi yoki jim qilishda kelmaydi.
Kanal posti va izoh
{
"update_id": 505,
"channel_post": {
"message_id": 37,
"sender_chat": {
"id": -1004012345678,
"type": "channel",
"title": "Ob-havo yangiliklari",
"username": "obhavo_news"
},
"chat": {
"id": -1004012345678,
"type": "channel",
"title": "Ob-havo yangiliklari",
"username": "obhavo_news"
},
"date": 1791106200,
"text": "Ertaga Toshkentda +18Β°C, yomg'ir π§"
}
}{
"update_id": 506,
"message": {
"message_id": 3,
"from": {
"id": 5203318874,
"is_bot": false,
"first_name": "Vali",
"username": "vali",
"language_code": "uz"
},
"chat": {
"id": -1007012345678,
"type": "supergroup",
"title": "Ob-havo yangiliklari β comments"
},
"date": 1791106200,
"text": "Rahmat!",
"message_thread_id": 37,
"reply_to_message": {
"message_id": 37,
"chat": {
"id": -1004012345678,
"type": "channel",
"title": "Ob-havo yangiliklari",
"username": "obhavo_news"
},
"date": 1791106200
}
}
}Guruhda xabar yuborish
- sendMessage, sendPhoto, sendDocument, sendVideo, sendAudio β
chat_idmanfiy. Javobdagimessage.chatβ guruh. - Faqat inline klaviatura (reply klaviatura β
400 only inline keyboards are supported in groups). Tugmani istalgan a'zo bosishi mumkin; answerCallbackQuery javobi faqat bosgan odamga ko'rinadi. - Bot admin bo'lmasa, guruhning a'zolar uchun ruxsatlari unga ham amal qiladi ("faqat adminlar yozadi" guruhida bot yoza olmaydi).
- editMessageText, editMessageReplyMarkup β faqat botning o'z xabarlari, 48 soat ichida. Guruhda editMessageText fayl xabarining izohini ham almashtiradi.
- Bot xabari guruhning har bir a'zosining eng so'nggi faol 10 ta qurilmasi uchun shifrlanadi; boshqa botlar uni ko'rmaydi (botlar bir-birini ko'rmaydi). Kimdadir 10 tadan ko'p qurilma bo'lsa, eskiroq telefonlarida bot xabari qulflangan ko'rinadi (o'sha telefonda qayta kirish yoki eski qurilmadan chiqish kerak).
Admin amallari va huquqlar
Har bir amal bajarilganda botning huquqi qayta tekshiriladi. Guruh egasi va adminlariga admin amallari hech qachon qo'llanmaydi. user_id β bot ko'rgan psevdonim id.
| Amal | Metod | Kerakli huquq (ChatMember maydoni) |
|---|---|---|
| Boshqalarning xabarini o'chirish (xizmat xabarlari ham) | deleteMessage | can_delete_messages; xabar β€48 soat; ega/adminniki emas |
| Ban (chetlatish) | banChatMember | can_restrict_members |
| Banni olish | unbanChatMember | can_restrict_members |
| Jim qilish / cheklovni olish | restrictChatMember | can_restrict_members |
| Qadash / olib tashlash | pinChatMessage, unpinChatMessage | can_pin_messages β doim admin huquqi (a'zolarga qadashga ruxsat bor guruhda ham) |
| Nom / tavsif | setChatTitle, setChatDescription | can_change_info |
| Hamma xabarlarni o'qish | β | can_read_all_group_messages (faqat guruh egasi beradi) |
| O'z xabarini yuborish, tahrirlash, o'chirish | send*, edit*, deleteMessage | Huquq kerak emas (a'zolar ruxsati amal qiladi) |
| Ma'lumot | getChat, getChatAdministrators, getChatMember, getChatMemberCount | Huquq kerak emas (guruh a'zosi bo'lish yetarli) |
| Chiqish | leaveChat | β |
"A'zo qo'shish" huquqi botga berilishi mumkin, lekin unga mos metod yo'q. "Admin tayinlash" va "Qo'ng'iroqlarni boshqarish" botlarga berilmaydi (botlarda can_promote_members va can_manage_video_chats doim false; odam-adminlarda β haqiqiy qiymati). Huquq yetmasa: 400 Bad Request: not enough rights to β¦; egasi yoki adminga qo'llansa: can't remove chat owner / user is an administrator of the chat.
Limitlar
Har bir limit bir xil javob beradi: 429 Too Many Requests: retry after N va parameters.retry_after. Rad etilgan so'rov hech narsa qilmagan (xabar yuborilmagan, olgan tokenlari qaytarilgan) β retry_after soniyadan keyin uni qayta yuboring.
| Limit | Qiymat | Oshsa |
|---|---|---|
| Bitta guruh yoki kanalga xabar (bot bo'yicha) | 20 / daqiqa (portlash 20) | 429 + retry_after. Guruhda yuborish, tahrirlash va qadash, kanalda post joylash hisoblanadi. |
| Bot xabarlari (barcha chatlar) | 30 / soniya | 429 |
| Bot API so'rovlari | 50 / soniya (portlash 100) | 429 |
| Shifrlash byudjeti (guruhda yuborish, tahrirlash, qadash) | 1 000 qurilma / soniya bot bo'yicha (portlash 3 000); 1 500 / soniya bot egasi bo'yicha, uning barcha botlari birga (portlash 4 000); 5 000 / soniya umumiy (portlash 10 000) | 429 + retry_after. Narx β qurilmalar soni: har bir odamning β€10 ta qurilmasi + botning o'zi (50 kishi Γ 2 telefon = 101). |
| Odam boshiga qurilmalar | Eng so'nggi faol 10 ta | Eskiroq telefonlarda bot xabari qulflangan ko'rinadi |
| Bir vaqtdagi fayl uzatishlar | 3 ta bot bo'yicha, 16 ta umumiy β yuklab olish va yuklash alohida sanaladi | 429, retry_after: 1. Shaxsiy chatlar ham kiradi; guruh yoki kanalga file_id bilan qayta yuborish β yuklash. |
| Bitta guruhdagi botlar | 20 ta | Botni qo'shib bo'lmaydi |
| Bitta bot a'zo bo'lgan guruh va kanallar | 200 ta (birgalikda) | Botni yana qo'shib bo'lmaydi |
| Guruhdagi shifrlangan faylni yuklab olish | 50 MB | 400 file is too big |
Ko'p a'zo birdan qo'shilsa, har biriga alohida salom yozmang: bir nechta ismni bitta xabarga birlashtiring yoki salomni o'tkazib yuboring.
Guruhdagi fayllar
- Qabul qilish. Bot faylni faqat xabar unga shifrlangan bo'lsa oladi (masalan, izohida buyruq bor rasm yoki "barcha xabarlar" rejimi): xabarda
photo,document,video,audio,voiceyokivideo_notebo'ladi. Fayl kaliti faqat shu bot uchun saqlanadi va faqat faylni yuklagan a'zoning xabaridan olinadi (bot birinchi olgan kalitini saqlab qoladi: keyin boshqa birov uni almashtira olmaydi). - Yuklab olish. getFile va
/file/bot<TOKEN>/β¦β shaxsiy chatdagidek. Server faylni bo'lakma-bo'lak ochib, oqim (stream) bilan beradi: chegara 50 MB,Content-Typedoimapplication/octet-stream(turinimime_typeyoki fayl nomidan aniqlang). - Yuborish. Multipart yoki
file_idβ shaxsiy chatdagi cheklovlar bilan (rasm β€20 MB, boshqalar β€50 MB, rasm qayta kodlanadi va EXIF olib tashlanadi). Server faylni tekshiradi, so'ng uchidan-uchiga shifrlab saqlaydi. - Guruhda olingan
file_id'ni boshqa guruh yoki kanalga qayta yuborish mumkin, lekin shaxsiy chatga β yo'q (wrong file identifier). Guruh yoki kanalgafile_idbilan qayta yuborishda server faylni qayta kodlaydi, shuning uchun u fayl uzatish limitiga yuklash sifatida kiradi. - Chiqarilgan bot o'sha guruh fayllariga kirishni yo'qotadi: kalitlari o'chiriladi, yuklab olishda a'zolik tekshiriladi: getFile β
invalid file_id, yuklab olish β404 file not found, qayta yuborish βwrong file identifier. - Bir vaqtda bot bo'yicha 3 ta yuklab olish va 3 ta yuklash (umumiy 16 tadan); oshsa β
429,retry_after: 1.
Kanallar
Kanalga botni egasi yoki "Admin tayinlash" huquqli admin qo'shadi. Kanalda bot doim admin; huquqlari: post joylash, boshqalarning postlarini tahrirlash, o'chirish, qadash, ma'lumotni o'zgartirish. Rasmiy kanallarga bot qo'shib bo'lmaydi. Kanallar uchidan-uchiga shifrlanmagan.
| Amal | Metod | Huquq |
|---|---|---|
| Post joylash | sendMessage, sendPhoto, sendDocument, sendVideo, sendAudio | can_post_messages; matn β€4096, izoh β€1024 |
| Postni tahrirlash | editMessageText | O'z postlari β doim; boshqalarniki β can_edit_messages |
| Postni o'chirish | deleteMessage | O'z postlari β doim; boshqalarniki β can_delete_messages |
| Izohni o'chirish | deleteMessage (izohlar chati id'si bilan) | can_delete_messages |
| Qadash / olib tashlash | pinChatMessage, unpinChatMessage | can_pin_messages |
| Nom / tavsif | setChatTitle, setChatDescription | can_change_info |
| Ma'lumot | getChat, getChatAdministrators, getChatMember, getChatMemberCount | β |
- Kontent filtri va shartlar. Bot postlari va tahrirlari odamlarning postlari kabi kontent filtridan o'tadi: rad etilsa β
400 Bad Request: <sabab>. Yangi post uchun bot egasi Zamin foydalanish shartlarini qabul qilgan bo'lishi kerak, aks holda403 Forbidden: the bot's owner must accept Zamin's terms of use first. - Postlarda tugma yo'q.
reply_markupbilan yuborish yoki editMessageReplyMarkup β400 Bad Request: channel posts can't have buttons. - Bot izoh yoza olmaydi. Izohlar chatiga yuborish β
400 Bad Request: method is not available for this chat. Izohlarni o'qiy oladi va (huquq bilan) o'chira oladi. - Post oddiy kanal posti bo'lib chiqadi: obunachilar bildirishnoma oladi, javobda
fromyo'q,sender_chatβ kanal. - Bot faqat admin bo'lib turgan vaqtda yangi postlar va izohlarni ko'radi.
- getChatMember kanalda (va izohlar chatida) faqat botning o'zi, kanal egasi va adminlar uchun ishlaydi; boshqa har kim uchun β
400 Bad Request: user not found(Zamin botga kanal obunachilarini oshkor qilmaydi). - leaveChat izohlar chati id'si bilan β
400; kanaldan chiqish uchun kanal id'sini bering.
import os
import requests
TOKEN = os.environ["ZAMIN_BOT_TOKEN"]
API = f"https://api.zamin.app/bot{TOKEN}"
CHANNEL = "@obhavo_news" # ochiq kanal username'i yoki manfiy id (-100...)
post = requests.post(
f"{API}/sendMessage",
json={"chat_id": CHANNEL, "text": "Ertaga Toshkentda +18Β°C, yomg'ir π§"},
timeout=15,
).json()
if not post["ok"]:
raise SystemExit(post["description"]) # masalan: not enough rights to send messages to the chat
message_id = post["result"]["message_id"]
# Tahrirlash va qadash
requests.post(f"{API}/editMessageText", json={"chat_id": CHANNEL, "message_id": message_id, "text": "Ertaga Toshkentda +17Β°C, yomg'ir π§"}, timeout=15)
requests.post(f"{API}/pinChatMessage", json={"chat_id": CHANNEL, "message_id": message_id}, timeout=15)Darslik: moderator bot
Rose uslubidagi to'liq moderator bot β yangi a'zolarni kutib olish, xizmat xabarlarini o'chirish, /warn (3 ta β ban), /mute 10m, /ban, /unban, flood'ga qarshi himoya va /rules: Moderator bot darsligi.
Telegram'dan farqlar
- Guruhlar uchidan-uchiga shifrlangan; botga kelgan xabarlarni server va bot egasi o'qiy oladi (yuqorida).
- "Barcha xabarlarni o'qish" uchun bot admin bo'lishi va guruh egasi bu huquqni aniq berishi kerak;
/setprivacyo'zi buni yoqmaydi va faqat bot qo'shilgan paytda "suratga olinadi". - Boshqa odamlar xabariga
reply_to_messagemazmunsiz keladi; to'liq faqat botning o'z xabari. Havola ko'rinishi, forward manbasi va kontaktlar botga bormaydi. - Qadash uchun bot doim admin
can_pin_messageshuquqiga muhtoj. - Bot izoh yoza olmaydi, kanal postlarida tugma yo'q.
- banChatMember doim muddatsiz; restrictChatMember'da faqat
can_send_messages; unpinChatMessage doim joriy qadalgan xabarni oladi; getChatMember kanalda faqat bot, ega va adminlar uchun. chat_memberfaqat qo'shilish, chiqish, chiqarish va ban'da./setjoingroupskanallarga ham taalluqli.- Guruhda reply klaviatura yo'q; inline rejim, forum mavzulari, ovozli chatlar va taklif havolasi metodlari yo'q.