Asosiy mazmunga o'tish
Socialift
Taqqoslash

Telegram Bot API yoki MTProto: qaysi birini tanlash kerak

Bot API — BotFather tokeni bilan ishlaydigan HTTPS interfeys: sodda va xavfsiz, lekin bot faqat unga kelgan yangi hodisalarni ko'radi. MTProto — Telegram klientlari uchun mo'ljallangan API: foydalanuvchi akkaunti (userbot) tarixni, a'zolar ro'yxatini va 2 GB gacha fayllarni ko'radi, biroq FLOOD_WAIT cheklovlari va ban xavfi bor. Mijozlarga xizmat — bot, o'z akkauntingizni avtomatlashtirish — MTProto.

Yangilangan:

Farq qisqacha

Bot API'da siz bot sifatida ishlaysiz: token bilan, HTTPS orqali, faqat botga ruxsat berilgan doirada. MTProto'da esa odatda oddiy foydalanuvchi sifatida kirasiz: telefon, kod va 2FA orqali, ya'ni Telegram ilovasida qila oladigan deyarli hamma narsani kod orqali qilasiz. Kuch ko'proq — mas'uliyat va xavf ham ko'proq.

Muhim aniqlik: MTProto «userbot» degani emas. Botlar ham MTProto orqali login qila oladi (auth.importBotAuthorization, api_id bilan), lekin shunda ham bot cheklovlari saqlanadi. Amalda «MTProto» deganda ko'pincha foydalanuvchi akkaunti nomidan ishlash nazarda tutiladi — ushbu maqola ham shu ma'noda.

Atamalar

Bot API
api.telegram.org dagi HTTP interfeys. Har so'rov: /bot<token>/metodNomi, javob JSON.
MTProto API
Telegram klientlari uchun mo'ljallangan protokol va API. Ulanish uchun my.telegram.org'dan api_id va api_hash kerak.
Userbot
MTProto orqali avtomatlashtirilgan oddiy foydalanuvchi akkaunti. Rasmiy atama emas, dasturchilar jargoni.
Telethon
MTProto uchun ommabop Python kutubxonasi. Socialift'ning TelegramAccount klienti Telethon ustida qurilgan.
Lokal Bot API server
Telegram'ning ochiq kodli Bot API serverini o'zingizda ishga tushirish: fayl limitlari va webhook cheklovlari kengayadi.

Katta taqqoslash jadvali

Katta taqqoslash jadvali — Platformalar bo'yicha imkoniyatlar jadvali
MezonBot APIMTProto (foydalanuvchi akkaunti)
KirishBotFather tokeniapi_id + api_hash, so'ng telefon → kod → 2FA; natija — sessiya satri
TransportHTTPS + JSON, holatsiz so'rovlarDoimiy MTProto ulanishi, sessiya holati saqlanadi
Birinchi bo'lib yozishYo'q: odam botga yozishi yoki uni guruhga qo'shishi kerakMumkin, lekin maxfiylik sozlamalari va spam cheklovlari amal qiladi
Tarixni o'qishTarix metodi yo'q; faqat yangi update'lar, ular 24 soatgacha saqlanadiTo'liq tarix (guruhda yangi a'zolardan tarix yashirilmagan bo'lsa)
A'zolar ro'yxatiFaqat adminlar, bitta a'zo holati va a'zolar soniRo'yxat bor; kanal obunachilari faqat adminlarga ko'rinadi, adminlar ro'yxatni yashirishi mumkin
Guruh xabarlariPrivacy mode: faqat buyruqlar va javoblar (admin yoki rejim o'chiq bo'lsa hammasi)Akkaunt a'zo bo'lgan chatlardagi hamma narsa
Chatga qo'shilishO'zi qo'shila olmaydi — uni qo'shishadiTaklif havolasi yoki ommaviy @username orqali
Fayl yuborish50 MB (rasm 10 MB); lokal serverda 2000 MB2 GB, Telegram Premium bilan 4 GB
Fayl yuklab olish20 MB; lokal serverda cheklovsizAkkaunt ko'ra oladigan fayllar, 4 GB gacha
Tezlik limitlariHujjatlangan: chatga ~1 xabar/s, guruhga 20/daqiqa, ommaviy ~30/s; oshsa 429 + retry_afterOchiq raqamlar yo'q; oshsa 420 FLOOD_WAIT_X — X soniya kutish
Rejalashtirilgan xabarYo'qBor: Telegram xabarni belgilangan vaqtda o'zi yuboradi
Kanal statistikasiYo'qMa'lum hajmdan katta kanallar adminlari uchun
ToS xavfiPast; asosiy xavf — token sizishiNorasmiy klient akkauntlari kuzatuvda; spam, flood, «nakrutka» — abadiy ban
HostingWebhook (443/80/88/8443) yoki long polling, serverless'ga mosUzoq yashovchi jarayon; bitta sessiyani parallel ishlatib bo'lmaydi (AUTH_KEY_DUPLICATED)
Socialift SDKTelegramTelegramAccount (pip install "socialift[telegram]")

