PL

API Telegram w Pythonie: Bot API, MTProto i Powiązane Konta

Przewodnik wdrażania języka Python

The Telegram API w Pythonie przewodnik: działający kod dla każdego podejścia

Przewodnik "code-first" po API bota Telegram w Pythonie: sendMessage rozmowa z żądania, minimalnym botem z python-telegram-bot, prawdziwe połączone konto przy użyciu Telethon, Pyrogram lub Unipile SDK oraz jak obsługiwać limity zapytań (rate limits), aby Twój skrypt nie uległ awarii przy pierwszym 429. Niezależnie od tego, czy trafiłeś tu w poszukiwaniu API bota Telegram w Pythonie przykład czy całość telegram api python ilustracja, każde z poniższych podejść dostarcza działający kod.



telegram_bot.py
import żądania ŻETON = "123456:ABC-twoj-token-bota" url = f"https://api.telegram.org/bot{TOKEN}/sendMessage" ładunek = { "chat_id": 123456789, "tekst": "Witaj z Pythona", "tryb_analizy": "MarkdownV2" } response = żądania.stanowisko(url, json=payload) print(odpowiedź.json())
200 OK: wiadomość wysłana
Przewodnik decyzyjny

Trzy sposoby na zbudowanie API Telegrama w Pythonie i który z nich wybrać

Gdy masz już dane uwierzytelniające, istnieją trzy konkretne sposoby na komunikację z Telegramem z poziomu kodu w Pythonie. Nie są to zamienne biblioteki do tego samego zadania: każda uwierzytelnia się jako inny rodzaj nadawcy, przy użyciu innego kodu i z innymi ograniczeniami.
API bota Telegram w Pythonie
Token bota od BotFather, wywołany w Pythonie za pomocą żądania lub bibliotekę owijającą (wrapper), taką jak python-telegram-bot. Najszybszy sposób wysyłki, ale bot może napisać do użytkownika tylko wtedy, gdy ten najpierw do niego napisał.
Najlepsze do powiadomień i botów wsparcia
Telethon / Pyrogram (MTProto)
Biblioteka kliencka języka Python obsługująca bezpośredni protokół Telegramu za pomocą własnego api_id oraz api_hash. Loguje się jako prawdziwe konto, ale jesteś właścicielem pamięci masowej sesji, ponownych połączeń i procesu 2FA.
Najlepsze do w pełni niestandardowego klienta Python
Zestaw SDK języka Python dla UnipileUnipile
Połączone konto, wywoływane z Pythona za pomocą kilku linijek SDK zamiast surowego klienta MTProto. Brak plików sesji do utrwalenia, brak gałęzi 2FA do samodzielnego pisania.
Najlepsze do szybkiego wysyłania bez posiadania MTProto
Ta sekcja dotyczy kodu w języku Python po uzyskaniu poświadczeń. Pełne zestawienie różnic pomiędzy Bot API a Telegram Client API (limity, tożsamość, co każde z nich może i czego nie może zrobić) można znaleźć w naszym dedykowanym porównaniu: Telegram Bot API kontra Telegram API. W celu uzyskania tokenu bota lub api_id / api_hash przede wszystkim spójrz na instrukcja dostępu krok po kroku.


Zbuduj swoją integrację w Pythonie
Samouczek kodu

Interfejs API bota Telegram w języku Python za pomocą biblioteki requests

Najbardziej bezpośredni sposób na wywołanie API bota Telegram w Pythonie czy zwykłe żądanie HTTP z żądania, bez żadnej biblioteki owijającej. Od wersji Bot API 10.2 (14 lipca 2026 r.) token bota od BotFather i dwa parametry to wszystko, czego sendMessage wymaga.
1
Pobierz token bota, a następnie wywołaj sendMessage
BotFather wydaje token w kształcie 123456:ABC-your-bot-token. Każde wywołanie Bot API, w tym sendMessage, jest POST do https://api.telegram.org/bot<TOKEN>/sendMessage z treścią JSON.



