Telegram-API mit Python: Bot-API, MTProto und verknüpfte Konten

Python-Implementierungsleitfaden

Die Telegram API Python Anleitung: Funktionierender Code für jeden Ansatz

Ein Code-First-Rundgang durch den Python-Telegram-Bot-APIdas sendMessage Anruf bei Anfragen, ein minimaler Bot mit python-telegram-bot, ein echtes verknüpftes Konto mit Telethon, Pyrogram oder dem Unipile-SDK, und wie man Rate-Limits handhabt, ohne dass dein Skript beim ersten Mal abstürzt 429. Ob Sie hier gelandet sind auf der Suche nach Telegram Bot API Python Beispiel oder das Ganze Telegram API Python Bild: Jeder der nachstehenden Ansätze wird mit funktionierendem Code ausgeliefert.



telegram_bot.py
import Anfragen TOKEN = "123456:ABC-your-bot-token" URL = f"https://api.telegram.org/bot{TOKEN}/sendMessage" Nutzlast = { "chat_id": 123456789, "Text": "Hallo von Python", "Parse-Modus": "MarkdownV2" } response = Anfragen.Beitrag(url, json=payload) print(Antwort.json())
200 OK: Nachricht gesendet
Entscheidungsleitfaden

Drei Wege, die Telegram-API in Python zu implementieren, und welcher der richtige für Sie ist

Sobald Sie über Zugangsdaten verfügen, gibt es drei konkrete Möglichkeiten, von einer Python-Codebasis aus mit Telegram zu kommunizieren. Es handelt sich dabei nicht um austauschbare Bibliotheken für dieselbe Aufgabe: Jede davon authentifiziert sich als ein anderer Absender, mit anderem Code und anderen Einschränkungen.
Python-Telegram-Bot-API
Ein Bot-Token von BotFather, aufgerufen aus Python mit Anfragen oder einer Wrapper-Bibliothek wie python-telegram-bot. Der schnellste Weg, um zu versenden, aber ein Bot kann nur einem Nutzer schreiben, der ihm zuerst geschrieben hat.
Am besten für Benachrichtigungen und Support-Bots
Telethon / Pyrogram (MTProto)
Eine Python-Client-Bibliothek, die das rohe Telegram-Protokoll mit Ihrem eigenen spricht api_id und API-Hash. Meldet sich als echtes Konto an, aber Sie besitzen den Sitzungsspeicher, stellt die Verbindung wieder her und steuert den 2FA-Ablauf.
Am besten für einen vollständig benutzerdefinierten Python-Client
Unipile Python SDKUnipile
Ein verknüpftes Konto, das aus Python mit ein paar SDK-Zeilen anstelle eines rohen MTProto-Clients aufgerufen wird. Keine Sitzungsdateien, die persistiert werden müssen, kein 2FA-Zweig, den man selbst schreiben muss.
Am besten für schnellen Versand, ohne MTProto zu besitzen
Dieser Abschnitt behandelt den Python-Code, sobald Sie über Zugangsdaten verfügen. Eine vollständige Gegenüberstellung zwischen der Bot-API und der Telegram-Client-API (Limits, Identität, was die jeweilige API kann und nicht kann) finden Sie in unserem speziellen Vergleich: Telegram Bot API vs. Telegram API. Um deinen Bot-Token zu erhalten oder api_id / API-Hash sehen Sie sich zunächst an Schritt-für-Schritt-Zugangsanleitung.


Erstelle deine Python-Integration
Code-Tutorial

Die Python Telegram Bot API mit requests

Der direkteste Weg, um den Telegram-Bot-API in Python ist ein einfacher HTTP-Aufruf mit Anfragen, ganz ohne Wrapper-Bibliothek. Seit Bot API 10.2 (14. Juli 2026) sind ein Bot-Token von BotFather und zwei Parameter alles, was sendMessage erfordert.
1
Beschaffe dir einen Bot-Token und rufe dann sendMessage auf.
BotFather gibt einen Token aus, der geformt ist wie 123456:ABC-your-bot-token. Jeder Bot-API-Aufruf, einschließlich sendMessage, ist ein POST zu https://api.telegram.org/bot<TOKEN>/sendMessage mit einem JSON-Body.



