Asosiy mazmunga o'tish
Socialift
Platforma

Telegram API integratsiyasi

Socialift Telegram'ga ikki xil ulanishni to'liq qo'llab-quvvatlaydi: MTProto orqali akkaunt (Telethon asosida) va Bot API orqali bot. Akkaunt foydalanuvchining o'zi kabi ishlaydi — to'liq yozishma tarixi, guruh a'zolari, kanal statistikasi; bot esa xabar yuborish, moderatsiya va webhook uchun. Ikkalasi ham boshqa platformalar bilan bir xil SDK va bir xil xato modeli ostida.

Yangilangan:

Telegram bot va akkaunt API'sining farqi nima?

Telegram'da ikki xil API bor. Bot API — BotFather bergan token bilan ishlaydigan HTTP interfeys: bot xabar yuboradi, guruhni moderatsiya qiladi, webhook orqali yangilanishlarni oladi. MTProto API esa haqiqiy foydalanuvchi akkaunti nomidan ishlaydi: to'liq yozishma tarixi, guruh a'zolari ro'yxati, kanal statistikasi va botlarga yopiq boshqa imkoniyatlar shu yerda.

Bot foydalanuvchiga birinchi bo'lib yoza olmaydi (odam avval /start bosadi) va guruhning barcha a'zolari ro'yxatini ololmaydi — shuning uchun Socialift akkaunt ulanishini ham qo'llab-quvvatlaydi. Qaysi birini qachon tanlashning batafsil taqqoslanishi quyidagi havolalardagi «Bot API va MTProto» maqolasida.

Akkaunt va bot imkoniyatlari

Akkaunt va bot imkoniyatlari — Platformalar bo'yicha imkoniyatlar jadvali
ImkoniyatAkkaunt (MTProto)Bot (Bot API)
Xabar yuborish, tahrirlash, o'chirish, pinborbor
Fayllar: rasm, video, hujjat, audio, ovozli xabarborbor
Moderatsiya: ban, cheklash, admin tayinlashborbor
Taklif havolalariborbor
Story (hikoya) joylashbor— Premium yoki boost bilanyo'q
Suhbatning to'liq tarixiboryo'q
Guruh a'zolari ro'yxatiboryo'q
Kanal statistikasiboryo'q
Guruh va kanal yaratishboryo'q
SDK'da yo'q metodni chaqirishraw()call()

boryo'q

Izohlar va cheklovlar

Bo'sh kataklar Telegram qoidalaridan kelib chiqadi: Bot API bu imkoniyatlarni botlarga bermaydi. Kanal statistikasini Telegram faqat ma'lum hajmdan katta kanallarning adminlariga beradi — chegara server sozlamasi (can_view_stats belgisi).

Akkauntga kirish: telefon → kod → 2FA

Login uch bosqichdan iborat. Keyin tg.export_session() sessiya satrini qaytaradi — uni o'zingiz shifrlab saqlang va keyingi safar TelegramAccount(session=...) bilan kodsiz ulaning. Kabinetda ulangan akkaunt sessiyasini esa Socialift serverda shifrlab saqlaydi.

telegram_account.py
import asyncio, os
from socialift import TelegramAccount

async def main(session: str | None):
    # session — avval saqlangan sessiya satri yoki None
    async with TelegramAccount(api_id=int(os.environ["TELEGRAM_API_ID"]),
                               api_hash=os.environ["TELEGRAM_API_HASH"], session=session) as tg:
        phone = "+998901234567"
        sent = await tg.send_code(phone)
        result = await tg.sign_in(phone, code="12345", phone_code_hash=sent["phone_code_hash"])
        if result["two_factor_required"]:
            await tg.sign_in_password("...")
        new_session = tg.export_session()  # shifrlab saqlang

        chats = await tg.dialogs(limit=50)
        history = await tg.messages("@durov", limit=50)
        members = await tg.participants("@group", limit=500)
        await tg.send_poll("@group", "Qaysi vaqt qulay?", ["10:00", "15:00"])
        await tg.send_file("me", "photo.jpg", caption="Hisobot")

asyncio.run(main(session=None))

api_id va api_hash my.telegram.org'da olinadi. Akkaunt ulanishi uchun SDK qo'shimcha bilan o'rnatiladi: pip install "socialift[telegram]".

Kabinet va Playground ortidagi Socialift serveri MTProto mijozlari pulini ushlab turadi, shuning uchun u yerda har so'rovda ulanish (handshake) takrorlanmaydi. SDK'da bitta TelegramAccount obyektini qayta ishlating.

Sinov oyida (birinchi 30 kun) token SDK'ning barcha imkoniyatlarini ochadi, TelegramAccount (litsenziyadagi messaging imkoniyati) ham. Uzaytirilgandan keyin imkoniyatlar token rejasiga bog'liq — aniq ro'yxatni kabinetdagi «Tekshirish va muhitlar» ko'rsatadi; kabinet Playground'ida akkaunt metodlari rejadan qat'i nazar ishlaydi.