send_message.py
import osi import żądania ŻETON = Myślę, że chodzi Ci o skrót "os.". Jeśli tak, to na język polski możemy go przetłumaczyć na kilka sposobów, w zależności od kontekstu: * **Osoba** (np. w spisie rzeczy: "os. do kontaktu" - osoba do kontaktu) * **Okręt podwodny** (w kontekście wojskowym) * **Oś** (w kontekście technicznym lub geometrycznym) Bez dodatkowego kontekstu trudno mi podać dokładne tłumaczenie.środowisko["TELEGRAM_BOT_TOKEN"] Adres URL = f"https://api.telegram.org/bot{TOKEN}/sendMessage" ładunek = { "chat_id": 123456789, "tekst": "Twoje zamówienie nr #4821 zostało wysłane.", "tryb_analizy": "MarkdownV2" } response = żądania.stanowisko(URL, json=payload, timeout=10)
2
Sprawdź odpowiedź, nie zakładaj, że zadziałało
Bot API zawsze odpowiada treścią w formacie JSON zawierającą ok wartość logiczna. Nie-200 kod statusu lub ok: false oznacza, że wiadomość nie została wysłana, a ładunek zawiera czytelny dla człowieka opis zalogować.



send_message.py
dane = odzew.json() jeśli response.status_code == 200 oraz dane.uzyskać("ok"): id_wiadomosci = data["wynik"]["id_wiadomości"] print(f"wysłano, message_id={message_id}") inaczej: print(f"niepowodzenie: {data.get('description')}")
ParametrTypOpis
chat_id Wymaganyint lub strIdentyfikator czatu docelowego lub @username na kanał publiczny.
text WymaganystrTekst wiadomości, od 1 do 4096 znaków po analizie encji.
tryb parsowania OpcjonalniestrMarkdownV2 lub HTML, aby wyrenderować pogrubienie, linki i formatowanie kodu w tekście.
wyłącz_powiadomienie Opcjonalnietyp logicznyWysyła wiadomość po cichu, bez dźwięku powiadomienia push.
parametry_odpowiedzi OpcjonalniesłownikWysyła wiadomość jako odpowiedź na istniejącą wiadomość na czacie.


Przekrocz limit przeznaczony wyłącznie dla botów
Samouczek kodu

API bota Telegram w Pythonie przy użyciu python-telegram-bot

Surowy żądania połączenia działają dobrze dla pojedynczej wiadomości wychodzącej. Poza tym większość baz kodu w Pythonie owija Telegram Bot API w python-telegram-bot, biblioteka, która zamienia te same punkty końcowe HTTP w asynchroniczny model obiektowy języka Python z wbudowanym odpytywaniem o aktualizacje.
Co biblioteka dodaje w porównaniu do czystych żądań (requests)
An Zastosowanie obiekt zarządzający pętlą aktualizacji za Ciebie (odpytywanie lub webhook)
Metody typowane jak bot.send_message() zamiast ręcznie przygotowywanych ładunków JSON
Obsługa poleceń i wiadomości, czyli odpowiadanie na /start jest dekoratorem, a nie pętlą
Parametry są takie same jak omówione powyżej: chat_id, text, tryb parsowania. Biblioteka nadal nie pozwala na to, aby bot napisał do użytkownika jako pierwszy – ta restrykcja wynika z regulaminu platformy Telegram, a nie z klienta, którego używasz do jej wywołania.



bot.py
z telegram import Aktualizacja z telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes asynchroniczny def start(update: Update, context: ContextTypes.DEFAULT_TYPE): czekać kontekst.bot.wyślij_wiadomość( chat_id=update.effective_chat.id, tekst="Pozdrowienia z python-telegram-bot", tryb_analizy="MarkdownV2" ) aplikacja = ApplicationBuilder().token("123456:ABC-twoj-token-bota").budować() app.add_handler(Element obsługi poleceń("start", start)) aplikacja.uruchom_odpytywanie()
Klient API / MTProto