Qaror qabul qilish: vazifa bo'yicha tanlov

Qaror qabul qilish: vazifa bo'yicha tanlov — Platformalar bo'yicha imkoniyatlar jadvali
VazifaTanlovNega
Mijozlarga javob, buyurtma holati, bildirishnomalarBot APIOdam o'zi /start bosadi, tugmalar va webhook bor, ban xavfi past
Minglab obunachiga yangilikKanal + bot (admin sifatida post qiladi)Shaxsiy xabar limitlariga urilmaysiz
O'z guruhingizni moderatsiya qilishBot APIBan, cheklash, qo'shilish so'rovlari botda bor
O'z chatlaringiz tarixini eksport yoki tahlil qilishMTProtoBotda tarix metodi yo'q
O'z guruhingiz a'zolari ro'yxatiMTProto (admin sifatida)Bot API to'liq ro'yxat bermaydi
Kanal postlarini oldindan rejalashtirish, statistikaMTProtoBot API'da yo'q
50 MB dan katta faylMTProto yoki lokal Bot API serverRasmiy Bot API serveri limiti 50 MB
Notanishlarga ommaviy xabar yoki ommaviy taklifHech biriTelegram qoidalariga zid, akkaunt abadiy bloklanishi mumkin

Userbot qonuniymi? Telegram qoidalari nima deydi

Telegram dasturchilarni o'z API'si asosida ilova yaratishga taklif qiladi va buning uchun haq olmaydi. Demak, akkauntni MTProto orqali avtomatlashtirishning o'zi taqiqlanmagan. Lekin shartlar bor: ilova o'z api_id'siga ega bo'lishi, foydalanuvchi bilmagan va rozi bo'lmagan holda uning nomidan amal qilmasligi, Telegram'dan olingan ma'lumotni AI modellarini o'qitishga ishlatmasligi kerak.

Rasmiy sahifada ochiq yozilgan: norasmiy klient orqali kirgan barcha akkauntlar avtomatik kuzatuv ostiga olinadi, flood, spam hamda kanal obunachilari yoki ko'rishlarini soxtalashtirish uchun API ishlatilsa — abadiy ban. Bot API'da ham qoidalar bor, lekin bot bilan eng katta xavf odatda token sizishidir va u BotFather'da /token bilan tuzatiladi.

Ikkalasi bitta loyihada

Ko'p hollarda to'g'ri javob — «ikkalasi»: akkaunt botga yopiq ma'lumotni o'qiydi, bot esa mijozga ko'rinadigan qismini bajaradi.

hybrid.py
import asyncio
from socialift import Telegram, TelegramAccount

async def main():
    async with Telegram.from_env() as bot, TelegramAccount.from_env() as account:
        # Akkaunt: bot ololmaydigan narsa — guruh tarixi bo'yicha qidiruv
        last = await account.messages("@mening_guruhim", limit=100)
        found = await account.search("@mening_guruhim", "narx", limit=100)

        # Bot: hisobotni kanalga bot nomidan joylash (bot kanal admini)
        await bot.send_message("@mening_kanalim",
                               f"Oxirgi {len(last)} ta xabar o'qildi, «narx»: {len(found)} ta")

asyncio.run(main())