Akkaunt ulanishi nimalarni qamrab oladi

01

Xabarlar

Yuborish, tahrirlash, o'chirish, forward va pin; reaksiyalar, so'rovnomalar, rejalashtirilgan xabarlar, o'qilgan deb belgilash va «yozmoqda» holati.

02

Fayllar va qidiruv

Fayl yuborish va media yuklab olish; chat ichida va global qidiruv.

03

Guruh va kanal ma'lumotlari

Chat ma'lumoti, a'zolar, adminlar va bloklanganlar ro'yxati, a'zo huquqlari hamda kanal statistikasi.

04

Guruh va kanal boshqaruvi

Guruh va kanal yaratish, qo'shilish, chiqish, o'chirish; nom, tavsif, slow mode, standart huquqlar va chat rasmi.

05

A'zolar va moderatsiya

Taklif qilish, chiqarish, ban va bandan chiqarish, cheklash, admin qilish va adminlikdan olish; limitli taklif havolalari va qo'shilish so'rovlarini ko'rib chiqish.

06

Kontaktlar va sessiyalar

Kontakt qo'shish va o'chirish, bloklash, foydalanuvchining to'liq ma'lumoti, umumiy chatlar, faol sessiyalar ro'yxati va ularni tugatish.

Telegram story'si: kim joylay oladi va qanday shartlar bilan?

Story faqat akkaunt (MTProto) tomonida. Telegram hujjati joylashdan oldin stories.canSendStory ni chaqirishni talab qiladi — SDK'da bu tg.can_send_story(entity), u bo'sh story «slot»lari sonini qaytaradi va shart bajarilmasa aniq xato beradi.

telegram_story.py
import asyncio, os
from socialift import TelegramAccount

async def main(session: str):
    async with TelegramAccount(api_id=int(os.environ["TELEGRAM_API_ID"]),
                               api_hash=os.environ["TELEGRAM_API_HASH"], session=session) as tg:
        print(await tg.can_send_story("me"))
        print(await tg.story_targets())

        await tg.send_story("me", "story.mp4", caption="Yangi mahsulot",
                            period=86400, privacy="contacts")

        active = await tg.stories("me")
        print(active)

asyncio.run(main(os.environ["TELEGRAM_SESSION"]))

Shartlar Telegram tomonida: foydalanuvchi nomidan story joylash uchun akkauntda **Telegram Premium** bo'lishi kerak (aks holda PREMIUM_ACCOUNT_REQUIRED), kanal yoki supergroup nomidan esa sizda post_stories admin huquqi (CHAT_ADMIN_REQUIRED) va kanalga yetarli **boost** (BOOSTS_REQUIRED) kerak. Qaysi kanallar nomidan joylash mumkinligini tg.story_targets() ko'rsatadi, lekin ro'yxatga tushish hali «joylasa bo'ladi» degani emas — can_send_story baribir chaqiriladi.

period — story arxivga tushguncha qancha turishi: 21600 (6 soat), 43200 (12 soat), 86400 (24 soat) yoki 172800 (48 soat). **Premium'siz akkauntda faqat 86400 ishlaydi**, qolganlarini Telegram rad etadi; parametr berilmasa Telegram o'zi 24 soat qo'yadi.

privacy to'rt qiymatni oladi: everyone (standart), contacts, close_friends va selected — oxirgisida allow majburiy. deny istisnolarni qo'shadi («kontaktlar, lekin falonchi emas»). pinned=True bo'lsa story muddat tugagach profilda qoladi.

Media **vertikal** rasm yoki video bo'lishi va 30 MB dan oshmasligi kerak — SDK hajmni yuborishdan oldin mahalliy tekshiradi. Telegram nisbat va uzunlikni hujjatda raqam bilan bermaydi, shuning uchun vertikal bo'lmagan media ilovalarda noto'g'ri qirqiladi.

**Bot API story joylay olmaydi** — bu Telegram cheklovi, hech qanday SDK uni chetlab o'ta olmaydi. Bot faqat o'ziga kelgan story'ga javob bera oladi. Joylangan story'ni tg.edit_story(entity, story_id, caption=...) bilan tahrirlash va tg.delete_story(entity, story_id) bilan o'chirish mumkin.

Bot: token bilan ulanish va istalgan Bot API metodi

Bot ulanishi xabarlar, fayllar (rasm, video, hujjat, audio, ovozli xabar, animatsiya), chat ma'lumoti va sozlamalari, adminlar, a'zo holati, moderatsiya, taklif havolalari, webhook va getUpdates'ni qamrab oladi.

telegram_bot.py
import asyncio, os
from socialift import Telegram

async def main():
    async with Telegram(token=os.environ["TELEGRAM_BOT_TOKEN"]) as bot:
        await bot.send_message("@my_channel", "Salom!")

        # SDK'da alohida metodi bo'lmagan har qanday Bot API metodi
        commands = await bot.call("getMyCommands")
        print(commands)

asyncio.run(main())