Prawdziwe konto użytkownika w Pythonie: Telethon i Pyrogram

Wysyłanie jako prawdziwe konto na Telegramie z poziomu Pythona, a nie jako bot, oznacza korzystanie z API klienta za pomocą api_id oraz api_hash z my.telegram.org. Dwie biblioteki w Pythonie zajmują się trudną stroną protokołu MTProto: Telethon i Pyrogram.
Python

Telethon

Czysto pythonowa implementacja MTProto oparta na async/await, z interfejsem API klienta, który przypomina zwykły język Python zamiast surowych wywołań protokołu.
Python

Pyrogram

Kolejny klient Pythona MTProto z własnym podejściem do obsługi sesji i interfejsem zaprojektowanym tak, aby przypominał konwencjonalny zestaw SDK, a nie bibliotekę protokołu.



telethon_client.py
z telethon import TelegramClient z telethon.errors import SessionPasswordNeededError api_id = 1234567 api_hash = "twój_api_hash_z_my.telegram.org" # "my_account" to nazwa pliku sesji na dysku, która jest ponownie wykorzystywana przy każdym uruchomieniu klient = TelegramClient("moje_konto", api_id, api_hash) asynchroniczny def główny(): czekać klient.start(telefon="+15551234567") czekać klient.wyślij_wiadomość("nazwa_użytkownika_lub_id", "Pozdrowienia od Telethon") z klient: client.loop.uruchom_do_zakończenia(main())
Ściana 2FA, z którą musi sobie radzić każde samodzielnie zbudowane logowanie
1
Wyślij kod logowania
client.start(phone=...) wrapy auth.sendCode, który wysyła kod logowania wiadomością tekstową na numer telefonu i zwraca hash_kodu_telefonu używane do następnej rozmowy.
2
Zweryfikuj kod
Biblioteka pyta o kod i wywołuje auth.signIn z tym. W tym momencie kończy się implementacja uwzględniająca wyłącznie optymistyczny scenariusz.
3
Wymagane hasło sesji
Jeśli konto ma włączone uwierzytelnianie dwuskładnikowe, Telegram odpowiada za pomocą Błąd 400: Wymagane hasło sesji. Telethon porusza tę kwestię jako SessionPasswordNeededError, oczekiwana gałąź, a nie błąd do wykrycia i zignorowania.
4
Wyjaśnij to za pomocą hasła do chmury
Przekazywanie hasła chmurowego konta do client.start(password=...) uruchamia giełdę SRP i auth.checkPassword dla Ciebie. Bezpośrednie wywoływanie surowej warstwy MTProto oznacza budowanie InputCheckPasswordSRP sprzeciwić się sobie.
Zachowaj sesję lub zaloguj się przy każdym uruchomieniu
Zarówno Telethon, jak i Pyrogram zapisują lokalny plik sesji (lub w pamięci StringSession) po pierwszym udanym logowaniu. Zgub go lub wdróż bez utrwalania, a Twój skrypt będzie musiał ponownie przechodzić przez proces podawania kodu telefonicznego i 2FA przy każdym uruchomieniu.
Błędy, których można się spodziewać na tej ścieżce
WYMAGANE_HASŁO_SESJI
NIEPRAWIDŁOWY_HASH_HASŁA
API_ID_PUBLISHED_FLOOD
Tylko własne, oficjalne aplikacje Telegrama otrzymują dostarczanie kodów SMS opartych na Firebase. Skrypt w Pythonie również potrzebuje własnego api_id z my.telegram.org: ponowne użycie przykładowego ID dostarczonego w kodzie źródłowym przykładu uruchamia API_ID_PUBLISHED_FLOOD dla użytkowników końcowych i tylko jednego api_id jest wydawany na jeden numer telefonu.
Podejście Unipile
Pełną listę możliwości Telegrama udostępnianych przez Unipile można znaleźć w Strona produktu API Telegramu.

Prawdziwe konto Telegram w Pythonie bez pisania w MTProto