Telegram.from_env() TELEGRAM_BOT_TOKEN ni, TelegramAccount.from_env() esa TELEGRAM_API_ID, TELEGRAM_API_HASH va TELEGRAM_SESSION ni o'qiydi.

Limitlar: ikki xil xato — bitta except

Bot API 429 va retry_after qaytaradi, MTProto esa FLOOD_WAIT_X. SDK ikkalasini RateLimitError ga keltiradi; kutish soniyasi ma'lum bo'lsa retry_after da, bo'lmasa zaxira pauza qo'ying.

rate_limit.py
import asyncio
from socialift import RateLimitError

async def send_with_backoff(client, chat, text: str):
    """client — Telegram yoki TelegramAccount."""
    try:
        return await client.send_message(chat, text)
    except RateLimitError as exc:
        await asyncio.sleep(exc.retry_after or 5)
        return await client.send_message(chat, text)

Qachon bot yetmaydi

  • Bot qo'shilishidan oldingi yoki botga ko'rinmagan xabarlarni o'qish kerak.
  • Guruh yoki kanal a'zolarining ro'yxati kerak (faqat son yoki adminlar emas).
  • Kanal statistikasi yoki Telegram o'zi yuboradigan rejalashtirilgan postlar kerak.
  • 50 MB dan katta fayllar va lokal Bot API server ko'tarish imkoni yo'q.
  • Guruh yoki kanal yaratish, havola orqali chatga qo'shilish kabi foydalanuvchi amallari kerak.

← Blogga qaytish

Ko'p so'raladigan savollar

Telethon yoki Bot API — qaysi biri yaxshiroq?

Bular turli vazifalar uchun. Bot API ommaviy xizmat, bildirishnoma va moderatsiyaga qulay va xavfsizroq. Telethon (MTProto) akkaunt nomidan ishlash, tarix, a'zolar ro'yxati va katta fayllar uchun kerak, lekin FLOOD_WAIT va ToS talablariga jiddiyroq e'tibor talab qiladi.

Telegram userbot nima va u taqiqlanganmi?

Userbot — MTProto orqali avtomatlashtirilgan oddiy foydalanuvchi akkaunti. O'zi taqiqlanmagan, lekin Telegram API Terms of Service amal qiladi: foydalanuvchi roziligisiz amal, spam, flood va soxta ko'rsatkichlar taqiqlangan. Norasmiy klient akkauntlari avtomatik kuzatuv ostida.

Bot guruh tarixini o'qiy oladimi?

Yo'q. Bot API'da chat tarixini o'qiydigan metod yo'q: bot faqat yangi update'larni oladi, guruhlarda esa privacy mode tufayli ularning bir qismini. Tarix kerak bo'lsa, guruhga a'zo akkaunt orqali MTProto ishlating.

MTProto orqali qancha hajmdagi fayl yuborish mumkin?

Oddiy akkaunt 2 GB gacha, Telegram Premium akkaunt 4 GB gacha fayl yuklaydi. Bot API'ning rasmiy serverida esa yuborish limiti 50 MB, yuklab olish — 20 MB.

Botni MTProto orqali ishlatsa bo'ladimi?

Ha: auth.importBotAuthorization bot tokeni va api_id bilan login qiladi, keyin ko'pgina MTProto metodlari ishlaydi. Lekin bot cheklovlari saqlanadi. Socialift'da bot uchun Telegram (Bot API), foydalanuvchi akkaunti uchun TelegramAccount klienti bor.

Bitta loyihada ikkalasini ishlatsa bo'ladimi?

Ha, bu keng tarqalgan yondashuv: bot mijozlar bilan gaplashadi va moderatsiya qiladi, akkaunt esa tarix, a'zolar ro'yxati yoki statistika kabi botga yopiq ma'lumotni oladi. SDK'da ikkala klient bir xil xato modeliga ega.

Manbalar

  1. Telegram Bots: botlar foydalanuvchidan nimasi bilan farq qiladi
  2. Telegram Bot API
  3. Telegram Bots FAQ: limitlar
  4. Telegram: Creating your Telegram Application
  5. Telegram: Working with bots (MTProto)
  6. Telegram FAQ: fayl hajmi

Bog'liq sahifalar