Asosiy mazmunga o'tish
Socialift
Hujjatlar bo'limlari
Sozlash

Telegram: bot token va akkaunt uchun api_id/api_hash

Telegram'ga ikki yo'l bilan ulanasiz. Bot — Bot API orqali, @BotFather'dagi /newbot bergan token bilan: u faqat botlarga ruxsat etilganini ko'radi va yangilanishlarni webhook yoki polling orqali oladi. Akkaunt — MTProto orqali: my.telegram.org'da app ro'yxatdan o'tkazib api_id va api_hash olasiz, keyin telefon raqam, kod va kerak bo'lsa 2FA parol bilan kirasiz.

Yangilangan:

Bot yoki akkaunt: qaysi biri kerak?

Mijozlar bilan avtomatlashtirish uchun bot: javoblar, bildirishnomalar, kanalga post, guruh moderatsiyasi — rasmiy, xavfsiz va faqat token kerak. Bot qila olmaydigan ish uchun akkaunt (MTProto): suhbatlar tarixini o'qish, guruh a'zolari ro'yxati, haqiqiy foydalanuvchi nomidan ishlash. Xavfi ham katta: norasmiy API klientidan kirgan akkauntlar kuzatuvga olinadi, spam va flood uchun esa umrbod bloklanadi.

Bot va akkaunt farqi

Bot va akkaunt farqi — Platformalar bo'yicha imkoniyatlar jadvali
Bot (Bot API)Akkaunt (MTProto)
Kalitlar@BotFather bergan tokenmy.telegram.org'dan api_id + api_hash va telefon bilan login
KirishYo'q — token yetarliTelefon → kod → 2FA parol (yoqilgan bo'lsa)
Guruhdagi xabarlarPrivacy mode'da faqat buyruqlar, javoblar va h.k. (o'chirilmasa yoki admin bo'lmasa)Foydalanuvchi ko'rgan hamma narsa
YangilanishlarWebhook (setWebhook) yoki getUpdates — ikkalasi birga emasUlangan klient sessiyasi
Socialift kabinetiUlanishlar → “Telegram bot” (kalit kerak emas)Kalitlar → “Telegram API (my.telegram.org)” + Ulanishlar → “Telegram akkaunt”
Python SDKTelegram(token=...)TelegramAccount(api_id=..., api_hash=..., session=...), pip install "socialift[telegram]"
Nimani sir saqlash kerakTokenapi_hash va sessiya satri

Telegram bot yaratish va token olish

  1. @BotFather'da /newbot yuboring

    Telegram'da @BotFather'ni oching va /newbot buyrug'ini yuboring.

  2. Nom va username tanlang

    Nom kontakt ma'lumotlarida ko'rinadi. Username 5–32 belgi, lotin harflari, raqamlar va pastki chiziq bo'lishi va bot bilan tugashi kerak (masalan, dokon_yordam_bot).

  3. Token'ni saqlang

    BotFather 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw ko'rinishidagi token beradi. Uni bilgan har kim botni boshqara oladi — muhit o'zgaruvchisida saqlang. Sizib chiqsa, BotFather'da /token bilan yangisini oling.

  4. Guruh uchun privacy mode'ni sozlang

    Standart holatda bot privacy mode'da: guruhda faqat unga yo'naltirilgan buyruqlar, unga javoblar, xizmat xabarlarini oladi. Hamma xabarni ko'rishi kerak bo'lsa — /setprivacy → Disable, keyin botni guruhdan chiqarib qayta qo'shing. Admin botlar hamma xabarni baribir oladi.

  5. Webhook o'rnating

    setWebhook HTTPS manzil va 443, 80, 88 yoki 8443 portni talab qiladi. secret_token bering (1–256 belgi: A-Z, a-z, 0-9, _, -) — Telegram uni har so'rovda X-Telegram-Bot-Api-Secret-Token sarlavhasida qaytaradi. Webhook o'rnatilgan bo'lsa getUpdates ishlamaydi; olinmagan yangilanishlar 24 soatdan ortiq saqlanmaydi.