Bot API tanani imzolamaydi: set_webhook da secret_token bering va u X-Telegram-Bot-Api-Secret-Token sarlavhasida qaytganini tekshiring. Webhook o'rnatilgan bo'lsa get_updates ishlamaydi. Kabinetda bot ulanganda token getMe bilan tekshiriladi.

bot.call("metodNomi", ...) Bot API'ning istalgan metodini chaqiradi, klientda o'ralmagan nomlar esa avtomatik uzatiladi (bot.getChatMenuButton(...)). Kabinet Playground'idagi universal chaqiruvda logOut va close ataylab bloklangan. Akkaunt tomonida shu vazifani tg.raw(...) bajaradi: u istalgan Telethon TL so'rovini yuboradi.

Telegram integratsiyasini rejalashtirishda

  • Bot foydalanuvchiga birinchi bo'lib yoza olmaydi — suhbat odam /start bosganidan keyin boshlanadi.
  • Guruh a'zolari ro'yxati yoki suhbatning to'liq tarixi kerak bo'lsa, bot emas, akkaunt ulanishini tanlang.
  • Kanal statistikasi faqat siz admin bo'lgan va Telegram can_view_stats ni yoqqan kanallarda mavjud — chegara Telegram serverida belgilanadi.
  • Sessiya satri akkauntga to'liq kirish beradi: uni kodda yoki loglarda qoldirmang, shifrlab saqlang. Kabinet orqali ulangan akkauntlar sessiyasini Socialift serverda shifrlangan holda saqlaydi.
  • Bot webhook'ida bot.set_webhook(url, secret_token=...) bilan o'z secret'ingizni bering va har so'rovda Telegram.verify_webhook(request.headers, secret) bilan tekshiring — Telegram tanani imzolamaydi.
  • Akkaunt oddiy foydalanuvchi kabi ishlaydi: Telegram norasmiy API mijozlari orqali kirgan akkauntlarni avtomatik kuzatuvga oladi, flood va spam uchun esa butunlay bloklaydi. Ommaviy xabar yuborish uchun akkauntni ishlatmang.

Ko'p so'raladigan savollar

Telegram guruhining barcha a'zolarini API orqali olish mumkinmi?

Bot orqali — yo'q: Bot API faqat adminlar ro'yxati, a'zolar soni va alohida a'zo holatini beradi. Akkaunt ulanishi (MTProto) orqali participants() a'zolar ro'yxatini qaytaradi, lekin guruh adminlari ro'yxatni yashirgan bo'lsa (katta guruhlarda mumkin) u to'liq qaytmaydi.

Bot foydalanuvchiga birinchi bo'lib yoza oladimi?

Yo'q. Telegram qoidasiga ko'ra odam avval botga /start yuborishi kerak. Akkaunt oddiy foydalanuvchi kabi ishlaydi: Telegram norasmiy API mijozlari orqali kirgan akkauntlarni avtomatik kuzatuvga oladi, flood va spam uchun esa butunlay bloklaydi. Ommaviy xabar yuborish uchun akkauntni ishlatmang.

Telegram akkauntini ulash xavfsizmi?

Login Telegram'ning o'zida telefon raqami, kod va (yoqilgan bo'lsa) ikki bosqichli parol orqali o'tadi. Kabinet orqali ulansa, hosil bo'lgan sessiya satri serverda shifrlangan holda saqlanadi va brauzerga chiqmaydi; SDK'da uni o'zingiz shifrlab saqlaysiz. Faol sessiyalar ro'yxatini ko'rish va ularni tugatish ham mumkin.

Nega kanal statistikasi kelmayapti?

Telegram statistikani faqat ma'lum hajmdan katta kanallarning adminlariga beradi; aniq chegara server sozlamasi va channelFull.can_view_stats belgisida ko'rinadi. Bu cheklov Telegram API darajasida, Socialift uni chetlab o'ta olmaydi.

SDK'da kerakli metod bo'lmasa-chi?

Bot uchun bot.call("metodNomi") istalgan Bot API metodini chaqiradi (faqat kabinet Playground'idagi universal chaqiruvda logOut va close bloklangan). Akkaunt uchun tg.raw(...) istalgan Telethon TL so'rovini yuboradi.

Socialift Telegram'ning rasmiy hamkorimi?

Yo'q. Socialift — Telegram'ning ochiq Bot API va MTProto API'lari ustida ishlaydigan mustaqil integratsiya qatlami. U Telegram bilan rasmiy hamkorlik maqomiga ega emas.

Manbalar

  1. Telegram — Bot API
  2. Telegram — Bots FAQ
  3. Telegram — Obtaining api_id
  4. Telegram — Channel statistics
  5. Telegram — Stories
  6. Telegram — Client configuration
  7. Telegram — Channels, supergroups and groups

Bog'liq sahifalar

Telegram'ni bugun ulang

Token oling, bot yoki akkauntingizni ulang va birinchi xabarni Playground'dan yuboring.

Bepul token olish →