Asosiy mazmunga o'tish
Socialift
Qo'llanma

Telegram api_id va api_hash: olish, xavfsizlik va qoidalar

api_id va api_hash — Telegram MTProto API'ga ulanadigan ilovangizning kalitlari. Ularni my.telegram.org saytida Telegram raqamingiz bilan kirib, «API development tools» formasini to'ldirib bepul olasiz; bitta raqamga faqat bitta api_id bog'lanadi. Bu kalitlar akkauntga kirish bermaydi: kirish telefon, kod va 2FA paroli orqali bo'ladi, natijasi esa maxfiy sessiya satri.

Yangilangan:

api_id va api_hash nima?

api_id (raqam) va api_hash (satr) — Telegram serveriga «bu so'rov qaysi ilovadan» ekanini bildiradigan identifikator. Ular MTProto orqali login qilishda, masalan auth.sendCode chaqiruvida, telefon raqami bilan birga yuboriladi. Bu foydalanuvchi paroli emas: bitta api_id bilan ko'p akkaunt ulanadi, har biri o'z kodi va sessiyasi bilan.

Bot API uchun api_id kerak emas — u yerda BotFather tokeni yetarli. api_id foydalanuvchi akkaunti nomidan ishlaydigan integratsiyalar uchun kerak: to'liq yozishma tarixi, guruh a'zolari, rejalashtirilgan xabarlar va boshqa botga yopiq imkoniyatlar.

Telegram API'dan foydalanish bepul. Lekin Telegram har bir ilova API Terms of Service qoidalariga rioya qilishini talab qiladi va qoidabuzar ilovaning API'ga kirishini to'xtatishi mumkin.

