The Telegram API w Pythonie przewodnik: działający kod dla każdego podejścia
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.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())Trzy sposoby na zbudowanie API Telegrama w Pythonie i który z nich wybrać
żą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ł.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.api_id / api_hash przede wszystkim spójrz na instrukcja dostępu krok po kroku.Zbuduj swoją integrację w Pythonie
Interfejs API bota Telegram w języku Python za pomocą biblioteki requests
żą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.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.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)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ć.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')}")| Parametr | Typ | Opis |
|---|---|---|
chat_id Wymagany | int lub str | Identyfikator czatu docelowego lub @username na kanał publiczny. |
text Wymagany | str | Tekst wiadomości, od 1 do 4096 znaków po analizie encji. |
tryb parsowania Opcjonalnie | str | MarkdownV2 lub HTML, aby wyrenderować pogrubienie, linki i formatowanie kodu w tekście. |
wyłącz_powiadomienie Opcjonalnie | typ logiczny | Wysyła wiadomość po cichu, bez dźwięku powiadomienia push. |
parametry_odpowiedzi Opcjonalnie | słownik | Wysyła wiadomość jako odpowiedź na istniejącą wiadomość na czacie. |
Przekrocz limit przeznaczony wyłącznie dla botów
API bota Telegram w Pythonie przy użyciu python-telegram-bot
żą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.Zastosowanie obiekt zarządzający pętlą aktualizacji za Ciebie (odpytywanie lub webhook)bot.send_message() zamiast ręcznie przygotowywanych ładunków JSON/start jest dekoratorem, a nie pętlą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.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()Prawdziwe konto użytkownika w Pythonie: Telethon i Pyrogram
api_id oraz api_hash z my.telegram.org. Dwie biblioteki w Pythonie zajmują się trudną stroną protokołu MTProto: Telethon i Pyrogram.Telethon
Pyrogram
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())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. 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. 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. 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. 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. NIEPRAWIDŁOWY_HASH_HASŁA
API_ID_PUBLISHED_FLOOD
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.Prawdziwe konto Telegram w Pythonie bez pisania w MTProto
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.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.api_id / api_hash sparować, aby zażądać lub obrócić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."}
)Obsługa błędów i limitów zapytań w języku Python
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.Maksymalna liczba wiadomości z API bota do tego samego czatu indywidualnego
Maksymalna liczba wiadomości API bota w jednej grupie
Szacowany limit API bota podczas wysyłania wiadomości masowych do czatów
Status zwracany po przekroczeniu któregokolwiek z tych limitów
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")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)Python Telegram Bot API kontra Telethon/Pyrogram kontra Unipile SDK
| Wymiar | Bot API (requests / python-telegram-bot) | Telethon / Pyrogram (MTProto) | Zestaw SDK języka Python dla Unipile |
|---|---|---|---|
| Może najpierw napisać do użytkownika | Nie | Tak, zależne od prywatności | Tak |
| Wymaganie dotyczące konfiguracji | Token bota od BotFather | api_id / api_hash z my.telegram.org | Powiązane konto za pomocą kodu QR lub Uwierzytelniania Hostowanego |
| Zarządzanie sesjami | Oparte na tokenach, brak konieczności utrwalania | Samodzielnie zapisujesz plik sesji | Zarządzane za pomocą funkcji Urządzenia Telegramu |
| 2FA / WYMAGANE_HASŁO_SESJI | Nie dotyczy | Obsługujesz wymianę SRP | Zadbano o ciebie |
| Uczestnicy grupy (pobierz / dodaj / usuń) | Ograniczone do uprawnień bota | Tak, samoróbka | Tak, dedykowane punkty końcowe w wersji 2 |
| Kanały, społeczności, transmisje | Tak, jeśli dodano jako administrator | Tak | Nieobsługiwane |
| Najlepszy dla | Powiadomienia i boty wsparcia | W pełni niestandardowy klient MTProto w języku Python | Szybkie wdrażanie bez posiadania 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ą.