api_id va api_hash olish hamda akkauntga kirish

  1. Rasmiy ilovada akkaunt oching

    api_id olish uchun rasmiy Telegram ilovasida ro'yxatdan o'tgan akkaunt kerak.

  2. my.telegram.org'da app ro'yxatdan o'tkazing

    my.telegram.org'ga telefon raqamingiz bilan kiring → API development tools → formani to'ldiring. Hozircha bitta telefon raqamiga faqat bitta api_id bog'lanadi.

  3. api_id va api_hash'ni ko'chiring

    api_id — raqam, api_hash — 32 ta hex belgi. api_hash'ni hech kimga ko'rsatmang: u bilan sizning ilovangiz nomidan login qilish mumkin.

  4. Telefon, kod va 2FA bilan kiring

    auth.sendCode kod yuboradi: u ko'pincha Telegram ilovasining o'ziga xizmat xabari bo'lib keladi, SMS, qo'ng'iroq yoki boshqa usulda ham kelishi mumkin. Kod phone_code_hash bilan auth.signIn ga beriladi. Akkauntda ikki bosqichli parol yoqilgan bo'lsa SESSION_PASSWORD_NEEDED qaytadi — keyin parol bilan kiriladi. Boshqa seanslarga yangi kirish haqida bildirishnoma boradi.

  5. Sessiyani sir saqlang

    Kirgandan keyingi sessiya satri parolga teng: uni shifrlab saqlang. Keyingi safar u bilan kod so'ralmasdan ulanasiz.

Telegram'ni Socialift kabinetiga ulash

  1. Botni ulang

    “Ulanishlar” → “Telegram bot” kartasiga token'ni qo'yib “Botni ulash” ni bosing. Socialift token'ni darhol getMe bilan tekshiradi — yaroqsizi saqlanmaydi. Privacy mode yoqilgan bo'lsa ogohlantirish chiqadi. Bitta bot faqat bitta Socialift foydalanuvchisiga ulanadi. Bot uchun Kalitlar'da hech narsa kerak emas.

  2. Kerak bo'lsa bot webhook'ini Socialift'ga yo'naltiring

    Playground'dagi “Webhook va universal chaqiruv” bo'limi bot webhook'ini Socialift serveriga har bir bot uchun alohida secret_token bilan o'rnatadi. Botda bitta webhook manzili bo'ladi: bu sizning serveringiz o'rnatgan manzilni almashtiradi (va aksincha).

  3. Akkaunt uchun kalit qo'ying

    “Kalitlar” → “Telegram API (my.telegram.org)” kartasiga api_id va api_hash ni yozib “Saqlash va tekshirish” ni bosing. Socialift formatni tekshiradi va MTProto auth.exportLoginToken bilan juftlikni Telegram'da sinaydi — telefon so'ralmaydi; API_ID_INVALID bo'lsa kalit rad etiladi. O'z kalitingiz bo'lmasa, mavjud bo'lsa Socialift kaliti ishlatiladi.

  4. Akkauntni ulang

    “Ulanishlar” → “Telegram akkaunt”: telefon raqam (+998901234567) → “Kod yuborish” → kod (odatda Telegram ilovasiga keladi, SMS emas) → “Tasdiqlash” → 2FA yoqilgan bo'lsa parol → “Kirish”. Oraliq login holati taxminan 10 daqiqa yashaydi.

  5. Uzish

    Akkaunt uchun “Uzish” Telegram tomonida ham seansni tugatadi — sessiya nusxasi sizib chiqqan bo'lsa ham u endi ishlamaydi.

Bot: token va webhook Python SDK'da

Telegram.from_env() TELEGRAM_BOT_TOKEN ni o'qiydi.

telegram_bot.py
import asyncio
import os

from socialift import Telegram


async def main() -> None:
    # TELEGRAM_BOT_TOKEN, SOCIALIFT_LICENSE_KEY
    async with Telegram.from_env() as bot:
        me = await bot.get_me()  # token to'g'riligini tekshirishning eng arzon yo'li
        print(me["username"], me.get("can_read_all_group_messages"))
        await bot.set_webhook(
            "https://siz.uz/tg",
            secret_token=os.environ["TG_WEBHOOK_SECRET"],
            allowed_updates=["message"],
        )


asyncio.run(main())

Aniq ko'rinishda: Telegram(token="123456789:AA..."). Kelgan so'rovni socialift.webhooks.verify_telegram_request(headers, secret_token) bilan tekshiring — Telegram tanani imzolamaydi, himoya faqat shu sarlavha.