Zestaw SDK Unipile dla języka Python łączy istniejące konto użytkownika Telegramu za pomocą własnego systemu Telegramu Urządzenia funkcja, czy to skanowanie kodu QR, czy Hosted Auth z dostawcy: "TELEGRAM". Nie ma api_id, brak pliku sesji do zachowania oraz brak WYMAGANE_HASŁO_SESJI gałąź do samodzielnego napisania: powiązane konto wyświetla się jako połączony lub też nie.
Po powiązaniu konta wysłanie wiadomości z poziomu Pythona to zaledwie kilka wywołań SDK, z których wszystkie działają na infrastrukturze Unipile v2 API w środku. Rozpocznij czat pobiera identyfikator powiązanego konta oraz identyfikatory_użytkowników lista i albo otwiera nową konwersację, albo dostarcza do istniejącej, jeśli czat z tym odbiorcą już istnieje.
Nie api_id / api_hash sparować, aby zażądać lub obrócić
Brak pliku sesji, brak uzgadniania SRP, brak gałęzi 2FA w Twoim kodzie
Ta sama obsługa statusu konta w zarządzaniu uczestnikami grupy
Instalacja zestawu SDK nie jest tu omawiana, ponieważ dokładną nazwę pakietu najlepiej potwierdzić w aktualnej dokumentacji, patrz developer.unipile.com/docs/getting-started dla kroku instalacji oraz pełnej dokumentacji języka Python.
Każda funkcja pokazana tutaj jest wyszczególniona punkt po punkcie w Strona produktu API Telegram Unipile, w tym to, co jest obsługiwane, a co nie.



send_telegram.py
import unipile konfiguracja = unipile.Konfiguracja() configuration.api_key["apiKey"] = "klucz API" klient_api = unipile.KlientApikonfiguracja interfejs API przesyłania wiadomości = unipile.API wiadomości(klient_api) czat = interfejs API przesyłania wiadomości.Rozpocznij czat( "acc_123456789", {"identyfikatory_użytkowników": ["0123456789"], "tekst": "Cześć, nawiązuję do Twojej prośby."} )
Czego nie obejmuje integracja Unipile z Telegramem
Kanały, społeczności i transmisje
Zarządzanie grupą: zatwierdzanie lub awansowanie członków
Archiwizacja czatów
Połączenia głosowe i wideo
Twórz za pomocą zestawu Python SDK
Błędy i limity

Obsługa błędów i limitów zapytań w języku Python

Skrypt wysyłający jedną wiadomość na czacie testowym i skrypt uruchomiony na produkcji natrafiają na różne problemy. Ten drugi w końcu dostaje 429 lub lub FLOOD_WAIT_X, a to, co Twój kod w Pythonie zrobi dalej, decyduje, czy będzie to pięciosekundowa pauza, czy zbanowane konto.
1/s
Maksymalna liczba wiadomości z API bota do tego samego czatu indywidualnego
20/min
Maksymalna liczba wiadomości API bota w jednej grupie
~30/s
Szacowany limit API bota podczas wysyłania wiadomości masowych do czatów
429
Status zwracany po przekroczeniu któregokolwiek z tych limitów
Pętle ponawiania dla obu stron API
API bota i API klienta sygnalizują ten sam problem za pomocą dwóch różnych struktur. Obie muszą być wyłapywane w sposób jawny, a nie logowane i ponawiane na ślepo.



bot_api_retry.py
import czas import żądania def wyślij_z_ponowieniem(url, payload, max_retries=3): dla próba w zakres(maks_ponowienia): r = żądania.stanowisko(url, json=payload) jeśli r.status_code != 429: return r spróbuj_ponownie_za = r.json().uzyskać("parametry", {}).uzyskać("ponów_po", 1) czas.sen(spróbuj_ponownie_za) wzrastać Błąd wykonania("zbyt wiele odpowiedzi 429")