my.telegram.org'da api_id olish: qadamlar

  1. Rasmiy ilovada akkaunt oching

    Telegram talabi: avval rasmiy Telegram ilovasi orqali ro'yxatdan o'tgan bo'lishingiz kerak. Faol, o'zingizga tegishli raqamdan foydalaning — Telegram muhim dasturchi xabarnomalarini shu raqamga yuboradi.

  2. my.telegram.org'ga kiring

    https://my.telegram.org saytini oching, raqamni xalqaro formatda (+998...) kiriting va kelgan tasdiqlash kodini yozing.

  3. «API development tools» bo'limiga o'ting

    Bu bo'limda yangi ilova yaratish formasi turadi.

  4. Formani to'ldiring

    Ilova nomi, qisqa nomi va boshqa maydonlarni to'ldiring. ToS bo'yicha ilova nomida «Telegram» so'zi bo'lmasligi kerak (faqat «Unofficial» so'zidan keyin kelishi mumkin) va rasmiy Telegram logotipini ishlatib bo'lmaydi.

  5. api_id va api_hash'ni saqlang

    Sahifada api_id, api_hash va MTProto server manzillari chiqadi. Kalitlarni kodga yozmang: TELEGRAM_API_ID va TELEGRAM_API_HASH muhit o'zgaruvchilariga yoki sirlar omboriga joylang.

  6. Socialift'da ulang (ixtiyoriy)

    Kabinetda Kalitlar → Telegram bo'limiga api_id va api_hash'ni kiriting — ular shifrlab saqlanadi va Telegram'da tekshiriladi. So'ng Ulanishlar → Telegram akkaunt'da telefon → kod → kerak bo'lsa 2FA parol bilan akkauntni ulaysiz.

Telegram API Terms of Service: nimalarga e'tibor berish kerak

Rasmiy «Creating your Telegram Application» sahifasi va API Terms of Service'dan asosiy bandlar.

Telegram API Terms of Service: nimalarga e'tibor berish kerak — Platformalar bo'yicha imkoniyatlar jadvali
QoidaNima deyilganAmalda
O'z api_id'ingiz (2.1)Har bir ilova o'z api_id'sini olishi shart. Ochiq kod bilan kelgan namunaviy api_id server tomonida cheklanganBirovning api_id'sini ko'chirmang — namunaviy kalit foydalanuvchilarda API_ID_PUBLISHED_FLOOD xatosini beradi
Foydalanuvchi roziligi (1.4)Foydalanuvchi bilmagan va rozi bo'lmagan holda uning nomidan amal qilish taqiqlangan; «ghost mode» kabi o'qilganlik holatini buzish ham taqiqlanganHar bir avtomatik amalni akkaunt egasi bilishi va rozi bo'lishi kerak
Spam va soxta ko'rsatkichlarFlood, spam, kanal obunachilari yoki ko'rishlar sonini soxtalashtirish uchun API ishlatilsa — abadiy banOmmaviy xabar, ommaviy taklif va «nakrutka» ssenariylaridan voz keching
KuzatuvNorasmiy klient orqali kirgan barcha akkauntlar qoidabuzarlikning oldini olish uchun avtomatik kuzatuv ostiga olinadiAkkauntni haqiqiy odam kabi, me'yorida ishlating
Shaffoflik (2.2–2.4)Foydalanuvchilar ilova Telegram API'dan foydalanishini bilishi kerak; nomda «Telegram» va rasmiy logotip bo'lmaydiOmmaviy ilova bo'lsa, tavsifda buni aniq yozing
Ma'lumot va AI (1.5)Telegram'dan olingan ma'lumotni AI va ML modellarini o'qitish yoki sozlash uchun ishlatish taqiqlanganEksport qilingan yozishmalarni model o'qitishga bermang
Qoidabuzarlik (4.1–4.2)Telegram ilova uchun mas'ul akkauntga xabar beradi; 10 kun ichida tuzatilmasa API'ga kirish to'xtatiladimy.telegram.org'dagi raqamni faol saqlang va xabarnomalarni kuzating

Login oqimi: telefon → kod → 2FA parol

Veb-ilovada login ikki HTTP so'rovga bo'linadi. Birinchi qadam qaytargan phone_code_hash faqat o'sha oraliq sessiya ichida yaroqli, shuning uchun ikkalasini keyingi qadamga uzatasiz.

telegram_login.py
import os
from socialift import TelegramAccount

API_ID = int(os.environ["TELEGRAM_API_ID"])
API_HASH = os.environ["TELEGRAM_API_HASH"]

async def start_login(phone: str) -> dict:
    async with TelegramAccount(api_id=API_ID, api_hash=API_HASH) as tg:
        return await tg.send_code(phone)  # phone_code_hash + oraliq session

async def finish_login(phone: str, code: str, sent: dict, password: str | None = None) -> str:
    async with TelegramAccount(api_id=API_ID, api_hash=API_HASH,
                               session=sent["session"]) as tg:
        result = await tg.sign_in(phone, code, phone_code_hash=sent["phone_code_hash"])
        if result["two_factor_required"]:
            result = await tg.sign_in_password(password)
        return tg.export_session()  # parolga teng — shifrlab saqlang

Akkaunt boshqa qurilmada ochiq bo'lsa, kod Telegram ilovasiga xizmat xabari sifatida kelishi mumkin; ba'zi holatlarda SMS faqat rasmiy ilovalarga yuboriladi. Ikki bosqichli himoya yoqilgan bo'lsa Telegram SESSION_PASSWORD_NEEDED qaytaradi — SDK buni xato emas, two_factor_required: True sifatida beradi. Parol SRP protokoli bilan tekshiriladi.

Telegram login kodini boshqa chatga yuborilgan yoki forward qilingan zahoti bekor qiladi. Shuning uchun foydalanuvchidan kodni hech qachon Telegram xabari orqali so'ramang — faqat ilovangiz formasi orqali.

Saqlangan sessiya bilan qayta ulanish

reconnect.py
import os
from socialift import TelegramAccount

async def get_account() -> TelegramAccount:
    tg = TelegramAccount(api_id=int(os.environ["TELEGRAM_API_ID"]),
                         api_hash=os.environ["TELEGRAM_API_HASH"],
                         session=os.environ["TELEGRAM_SESSION"])
    await tg.connect()
    if not await tg.is_authorized():
        await tg.disconnect()
        raise RuntimeError("Sessiya bekor qilingan — qayta login kerak")
    return tg

connect() faqat ulanishni ochadi va avtorizatsiyani tekshirmaydi — shuning uchun is_authorized() alohida chaqiriladi. Foydalanuvchi sessiyani «Qurilmalar» bo'limidan tugatgan bo'lsa, natija False bo'ladi.

Sessiya satrini xavfsiz saqlash

export_session() qaytargan satr akkauntga to'liq kirish beradi — kod, parol va 2FA'siz.

  • Bazada faqat shifrlangan holda saqlang (masalan, KMS yoki alohida shifrlash kaliti bilan), kalitni baza bilan bir joyda saqlamang.
  • Sessiyani logga, xatolar monitoringiga va brauzerga chiqarmang.
  • Bitta sessiyani bir vaqtda ikki jarayonda ishlatmang: Telegram bitta avtorizatsiyadan parallel asosiy ulanishlarni ko'rsa AUTH_KEY_DUPLICATED beradi va sessiyani bekor qiladi — qayta login kerak bo'ladi.
  • Har bir akkaunt uchun alohida sessiya; bitta satrni serverlar orasida nusxalamang.
  • Kerak bo'lmay qolgan sessiyani log_out() bilan yoping; begona qurilmalarni sessions() va reset_session() bilan tekshirib tugating.
  • Yangi login bo'lganda boshqa sessiyalarga bildirishnoma boradi — akkaunt egasini bundan oldindan ogohlantiring.

Ban va FLOOD_WAIT xavfi: mas'uliyatli foydalanish

Telegram norasmiy klient orqali kirgan akkauntlarni avtomatik kuzatadi. Metod ruxsat etilganidan tez-tez chaqirilsa, server 420 FLOOD_WAIT_X xatosini qaytaradi: X soniya kutmaguncha shu amal qayta bajarilmaydi. Login urinishlari ham cheklangan — bitta raqam uchun kunlik urinishlar soni chegaralangan (Telegram misol sifatida 5 ni keltiradi va qiymat o'zgarishi mumkin).

Xavfni kamaytirish oddiy: amallarni real odam tezligida bajaring, notanish odamlarga ommaviy xabar yubormang va ularni guruhlarga ommaviy qo'shmang, FLOOD_WAIT'da ko'rsatilgan vaqtni kuting va takror urinishni cheksiz qilmang. SDK FLOOD_WAIT'ni RateLimitError ga aylantiradi, kutish soniyasi retry_after da bo'ladi.

Qoidani buzmagan bo'lsangiz-u, akkaunt API ishlatgandan keyin bloklangan bo'lsa, Telegram recover@telegram.org manziliga API bilan nima qilmoqchi ekaningizni tushuntirib yozishni tavsiya qiladi. Xatlarni odam o'qiydi — avtomatik yaratilgan xatlar aniqlanadi va bloklanadi.

FLOOD_WAIT'ni ushlash

flood_wait.py
import asyncio
from socialift import RateLimitError

async def send_report(tg, text: str) -> None:
    try:
        await tg.send_message("@mening_guruhim", text)
    except RateLimitError as exc:        # Telegram: FLOOD_WAIT_X
        if (exc.retry_after or 0) > 300:
            raise                          # uzoq kutish — vazifani keyinga qoldiring
        await asyncio.sleep(exc.retry_after or 5)
        await tg.send_message("@mening_guruhim", text)

SDK uzoq FLOOD_WAIT'ni o'zi kutmaydi — bu qaror sizniki. Uzoq kutishlarni fon vazifalari navbatiga o'tkazish ilovani «muzlatib» qo'ymaydi.

← Blogga qaytish

Ko'p so'raladigan savollar

api_id va api_hash olish pullikmi?

Yo'q. Telegram API'ni bepul taqdim etadi, my.telegram.org'da kalit olish ham bepul. Faqat API Terms of Service qoidalariga rioya qilish shart.

Bitta telefon raqamiga nechta api_id olsa bo'ladi?

Rasmiy hujjatga ko'ra hozircha har bir raqamga faqat bitta api_id bog'lanadi. Lekin bitta api_id bilan istalgancha foydalanuvchi akkaunti login qila oladi — har biri o'z sessiyasi bilan.

api_hash'ni boshqalar bilan bo'lishsa bo'ladimi?

Tavsiya etilmaydi. api_hash ilovangizni identifikatsiya qiladi: u orqali qilingan qoidabuzarlik sizning ilovangiz nomidan hisoblanadi va Telegram xabarnomani ilova uchun mas'ul akkauntga yuboradi. Kalitlarni sirlar omborida saqlang.

Telegram bot uchun api_id kerakmi?

Bot API orqali ishlaydigan bot uchun — yo'q, BotFather tokeni yetarli. Botni MTProto orqali login qilmoqchi bo'lsangiz (auth.importBotAuthorization), u yerda ham api_id va api_hash talab qilinadi.

API ishlatgandan keyin akkauntim bloklandi. Nima qilish kerak?

Agar qoidalarni buzmagan bo'lsangiz, recover@telegram.org manziliga API'dan qanday maqsadda foydalanmoqchi ekaningizni tushuntirib, blokdan chiqarishni so'rab yozing. Xatni o'zingiz yozing: avtomatik yaratilgan xatlar aniqlanadi va bloklanadi.

Sessiya satri o'g'irlansa nima qilaman?

Darhol Telegram ilovasidagi «Qurilmalar» (Devices) bo'limida begona sessiyani tugating yoki SDK'da sessions() va reset_session() dan foydalaning. Keyin yangi sessiyani faqat shifrlangan holda saqlang va sizib chiqish manbasini aniqlang.

Manbalar

  1. Telegram: Creating your Telegram Application (api_id)
  2. Telegram API Terms of Service
  3. Telegram: User Authorization
  4. Telegram: Error handling (FLOOD_WAIT, AUTH_KEY_DUPLICATED)

Bog'liq sahifalar