nachricht_senden.py
import Betriebssystem import Anfragen TOKEN = os.Umgebung["TELEGRAM_BOT_TOKEN"] URL = f"https://api.telegram.org/bot{TOKEN}/sendMessage" Nutzlast = { "chat_id": 123456789, "Text": "Ihre Bestellung mit der Nummer #4821 wurde versandt.", "Parse-Modus": "MarkdownV2" } response = Anfragen.Beitrag(URL, json=payload, timeout=10)
2
Prüfen Sie die Antwort, gehen Sie nicht davon aus, dass sie funktioniert hat
Die Bot-API antwortet immer mit einem JSON-Body, der einen Okay boolean. Ein Statuscode ungleich 200 oder ok: false bedeutet, dass die Nachricht nicht gesendet wurde, und die Nutzdaten enthalten eine menschenlesbare Beschreibung protokollieren.



nachricht_senden.py
Daten = Antwort.json() wenn response.status_code == 200 und Daten.bekommen.("Ok"): Nachrichten-ID = Daten["Ergebnis"]["Nachricht_ID"] print(gesendet, message_id={message_id}") sonst: print(f"fehlgeschlagen: {data.get('description')}")
ParameterTypBeschreibung
chat_id Erforderlichint oder strZiel-Chat-ID oder @username für einen öffentlichen Kanal.
text ErforderlichStrNach Entitäten-Parsing 1 bis 4096 Zeichen Nachrichtentext.
Parse-Modus OptionalStrMarkdownV2 oder HTML, um Fettdruck, Links und Code-Formatierungen im Text darzustellen.
Benachrichtigung deaktivieren OptionalboolSendet die Nachricht leise und ohne Push-Benachrichtigungston.
Antwortparameter OptionalWörterbuchSendet die Nachricht als Antwort auf eine bestehende Nachricht im Chat.


Überschreite das Bot-Only-Limit
Code-Tutorial

Die Telegram Bot API in Python mit python-telegram-bot

Roh Anfragen Anrufe funktionieren gut für eine einzelne ausgehende Nachricht. Darüber hinaus wickeln die meisten Python-Codebasen den Telegram Bot API in python-telegram-bot, eine Bibliothek, die dieselben HTTP-Endpunkte in ein asynchrones Python-Objektmodell mit integrierter Aktualisierungsabfrage verwandelt.
Was die Bibliothek im Vergleich zu reinen Requests hinzufügt
Eine Anmeldung Objekt, das die Aktualisierungsschleife für Sie verwaltet (Polling oder Webhook)
Typisierte Methoden wie bot.send_message() anstelle von manuell erstellten JSON-Nutzdaten
Befehls- und Nachrichten-Handler, also das Antworten auf /start ist ein Decorator, keine Schleife
Die Parameter entsprechen denselben, die oben behandelt wurden: chat_id, text, Parse-Modus. Die Bibliothek kann immer noch nicht veranlassen, dass ein Bot einen Nutzer zuerst anschreibt; diese Einschränkung liegt in den Plattformregeln von Telegram, nicht in dem Client, den Sie für den Aufruf verwenden.



bot.py
from Telegramm import Aktualisieren from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes asynchron def Start(update: Update, context: ContextTypes.DEFAULT_TYPE): await context.bot.Nachricht senden( chat_id=update.effective_chat.id, Text="Hallo von python-telegram-bot", parse_mode="MarkdownV2" ) app = ApplicationBuilder().Token("123456:ABC-your-bot-token").bauen() app.add_handler(Befehlshandler("Start", Start)) App.Polling starten()
Client-API / MTProto

Ein echter Benutzeraccount in Python: Telethon und Pyrogram

Das Senden als echter Telegram-Account von Python aus, nicht als Bot, bedeutet, die Client-API zu nutzen mit api_id und API-Hash von my.telegram.org. Zwei Python-Bibliotheken erledigen die schwere Arbeit bei MTProto: Telethon und Pyrogram.
Python

Telethon

Eine reine Python-MTProto-Implementierung, die auf async/await basiert und eine Client-API bietet, die eher an normales Python als an rohe Protokollaufrufe erinnert.
Python

Pyrogram

Ein weiterer Python-MTProto-Client mit einem eigenen Ansatz für die Sitzungsverwaltung und einer Client-Oberfläche, die sich wie ein konventionelles SDK statt wie eine Protokollbibliothek anfühlen soll.



telethon_client.py
from Telethon import Telegram-Client from telethon.errors import SessionPasswordNeededError api_id = 1234567 API-Hash = "dein_api_hash_von_my.telegram.org" # "my_account" ist der Name der Sitzungsdatei auf der Festplatte, der bei jedem Durchlauf wiederverwendet wird client = Telegram-Client("mein_konto", api_id, api_hash) asynchron def Haupt(): await Klient.Start(Telefon="+15551234567") await Klient.Nachricht senden("benutzername_oder_id", "Hallo von Telethon") mit Kunde client.loop.run_until_complete(main())
Die 2FA-Hürde, die jedes selbstgebaute Login bewältigen muss
1
Senden Sie den Anmeldecode
client.start(phone=...) Wraps auth.sendCode, das einen Anmeldecode an die Telefonnummer sendet und einen zurückgibt phone_code_hash für den nächsten Anruf verwendet.
2
Code validieren
Die Bibliothek fordert den Code an und ruft auf auth.signIn damit. Hier hört eine ausschließlich auf den Normalverlauf ausgerichtete Implementierung auf.
3
SESSION_PASSWORD_NEEDED erforderlich
Wenn für das Konto die Zwei-Faktor-Authentifizierung aktiviert ist, antwortet Telegram mit einer 400 Fehler: SESSION_PASSWORD_NEEDED. Telethon nennt dies als SessionPasswordNeededError, ein erwarteter Zweig, kein Fehler, der abgefangen und ignoriert werden muss.
4
Mit dem Cloud-Passwort löschen
Das Cloud-Passwort des Kontos übergeben an client.start(password=...) führt den SRP-Austausch durch und auth.checkPassword Für dich. Der direkte Aufruf der rohen MTProto-Schicht bedeutet, die InputCheckPasswordSRP Widersprich dir selbst.
Speichern Sie die Sitzung oder melden Sie sich bei jedem Durchlauf an
Telethon und Pyrogram schreiben beide eine lokale Sitzungsdatei (oder eine im Speicher StringSession) nach dem ersten erfolgreichen Login. Verlieren Sie ihn oder deployen Sie ihn, ohne ihn dauerhaft zu speichern, muss Ihr Skript bei jedem Neustart den Telefoncode- und 2FA-Ablauf erneut durchlaufen.
Fehler, die auf diesem Weg zu erwarten sind
SESSION_PASSWORT_ERFORDERLICH
PASSWORT_HASH_UNGÜLTIG
API_ID_PUBLISHED_FLOOD
Nur die offiziellen Apps von Telegram erhalten die Firebase-basierte SMS-Code-Zustellung. Ein Python-Skript benötigt ebenfalls eine eigene. api_id von my.telegram.org: Die Wiederverwendung der in Open-Source-Beispielcode mitgelieferten Beispiel-ID löst aus API_ID_PUBLISHED_FLOOD für Ihre Endbenutzer und nur für einen api_id wird pro Telefonnummer ausgestellt.
Der Unipile-Ansatz
Die vollständige Liste der von Unipile bereitgestellten Telegram-Funktionen finden Sie unter Telegram-API-Produktseite.

Ein echter Telegram-Account in Python, ohne MTProto zu schreiben

Das Unipile Python SDK verbindet ein bestehendes Telegram-Benutzerkonto über Telegrams eigenes Geräte Funktion, entweder ein QR-Code-Scan oder Hosted Auth mit Anbieter: "TELEGRAM". Es gibt keinen api_id, keine Sitzungsdatei zum Speichern und keine SESSION_PASSWORT_ERFORDERLICH Zweig, den man selbst schreiben muss: Das verknüpfte Konto wird entweder angezeigt als verbunden oder auch nicht.
Sobald ein Konto verknüpft ist, erfordert das Senden einer Nachricht von Python aus nur wenige SDK-Aufrufe, die alle über Unipile laufen v2 API im Hintergrund. Chat starten nimmt die ID des verknüpften Kontos und eine Benutzer-IDs Liste, und öffnet entweder ein neues Gespräch oder leitet es in das bestehende weiter, wenn bereits ein Chat mit diesem Empfänger existiert.
Nein api_id / API-Hash zum Anfordern oder Rotieren koppeln
Keine Sitzungsdatei, kein SRP-Handshake, kein 2FA-Zweig in Ihrem Code
Gleiche Kontostatus-Behandlung für die Verwaltung von Gruppenteilnehmern
Die Installation des SDK wird hier nicht behandelt, da der genaue Paketname am besten anhand der aktuellen Dokumentation überprüft wird, siehe developer.unipile.com/docs/getting-started für den Installationsschritt und die vollständige Python-Referenz.
Jede hier gezeigte Funktion ist Endpunkt für Endpunkt aufgelistet auf der Unipile Telegram API Produktseite, einschließlich dessen, was unterstützt wird und was nicht.



send_telegram.py
import unipile Konfiguration = einspurig.Konfiguration() configuration.api_key["API-Schlüssel"] = "API-Schlüssel" API-Client = einspurig.ApiClientKonfiguration Messaging-API = einspurig.Messaging-API(api_client) Chat = Messaging-API.Chat starten( "acc_123456789", {"user_ids": ["0123456789"], "Text": "Hallo, ich komme auf Ihre Anfrage zurück."} )
Was die Telegram-Integration von Unipile nicht abdeckt
Kanäle, Communities und Broadcasts
Gruppenverwaltung: Mitglieder bestätigen oder befördern
Chat-Archivierung
Sprach- und Videoanrufe
Mit dem Python-SDK erstellen
Fehler und Grenzen

Fehlerbehandlung und Rate-Limits in Python

Ein Skript, das eine Nachricht in einem Test-Chat sendet, und ein Skript, das in der Produktion läuft, stoßen auf unterschiedliche Probleme. Das zweite bekommt schließlich einen 429 oder ein FLOOD_WAIT_X, und was dein Python-Code als Nächstes tut, entscheidet darüber, ob das eine Fünfsekundenpause oder ein gesperrtes Konto ist.
1/Sek.
Maximale Bot-API-Nachrichten an denselben privaten Chat
20/Min.
Maximale Bot-API-Nachrichten in einer einzelnen Gruppe
~30/Sek.
Ungefähres Bot-API-Limit beim Broadcasten an Chats
429
Status, der zurückgegeben wird, sobald eines dieser Limits überschritten wird
Wiederholungsschleifen für beide Seiten der API
Die Bot-API und die Client-API signalisieren dasselbe Problem in zwei verschiedenen Formen. Beide müssen explizit abgefangen werden, anstatt blind protokolliert und wiederholt zu werden.



bot_api_retry.py
import Zeit import Anfragen def mit_wiederholung_senden(URL, Nutzlast, max_wiederholungen=3): für Versuch in Reichweite(max_wiederholungen): r = Anfragen.Beitrag(url, json=payload) wenn r.status_code != 429: return r erneut_versuchen_nach = r.json().bekommen.("Parameter", {}).bekommen.("erneut_versuchen_nach", 1) Zeit.Schlaf(Wiederholung nach) erhöhen Laufzeitfehler("Zu viele 429-Antworten")



telethon_flood_wait.py
from telethon.errors import FloodWaitError import asyncio asynchron def sicher senden(Klunde, Entität, Text) versuchen: await Klient.Nachricht senden(Entität, Text) außer FloodWaitError als e: # e.seconds ist der Wert von FLOOD_WAIT_X, den Telegram zurückgesendet hat await asyncio.Schlaf(e.seconds) await Klient.Nachricht senden(Entität, Text)
Pacing-Anleitung, die Sie von vornherein unter den Limits hält
Vermeiden Sie das Senden großer Volumina von nagelneue Konten, werden sie schneller markiert als etablierte.
Versandvolumen erhöhen schrittweise statt ein Skript mit voller Leistung zu starten.
Behalte mindestens 10 bis 20 Sekunden zwischen Nachrichten, die vom selben Konto gesendet werden, ist dies Unipiles eigene Empfehlung für verknüpfte Konten und nicht nur ein Limit der Bot-API.
Zusammenfassung

Python Telegram Bot API vs Telethon/Pyrogram vs Unipile SDK

Dieselbe Zusammenfassung in Tabellenform: Was die einzelnen Python-Pfade tatsächlich erfordern und wo sie enden.
DimensionBot-API (requests / python-telegram-bot)Telethon / Pyrogram (MTProto)Unipile Python SDK
Kann einem Benutzer zuerst eine Nachricht sendenNeinJa, datenschutzabhängigJa
EinrichtungsanforderungBot-Token von BotFatherapi_id / API-Hash von my.telegram.orgVerknüpftes Konto über QR-Code oder Hosted Auth
Verwaltung der SitzungenToken-basiert, nichts zu speichernDu speicherst die Sitzungsdatei selbst abVerwaltet über die Telegram-Funktion „Geräte“
2FA / SESSION_PASSWORD_NEEDEDNicht anwendbarDu führst den SRP-Austausch durchFür Sie erledigt
Gruppenteilnehmer (abrufen / hinzufügen / entfernen)Beschränkt auf Bot-BerechtigungenJa, selbst gebautJa, dedizierte v2-Endpunkte
Kanäle, Communities, StreamsJa, wenn als Administrator hinzugefügtJaNicht unterstützt
Am besten fürBenachrichtigungen und Support-BotsEin vollständig benutzerdefinierter Python-MTProto-ClientSchneller Versand ohne Besitz von MTProto
Kann einem Benutzer zuerst eine Nachricht senden
Bot-APINein
Telethon / PyrogramJa, datenschutzabhängig
Unipile SDKJa
Einrichtungsanforderung
Bot-APIBot-Token
Telethon / PyrogramAPI-ID / API-Hash
Unipile SDKVerknüpftes Konto
Verwaltung der Sitzungen
Bot-APINichts zu speichern
Telethon / PyrogramSelbst persistierte Sitzung
Unipile SDKVerwaltet über Geräte
2FA / SESSION_PASSWORD_NEEDED
Bot-APINicht anwendbar
Telethon / PyrogramEigenbau SRP
Unipile SDKFür Sie erledigt
Gruppenteilnehmer (abrufen / hinzufügen / entfernen)
Bot-APIBeschränkt auf Bot-Berechtigungen
Telethon / PyrogramSelbstgebaut
Unipile SDKDedizierte v2-Endpunkte
Kanäle, Communities, Streams
Bot-APIJa, als Administrator
Telethon / PyrogramJa
Unipile SDKNicht unterstützt
Am besten für
Bot-APIBenachrichtigungen, Support-Bots
Telethon / PyrogramVollständig angepasster Client
Unipile SDKSchneller Versand, kein MTProto

Telegram-API in Python – FAQ

Häufige Fragen zur Python Telegram Bot API, python-telegram-bot, Telethon, Pyrogram und zum Verbinden eines echten Accounts mit Unipile.

Ja. Die Telegram Bot API ist eine einfache HTTP-Schnittstelle, sodass eine einzelne POST mit Python Anfragen Bibliothek zu https://api.telegram.org/bot<TOKEN>/sendMessage, mit einem chat_id und text im JSON-Body ist ausreichend. Für diesen Aufruf ist kein SDK oder Wrapper-Library erforderlich.

Die Telegram Bot API ist die eigene HTTP-Schnittstelle von Telegram, die von Python aus aufgerufen werden kann mit Anfragen oder einem beliebigen HTTP-Client. python-telegram-bot ist eine Python-Bibliothek von Drittanbietern, die genau diese HTTP-Endpunkte in ein asynchrones Objektmodell verpackt, mit einem Anmeldung Klasse, typisierte Methoden wie bot.send_message, sowie integriertem Update-Polling oder Webhook-Handling.

Dies ist eine strukturelle Regel der Bot-API und kein Fehler in Ihrem Code. Ein Bot kann nicht sendMessage gegen ein chat_id bis dieser Nutzer dem Bot zuerst mindestens eine Nachricht gesendet hat. Kein Parameter und keine Python-Bibliothek umgeht dies. Ein echtes verknüpftes Telegram-Konto, über Telethon, Pyrogram oder das Unipile SDK, hat diese Einschränkung nicht.

Nein. Die Bot-API benötigt lediglich ein von BotFather ausgegebenes Bot-Token. api_id und API-Hash von my.telegram.org werden für die Client-API (MTProto) benötigt, das Protokoll, das von Telethon, Pyrogram und jedem Client verwendet wird, der sich als echtes Benutzerkonto statt als Bot anmeldet.

SESSION_PASSWORT_ERFORDERLICH ist ein 400-Fehler, den Telegram zurückgibt von auth.signIn wenn für das Konto die Zwei-Faktor-Authentifizierung aktiviert ist. Telethon löst dies aus als SessionPasswordNeededError. Das Bereinigen bedeutet, das SRP-Protokoll auszuführen und aufzurufen auth.checkPassword mit dem Cloud-Passwort des Kontos, das sowohl Telethon als auch Pyrogram verarbeiten, wenn Sie das Passwort an deren Anmeldemethode übergeben.

Die Bot-API gibt eine/einen/ein 429 Status, sobald Sie etwa eine Nachricht pro Sekunde an denselben Chat, 20 Nachrichten pro Minute in einer Gruppe oder etwa 30 Nachrichten pro Sekunde beim Broadcasten über Chats hinweg überschreiten. Die Antwort enthält eine erneut_versuchen_nach Wert in Sekunden. Auf der MTProto-Seite entspricht dem ein 420 FLOOD Fehler oder ein FLOOD_WAIT_X Ausnahme, wobei X die Anzahl der Sekunden ist, die vor dem erneuten Versuch gewartet werden soll.

Ja. Die Unipile Python SDK verbindet ein bestehendes Telegram-Benutzerkonto über die telegramm-eigenen Gerätefunktionen, entweder durch einen QR-Code-Scan oder Hosted Auth, und stellt Messaging über einige SDK-Aufrufe zur Verfügung, wie zum Beispiel Chat starten. Es gibt keinen api_id anfordern, keine MTProto-Implementierung und keine Session-Datei oder keinen 2FA-Zweig, die man selbst schreiben müsste.

Die Verwaltung von Gruppenmitgliedern wird unterstützt: das Auflisten, Hinzufügen und Entfernen von Teilnehmern über dedizierte v2 Endpunkte. Kanäle, Communities, Broadcasts, Gruppenverwaltungsaktionen wie das Genehmigen oder Befördern von Mitgliedern sowie Sprach- oder Videoanrufe werden nicht unterstützt.

Haben Sie noch Fragen? Unser Team ist für Sie da.

Sprechen Sie mit einem Experten
Telegram API Python, richtig gemacht

Erstelle deine Telegram Bot API Python-Integration mit Unipile

Überspringen Sie die MTProto-Sitzungsdateien und die Nur-Bot-Einschränkung. Verbinden Sie ein bestehendes Telegram-Konto über das Python-SDK von Unipile und vereinheitlichen Sie es mit WhatsApp, LinkedIn, Instagram, Gmail, Outlook und IMAP in einer einzigen API.
de_DEDE