telethon_flood_wait.py
z telethon.errors import FloodWaitError import asyncio asynchroniczny def wyślij_bezpiecznie(klient, podmiot, tekst): próbuj: czekać klient.wyślij_wiadomość(podmiot, tekst) oprócz FloodWaitError jako e: # e.seconds to wartość FLOOD_WAIT_X zwrócona przez Telegram czekać asyncio.sen(e.sekundy) czekać klient.wyślij_wiadomość(podmiot, tekst)
Wskazówki dotyczące tempa, które od początku utrzymują Cię w granicach limitów
Unikaj wysyłania dużych ilości z całkiem nowe konta, są oznaczane szybciej niż te ugruntowane.
Zwiększyć wolumen wysyłki stopniowo zamiast uruchamiać skrypt z pełną przepustowością.
Zachowaj co najmniej 10 do 20 sekund między wiadomościami wysyłanymi z tego samego konta, to jest własne zalecenie Unipile dotyczące połączonych kont, a nie tylko górny limit Bot API.
Podsumowanie

Python Telegram Bot API kontra Telethon/Pyrogram kontra Unipile SDK

To samo podsumowanie w formie tabeli: czego faktycznie wymaga każda ścieżka Pythona i gdzie się kończy.
WymiarBot API (requests / python-telegram-bot)Telethon / Pyrogram (MTProto)Zestaw SDK języka Python dla Unipile
Może najpierw napisać do użytkownikaNieTak, zależne od prywatnościTak
Wymaganie dotyczące konfiguracjiToken bota od BotFatherapi_id / api_hash z my.telegram.orgPowiązane konto za pomocą kodu QR lub Uwierzytelniania Hostowanego
Zarządzanie sesjamiOparte na tokenach, brak konieczności utrwalaniaSamodzielnie zapisujesz plik sesjiZarządzane za pomocą funkcji Urządzenia Telegramu
2FA / WYMAGANE_HASŁO_SESJINie dotyczyObsługujesz wymianę SRPZadbano o ciebie
Uczestnicy grupy (pobierz / dodaj / usuń)Ograniczone do uprawnień botaTak, samoróbkaTak, dedykowane punkty końcowe w wersji 2
Kanały, społeczności, transmisjeTak, jeśli dodano jako administratorTakNieobsługiwane
Najlepszy dlaPowiadomienia i boty wsparciaW pełni niestandardowy klient MTProto w języku PythonSzybkie wdrażanie bez posiadania MTProto
Może najpierw napisać do użytkownika
API botaNie
Telethon / PyrogramTak, zależne od prywatności
SDK UnipileTak
Wymaganie dotyczące konfiguracji
API botaToken bota
Telethon / Pyrogramapi_id / api_hash
SDK UnipilePowiązane konto
Zarządzanie sesjami
API botaBrak danych do utrwalenia
Telethon / PyrogramTrwała sesja
SDK UnipileZarządzane przez Urządzenia
2FA / WYMAGANE_HASŁO_SESJI
API botaNie dotyczy
Telethon / PyrogramSamodzielnie zbudowany SRP
SDK UnipileZadbano o ciebie
Uczestnicy grupy (pobierz / dodaj / usuń)
API botaOgraniczone do uprawnień bota
Telethon / PyrogramWłasnoręcznie zbudowany
SDK UnipileDedykowane punkty końcowe v2
Kanały, społeczności, transmisje
API botaTak, jako administrator
Telethon / PyrogramTak
SDK UnipileNieobsługiwane
Najlepszy dla
API botaPowiadomienia, boty wsparcia
Telethon / PyrogramW pełni niestandardowy klient
SDK UnipileSzybka wysyłka, brak MTProto

API Telegrama w Pythonie – FAQ

Częste pytania dotyczące interfejsu API bota Telegram w języku Python, bibliotek python-telegram-bot, Telethon, Pyrogram oraz łączenia prawdziwego konta za pomocą Unipile.