Akkaunt: api_id, api_hash va login Python SDK'da

pip install "socialift[telegram]" kerak. TelegramAccount.from_env() TELEGRAM_API_ID, TELEGRAM_API_HASH va TELEGRAM_SESSION ni o'qiydi.

telegram_login.py
import asyncio
import os
from getpass import getpass

from socialift import TelegramAccount


async def main() -> None:
    phone = "+998901234567"
    async with TelegramAccount(api_id=os.environ["TELEGRAM_API_ID"],
                               api_hash=os.environ["TELEGRAM_API_HASH"]) as tg:
        sent = await tg.send_code(phone)
        result = await tg.sign_in(phone, code=input("Kod: "), phone_code_hash=sent["phone_code_hash"])
        if result.get("two_factor_required"):
            await tg.sign_in_password(getpass("2FA parol: "))
        print(tg.export_session())  # parolga teng — shifrlab saqlang


asyncio.run(main())

Keyingi ishga tushirishda: TelegramAccount(api_id=..., api_hash=..., session=saqlangan_sessiya) — kod so'ralmaydi.

Ko'p uchraydigan xatolar

  • Bot token kodda, repozitoriyda yoki log'da qolgan.
  • Bot guruhda xabarlarni ko'rmayapti — privacy mode yoqilgan yoki /setprivacy dan keyin bot guruhga qayta qo'shilmagan.
  • Webhook o'rnatilgan holda getUpdates chaqirilyapti.
  • Webhook secret_token siz — manzilni bilgan har kim soxta yangilanish yubora oladi.
  • Webhook qo'llab-quvvatlanmaydigan portda yoki HTTP'da.
  • Bitta bot uchun webhook ham o'z serveringizda, ham Socialift'da o'rnatilgan — oxirgi setWebhook g'olib.
  • api_hash ochiq joyda yoki sessiya satri shifrlanmagan holda saqlangan.
  • Akkauntdan ommaviy xabar yuborish yoki flood — umrbod blok xavfi.
  • Kod SMS'da kutilyapti, u esa Telegram ilovasiga kelgan.

Ko'p so'raladigan savollar

Telegram bot token qanday olinadi?

@BotFather'ga /newbot yuboring, nom va bot bilan tugaydigan username bering — BotFather token qaytaradi. Token botni to'liq boshqarish huquqini beradi, shuning uchun uni sir saqlang; sizib chiqsa /token bilan yangisini oling.

api_id va api_hash qayerdan olinadi?

my.telegram.org'ga telefon raqamingiz bilan kiring, API development tools bo'limida formani to'ldiring — api_id va api_hash chiqadi. Bitta telefon raqamiga hozircha bitta api_id bog'lanadi.

Nega bot guruhdagi xabarlarni ko'rmaydi?

Botlar standart holatda privacy mode'da ishlaydi va guruhda faqat buyruqlar, ularga javoblar va xizmat xabarlarini oladi. BotFather'da /setprivacy → Disable qiling va botni guruhga qayta qo'shing yoki botni admin qiling.

Webhook va getUpdates'ni birga ishlatsa bo'ladimi?

Yo'q. Webhook o'rnatilgan paytda getUpdates ishlamaydi. Polling'ga o'tish uchun avval deleteWebhook chaqiring (SDK'da bot.delete_webhook()).

Shaxsiy Telegram akkauntini API'ga ulash xavfsizmi?

Texnik jihatdan mumkin, lekin ehtiyot bo'ling: norasmiy API klientlari orqali kirgan akkauntlar avtomatik kuzatuvga olinadi, flood, spam va soxta obunachi/ko'rish uchun esa umrbod blok beriladi. Sessiya satri va api_hash'ni parol kabi saqlang.

Socialift'da bot uchun Kalitlar kerakmi?

Yo'q. Bot “Ulanishlar” → “Telegram bot” da faqat BotFather token'i bilan ulanadi. Kalitlar'dagi “Telegram API (my.telegram.org)” kartasi faqat akkaunt (MTProto) ulash uchun.

Manbalar

  1. Telegram: Bot features — BotFather, privacy mode
  2. Telegram Bot API: setWebhook
  3. Telegram: Obtaining api_id
  4. Telegram: User authorization

Bog'liq sahifalar