Tak. Ten Telegram Bot API to prosty interfejs HTTP, więc pojedynczy POST za pomocą Pythona żądania biblioteka do https://api.telegram.org/bot<TOKEN>/sendMessage, z chat_id oraz text w treści żądania JSON, to występuje. Do tego wywołania nie jest wymagany żaden pakiet SDK ani biblioteka owijająca.

The Telegram Bot API jest własnym interfejsem HTTP Telegrama, wywoływanym z Pythona za pomocą żądania lub dowolnego klienta HTTP. python-telegram-bot jest biblioteką języka Python innego producenta, która owija te same punkty końcowe HTTP w asynchroniczny model obiektowy, z Zastosowanie klasowe, typowane metody takie jak bot.send_message, i wbudowane odpytywanie o aktualizacje lub obsługa webhooków.

To jest strukturalna zasada interfejsu Bot API, a nie błąd w Twoim kodzie. Bot nie może wywołać sendMessage przeciwko chat_id dopóki ten użytkownik nie wyśle najpierw przynajmniej jednej wiadomości do bota. Żaden parametr ani biblioteka Pythona tego nie obchodzi. Prawdziwe powiązane konto Telegram, za pośrednictwem Telethon, Pyrogram lub SDK Unipile, nie ma tego ograniczenia.

Nie. API botów potrzebuje jedynie tokenu bota wydanego przez BotFather. api_id oraz api_hash z my.telegram.org są wymagane dla Client API (MTProto), czyli protokołu używanego przez Telethon, Pyrogram oraz każdego klienta logującego się na konto prawdziwego użytkownika zamiast bota.

WYMAGANE_HASŁO_SESJI to błąd 400 zwracany przez Telegram auth.signIn kiedy na koncie włączone jest uwierzytelnianie dwuskładnikowe. Telethon zgłasza to jako SessionPasswordNeededError. Wyczyszczenie go oznacza uruchomienie protokołu SRP i wywołanie auth.checkPassword za pomocą hasła chmurowego konta, z którym radzą sobie zarówno Telethon, jak i Pyrogram, gdy przekazujesz hasło do ich metody logowania.

Bot API zwraca 429 status po przekroczeniu około jednej wiadomości na sekundę do tego samego czatu, 20 wiadomości na minutę w grupie lub około 30 wiadomości na sekundę podczas nadawania w wielu czatach. Odpowiedź zawiera spróbuj_ponownie_za wartość w sekundach. Po stronie MTProto odpowiednikiem jest POWÓDŹ 420 błąd czy FLOOD_WAIT_X wyjątek, gdzie X to liczba sekund oczekiwania przed ponowną próbą.

Tak. Ten Zestaw SDK języka Python dla Unipile łączy istniejące konto użytkownika Telegrama za pomocą własnej funkcji Urządzeń Telegrama, poprzez skanowanie kodu QR lub uwierzytelnianie hostowane (Hosted Auth), i udostępnia obsługę wiadomości za pomocą kilku wywołań SDK, takich jak Rozpocznij czat. Nie ma api_id do przesłania, bez implementacji MTProto i bez gałęzi pliku sesji lub 2FA do samodzielnego pisania.

Zarządzanie uczestnikami grupy jest obsługiwane: wyszczególnianie, dodawanie i usuwanie uczestników za pomocą dedykowanych v2 punkty końcowe. Kanały, społeczności, transmisje, działania administracyjne grupy, takie jak zatwierdzanie lub awansowanie członków, archiwizowanie czatów oraz połączenia głosowe lub wideo, nie są obsługiwane.

Masz jeszcze jakieś pytania? Nasz zespół służy pomocą.

Porozmawiaj z ekspertem
API Telegrama w Pythonie, jak należy to robić

Zbuduj integrację Pythona z API bota Telegram za pomocą Unipile

Pomiń pliki sesji MTProto, pomiń ograniczenie wyłącznie do botów. Połącz istniejące konto Telegram za pomocą zestawu SDK języka Python firmy Unipile i zintegruj je z WhatsApp, LinkedIn, Instagramem, Gmailem, Outlookiem i protokołem IMAP w jednym interfejsie API.