Zurück zum Blog
Guides

Dein erster Telegram Bot mit Python: Eine umfassende Anleitung

Lerne, wie du kostenlos einen leistungsstarken Telegram Bot mit Python erstellst. Diese Schritt-für-Schritt-Anleitung deckt alles ab, von der API-Einrichtung bis zur Bereitstellung deines individuellen Telegram Bots.

Dein erster Telegram Bot mit Python: Eine umfassende Anleitung

Einen eigenen Telegram Bot mit Python zu entwickeln, bietet enorme Flexibilität und Leistungsfähigkeit. Egal, ob du Aufgaben automatisieren, interaktive Dienste erstellen oder einfach mit der robusten Telegram API experimentieren möchtest – Python ist aufgrund seiner Einfachheit und umfangreichen Bibliotheken eine ausgezeichnete Wahl. In dieser umfassenden Anleitung führen wir dich durch den gesamten Prozess der Erstellung deines ersten Telegram Bot Python Projekts, von der Einrichtung deiner Entwicklungsumgebung bis zum Schreiben von funktionsfähigem Code und der Bereitstellung deines Bots.

Die Lesbarkeit von Python und die aktive Community, die die python-telegram-bot-Bibliothek unterstützt, machen es zu einem fantastischen Einstiegspunkt für Anfänger und erfahrene Entwickler gleichermaßen. Am Ende dieses Tutorials wirst du einen voll funktionsfähigen Telegram Bot haben, der bereit ist, mit Benutzern zu interagieren.

Das Wichtigste auf einen Blick

  • Du lernst, wie du deinen Bot bei BotFather registrierst und ein API-Token erhältst.
  • Wir behandeln die Einrichtung deiner Python-Entwicklungsumgebung und die Installation notwendiger Bibliotheken.
  • Du schreibst Code zur Verarbeitung grundlegender Befehle und Nachrichten.
  • Wir zeigen dir, wie du deinem Bot anspruchsvollere Funktionen hinzufügst.
  • Du verstehst die Grundlagen der Bereitstellung deiner Telegram Bot Python Anwendung.

1. Telegram Bot und Entwicklungsumgebung einrichten

Bevor wir uns in den Code stürzen, musst du deinen Bot bei Telegram einrichten und deine Python-Umgebung vorbereiten.

1.1 Bot mit BotFather erstellen

Der erste Schritt für jeden Telegram Bot ist die Registrierung bei BotFather, dem offiziellen Telegram Bot zur Verwaltung anderer Bots.

  1. Telegram öffnen und nach @BotFather suchen: Suche in deiner Telegram-App nach “@BotFather” und starte einen Chat. Achte darauf, dass es der offizielle Bot mit dem blauen Verifizierungsabzeichen ist.
  2. Bot-Erstellungsprozess starten: Gib /newbot ein und sende die Nachricht.
  3. Namen wählen: BotFather fragt nach einem Namen für deinen Bot. Dies ist der für Benutzer lesbare Titel, den sie sehen werden (z.B. “Mein toller Bot”).
  4. Benutzernamen wählen: Als Nächstes wähle einen eindeutigen Benutzernamen für deinen Bot. Dieser muss mit “bot” enden (z.B. mein_toller_bot). Wenn der Benutzername bereits vergeben ist, fordert BotFather dich auf, einen anderen zu versuchen.
  5. API-Token erhalten: Nach erfolgreicher Erstellung stellt BotFather dir ein HTTP API-Token zur Verfügung. Dieses Token ist entscheidend, da es wie ein Passwort für deinen Bot fungiert. Bewahre es sicher auf und teile es niemals öffentlich. Es wird etwa so aussehen: 123456:ABC-DEF1234ghIkl-zyx57W23L1qR_456.

1.2 Python und pip installieren

Falls du Python noch nicht installiert hast, lade die neueste stabile Version von der offiziellen Python-Website (https://www.python.org/downloads/) herunter. Achte während der Installation darauf, das Kontrollkästchen “Add Python to PATH” zu aktivieren, um den Zugriff über die Befehlszeile zu erleichtern.

pip ist Pythons Paketmanager und wird normalerweise mit Python vorinstalliert. Du kannst deine Python- und pip-Installationen überprüfen, indem du dein Terminal oder die Eingabeaufforderung öffnest und Folgendes eingibst:

python --version
pip --version

1.3 Die python-telegram-bot-Bibliothek installieren

Die python-telegram-bot-Bibliothek ist ein beliebter und robuster Wrapper für die Telegram Bot API. Sie vereinfacht die Interaktionen mit der API und erleichtert die Entwicklung deines Bots erheblich.

Installiere sie mit pip:

pip install python-telegram-bot

Du hast nun deinen Bot und deine Entwicklungsumgebung erfolgreich eingerichtet. Kommen wir zum Schreiben von Code!

2. Dein erster Telegram Bot Python Code: Der Echo Bot

Wir beginnen mit einem Klassiker: einem Echo Bot. Dieser Bot wiederholt einfach jede Nachricht, die er empfängt. Dieses einfache Beispiel vermittelt dir die Kernkonzepte der Nachrichtenverarbeitung.

2.1 Notwendige Module importieren

Erstelle eine neue Python-Datei (z.B. mein_telegram_bot.py) und beginne mit dem Import der benötigten Komponenten aus der telegram-Bibliothek.

from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, filters
import logging
import os
  • Update: Repräsentiert ein eingehendes Update von Telegram (z.B. eine neue Nachricht, ein Befehl).
  • Application: Die Hauptklasse, die den Lebenszyklus deines Bots verwaltet.
  • CommandHandler: Wird verwendet, um Handler für bestimmte Befehle zu registrieren (z.B. /start, /help).
  • MessageHandler: Wird verwendet, um Handler für verschiedene Arten von Nachrichten zu registrieren (Text, Fotos usw.).
  • filters: Bietet praktische Filter, um festzulegen, auf welche Nachrichten ein MessageHandler reagieren soll.
  • logging: Gute Praxis für die Fehlersuche und das Verständnis des Bot-Verhaltens.
  • os: Zum sicheren Laden deines API-Tokens aus Umgebungsvariablen.

2.2 Logging einrichten

Logging ist unerlässlich für die Fehlerbehebung. Füge die folgenden Zeilen zu deinem Skript hinzu:

# Logging aktivieren
logging.basicConfig(
    format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", level=logging.INFO
)
logger = logging.getLogger(__name__)

2.3 Unsere Handler definieren

Handler sind Funktionen, die eingehende Updates verarbeiten.

start-Befehls-Handler:

Diese Funktion wird aufgerufen, wenn ein Benutzer den /start-Befehl sendet.

async def start(update: Update, context):
    """Sendet eine Willkommensnachricht, wenn der Befehl /start eingegeben wird."""
    user = update.effective_user
    await update.message.reply_html(
        f"Hallo {user.mention_html()}! Ich bin ein Echo-Bot. Sende mir alles, was du möchtest!",
        # reply_markup=ForceReply(selective=True), # Optional: Antwort auf diese Nachricht erzwingen
    )

echo-Nachrichten-Handler:

Diese Funktion wird jede empfangene Textnachricht zurückgeben.

async def echo(update: Update, context):
    """Gibt die Benutzernachricht zurück."""
    await update.message.reply_text(update.message.text)

help_command-Handler:

Ein einfacher Hilfebefehl.

async def help_command(update: Update, context):
    """Sendet eine Hilfenachricht."""
    await update.message.reply_text("Sende mir eine beliebige Nachricht, und ich werde sie zurückgeben!")

2.4 Die main-Funktion: Alles zusammenführen

Die main-Funktion ist der Ort, an dem wir unseren Bot initialisieren, Handler registrieren und nach Updates suchen.

def main() -> None:
    """Startet den Bot."""
    # API-Token aus Umgebungsvariablen abrufen (BEST PRACTICE!)
    # Alternativ kannst du es hier für schnelle Tests fest codieren: TOKEN = "DEIN_TELEGRAM_BOT_TOKEN"
    TOKEN = os.environ.get("TELEGRAM_BOT_TOKEN")

    if not TOKEN:
        raise ValueError("Die Umgebungsvariable TELEGRAM_BOT_TOKEN ist nicht gesetzt.")

    # Die Anwendung erstellen und das Bot-Token übergeben.
    application = Application.builder().token(TOKEN).build()

    # Handler registrieren
    application.add_handler(CommandHandler("start", start))
    application.add_handler(CommandHandler("help", help_command))
    application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo))

    # Den Bot ausführen, bis der Benutzer Strg-C drückt
    application.run_polling(allowed_updates=Update.ALL_TYPES)


if __name__ == "__main__":
    main()

2.5 Deinen Bot lokal ausführen

  1. Setze dein API-Token als Umgebungsvariable:

    • Linux/macOS: export TELEGRAM_BOT_TOKEN="DEIN_API_TOKEN_HIER"
    • Windows (Eingabeaufforderung): set TELEGRAM_BOT_TOKEN="DEIN_API_TOKEN_HIER"
    • Windows (PowerShell): $env:TELEGRAM_BOT_TOKEN="DEIN_API_TOKEN_HIER" Alternativ kannst du für schnelle lokale Tests os.environ.get("TELEGRAM_BOT_TOKEN") direkt im Code durch deinen tatsächlichen Token-String ersetzen (z.B. TOKEN = "123456:ABCDEF..."), dies wird jedoch für die Produktion nicht empfohlen.
  2. Führe dein Python-Skript aus: Navigiere im Terminal zu dem Verzeichnis, in dem du my_telegram_bot.py gespeichert hast, und führe aus:

    python my_telegram_bot.py
  3. Interagiere mit deinem Bot: Öffne Telegram, suche nach dem Benutzernamen deines Bots (z.B. @mein_toller_bot) und starte einen Chat. Versuche, /start, /help oder eine beliebige Textnachricht zu senden. Dein Bot sollte antworten!

Herzlichen Glückwunsch! Du hast gerade deine erste Telegram Bot Python Anwendung erstellt und ausgeführt.

Telegram Bot antwortet auf /start und gibt eine Nachricht zurück.

3. Erweiterte Funktionen hinzufügen

Ein Echo-Bot ist cool, aber machen wir ihn nützlicher. Hier sind Ideen zur Erweiterung deines Telegram Bots.

3.1 Verschiedene Nachrichtentypen verarbeiten

Neben einfachem Text unterstützt Telegram Fotos, Videos, Dokumente und vieles mehr. Du kannst filters verwenden, um diese spezifisch zu verarbeiten.

Beispiel: Auf Fotos reagieren

async def handle_photo(update: Update, context):
    """Reagiert auf ein Foto mit einer Bestätigungsnachricht."""
    # Du kannst auf Fotodetails über update.message.photo zugreifen
    # Die Liste enthält verschiedene Größen desselben Fotos; die letzte ist normalerweise die größte.
    photo_file_id = update.message.photo[-1].file_id
    await update.message.reply_text("Schönes Foto! Ich habe es erhalten.")

# Füge diesen Handler in deiner Hauptfunktion hinzu
# application.add_handler(MessageHandler(filters.PHOTO, handle_photo))

3.2 Inline-Tastaturen und Antwort-Tastaturen verwenden

Tastaturen bieten strukturierte Interaktionsmöglichkeiten für Benutzer.

  • Antwort-Tastaturen (Reply Keyboards): Erscheinen über dem Nachrichteneingabefeld und ersetzen effektiv die Standardtastatur. Ideal für vordefinierte Auswahlmöglichkeiten.
  • Inline-Tastaturen (Inline Keyboards): Direkt an eine Nachricht angehängt, mit Schaltflächen, die Rückrufe auslösen oder URLs öffnen können. Ideal für interaktive Menüs.

Beispiel: Inline-Tastatur

Ändern wir unseren /start-Befehl, um Schaltflächen anzubieten.

from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup
from telegram.ext import Application, CommandHandler, MessageHandler, CallbackQueryHandler, filters
# ... (andere Importe und Logging) ...

async def start(update: Update, context):
    """Sendet eine Willkommensnachricht mit einer Inline-Tastatur."""
    user = update.effective_user
    keyboard = [
        [InlineKeyboardButton("TeleClaw besuchen", url="https://teleclaw.bot")],
        [InlineKeyboardButton("Über den Bot", callback_data="about")],
    ]
    reply_markup = InlineKeyboardMarkup(keyboard)
    await update.message.reply_html(
        f"Hallo {user.mention_html()}! Willkommen bei meinem Bot. Was möchtest du tun?",
        reply_markup=reply_markup,
    )

async def button_callback(update: Update, context):
    """Verarbeitet Callback-Abfragen von Inline-Tastatur-Schaltflächen."""
    query = update.callback_query
    await query.answer() # Callback-Abfragen immer beantworten

    if query.data == "about":
        await query.edit_message_text(text="Dies ist ein einfacher Demo-Bot, erstellt mit Python und der `python-telegram-bot`-Bibliothek.")
    # Füge weitere Bedingungen für andere callback_data-Werte hinzu

Du müsstest deine main-Funktion aktualisieren, um den CallbackQueryHandler einzuschließen:

    # ... innerhalb von main() ...
    application.add_handler(CommandHandler("start", start))
    application.add_handler(CallbackQueryHandler(button_callback)) # Diese Zeile hinzufügen
    application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo))
    # ...

Dies zeigt, wie man auf eine externe Website wie TeleClaw verlinkt und eine Aktion innerhalb des Bots ausführt. Weitere Informationen zu verschiedenen Tastaturoptionen findest du in der python-telegram-bot-Dokumentation (https://docs.python-telegram-bot.org/en/stable/telegram.keyboardbutton.html).

3.3 Integration mit externen APIs

Die wahre Stärke der Telegram Bot Python Entwicklung liegt in ihrer Fähigkeit, sich mit Drittanbieterdiensten zu integrieren. Du kannst Wetterdaten, aktuelle Nachrichten abrufen, Text übersetzen oder sogar mit KI-Modellen integrieren.

Beispiel: Einfacher API-Aufruf (mit der requests-Bibliothek)

Installieren Sie zuerst requests: pip install requests.

import requests

async def get_fact(update: Update, context):
    """Ruft eine zufällige Tatsache von einer externen API ab."""
    try:
        response = requests.get("https://uselessfacts.jsph.pl/api/v2/facts/random")
        response.raise_for_status() # Löst einen HTTPError für schlechte Antworten (4xx oder 5xx) aus
        fact_data = response.json()
        await update.message.reply_text(f"Wusstest du schon? {fact_data['text']}")
    except requests.exceptions.RequestException as e:
        logger.error(f"Fehler beim Abrufen der Tatsache: {e}")
        await update.message.reply_text("Entschuldigung, ich konnte im Moment keine Tatsache abrufen. Bitte versuche es später noch einmal.")

# Füge diesen Befehls-Handler hinzu:
# application.add_handler(CommandHandler("fact", get_fact))

Dies zeigt, wie ein Bot mit externen Datenquellen interagieren könnte, genau wie @claw sich mit verschiedenen Diensten integriert, um anspruchsvolle Funktionen bereitzustellen. Für fortgeschrittenere KI-Interaktionen solltest du Plattformen wie TeleClaw in Betracht ziehen, die die Komplexität der Integration mit Modellen wie GPT-4 oder Gemini abstrahieren. Mehr über die Integration von KI-Tools erfährst du in unserem Artikel zum Erstellen eines Telegram Chatbots.

Visuelle Darstellung eines Telegram Bots, der mit einer externen API interagiert.

4. Persistente Daten und Zustandsverwaltung

Für komplexere Bots benötigst du eine Möglichkeit, Daten zwischen Interaktionen zu speichern. Zum Beispiel, wenn dein Bot Benutzereinstellungen oder laufende Konversationen speichern muss.

4.1 Verwendung von context.user_data und context.chat_data

Die python-telegram-bot-Bibliothek stellt die Dictionaries context.user_data und context.chat_data (verfügbar in deinen Handler-Funktionen) bereit, die temporäre Daten speichern können, die einem Benutzer oder einem Chat zugeordnet sind. Diese Daten bleiben für die Dauer der Laufzeit des Bots erhalten.

async def set_favorite_color(update: Update, context):
    """Ermöglicht Benutzern, ihre Lieblingsfarbe festzulegen."""
    if context.args:
        color = " ".join(context.args).strip()
        context.user_data["favorite_color"] = color
        await update.message.reply_text(f"Okay, ich habe deine Lieblingsfarbe als {color} notiert.")
    else:
        await update.message.reply_text("Bitte nenne mir deine Lieblingsfarbe, z.B. /setcolor blau")

async def get_favorite_color(update: Update, context):
    """Teilt dem Benutzer seine Lieblingsfarbe mit."""
    color = context.user_data.get("favorite_color")
    if color:
        await update.message.reply_text(f"Deine Lieblingsfarbe ist {color}.")
    else:
        await update.message.reply_text("Ich kenne deine Lieblingsfarbe noch nicht. Verwende /setcolor.")

# Füge diese Handler hinzu:
# application.add_handler(CommandHandler("setcolor", set_favorite_color))
# application.add_handler(CommandHandler("getcolor", get_favorite_color))

4.2 Daten über Neustarts hinweg speichern

Damit Daten auch dann erhalten bleiben, wenn dein Bot-Skript neu gestartet wird, benötigst du eine robustere Lösung, wie zum Beispiel:

  • Dateien (CSV, JSON): Einfach für kleine Datenmengen.
  • Datenbanken (SQLite, PostgreSQL, MongoDB): Empfohlen für größere, komplexere Datenspeicherung. SQLite ist eine gute Wahl für die lokale Entwicklung, da es dateibasiert ist und keinen separaten Server erfordert.
  • Drittanbieter-Speicherlösungen: Cloud-Datenbanken wie Firestore oder DynamoDB.

Die python-telegram-bot-Bibliothek bietet auch BasePersistence-Klassen, die mit PicklePersistence oder DictPersistence verwendet werden können, um user_data, chat_data und bot_data in einer Datei zu speichern. Informationen zur Verwendung von Persistenz findest du in den offiziellen python-telegram-bot-Beispielen (https://docs.python-telegram-bot.org/en/stable/telegram.ext.basepersistence.html).

5. Überlegungen zur Bereitstellung

Deinen Bot auf deinem lokalen Rechner auszuführen, ist für die Entwicklung in Ordnung, aber damit er 24/7 zugänglich ist, musst du ihn auf einem Server bereitstellen.

5.1 Polling vs. Webhooks

Es gibt zwei primäre Wege, wie ein Telegram Bot Updates empfängt:

  • Long Polling: Dein Bot fragt wiederholt Telegram-Server nach neuen Updates. Dies ist das, was wir mit application.run_polling() verwendet haben. Einfach einzurichten, kann aber für sehr aktive Bots ressourcenintensiv sein.
  • Webhooks: Du teilst Telegram die URL deines Servers mit. Wenn ein Update auftritt, sendet Telegram eine HTTP POST-Anfrage an diese URL. Effizienter für die Produktion, erfordert aber einen öffentlich zugänglichen Server und die Handhabung von HTTPS.

Für einfache Bots und die anfängliche Entwicklung ist Long Polling ausreichend. Für die Produktion werden Webhooks im Allgemeinen bevorzugt. Die python-telegram-bot-Bibliothek unterstützt beides.

5.2 Bereitstellungsplattformen

Mehrere Plattformen eignen sich für die Bereitstellung von Python-Bots:

  • Heroku: Ideal für kleine bis mittelgroße Projekte, mit einem kostenlosen Tarif. Einfach mit git bereitzustellen.
  • Render: Ähnlich wie Heroku, aber oft mit großzügigeren kostenlosen Tarifen und modernen Funktionen.
  • AWS (EC2, Lambda), Google Cloud (Compute Engine, Cloud Functions), Azure (App Service, Functions): Bieten leistungsstarke, skalierbare Lösungen, haben aber eine steilere Lernkurve.
  • Virtual Private Server (VPS): Dienste wie DigitalOcean, Linode, Vultr geben dir mehr Kontrolle, aber du bist für die Serververwaltung verantwortlich.

Denke bei der Bereitstellung daran:

  • Halte dein API-Token sicher: Verwende Umgebungsvariablen.
  • Installieren von Abhängigkeiten: Erstelle eine requirements.txt-Datei (pip freeze > requirements.txt) und stelle sicher, dass dein Host diese installiert.
  • Prozessmanager konfigurieren: Tools wie systemd oder pm2 können deinen Bot am Laufen halten, selbst wenn er abstürzt.

Für kommerzielle Anwendungen oder hochskalierbare KI-gestützte Bots bieten Plattformen wie TeleClaw eine robuste, verwaltete Umgebung. Sie kümmern sich um die Infrastruktur, Sicherheit und Skalierung, sodass du dich auf die Logik deines Bots und das Benutzererlebnis konzentrieren kannst. Schau dir unseren detaillierten Leitfaden zum Telegram Bot für Unternehmen an, um zu sehen, was TeleClaw bietet.

Fazit

Du hast nun die Kernprinzipien der Entwicklung einer Telegram Bot Python Anwendung kennengelernt. Von der ersten Einrichtung mit BotFather und der Umgebungskonfiguration über das Schreiben von Handlern für Befehle und Nachrichten, die Verarbeitung verschiedener Datentypen bis hin zu Überlegungen zur Bereitstellung hast du eine solide Grundlage. Die python-telegram-bot-Bibliothek macht die Interaktion mit der Telegram API überraschend einfach und eröffnet eine Welt voller Möglichkeiten für Automatisierung und Interaktion.

Wenn du dich wohler fühlst, kannst du fortgeschrittene Themen erkunden wie:

  • Konversationsverwaltung mit ConversationHandler.
  • Fehlerbehandlung und robustes Logging.
  • Integration mit Datenbanken für komplexe Datenspeicherung.
  • Nutzung fortgeschrittenerer filters.
  • Implementierung des Inline-Modus für globale Suchfunktionen.

Denke daran, die Schönheit der Offenheit von Telegram und der Vielseitigkeit von Python liegt darin, dass du fast alles bauen kannst. Wenn du deinen Bot mit modernster KI, natürlichem Sprachverständnis oder nahtlosen Integrationen ohne großen Programmieraufwand aufwerten möchtest, sind Plattformen wie TeleClaw darauf ausgelegt, dich zu unterstützen.

Bereit, deine Telegram Bots mit intelligenter Automatisierung zu erstellen, zu verbessern oder zu verwalten?

Entdecke TeleClaw noch heute und beschleunige deinen Telegram Bot! oder probiere unseren Bot direkt auf Telegram aus: @claw

FAQ

Häufig gestellte Fragen

Was sind die grundlegenden Schritte, um einen Telegram Bot mit Python zu erstellen?
Die grundlegenden Schritte umfassen die Erstellung eines neuen Bots mit BotFather, um ein API-Token zu erhalten, die Installation der `python-telegram-bot`-Bibliothek, das Schreiben von Python-Code zur Verarbeitung von Nachrichten und Befehlen und anschließend das Ausführen deines Skripts. Für erweiterte Funktionen oder KI-Integration können Plattformen wie TeleClaw den Prozess erheblich vereinfachen.
Benötige ich Programmierkenntnisse, um dieser Anleitung für einen Telegram Bot mit Python zu folgen?
Obwohl grundlegende Python-Kenntnisse hilfreich sind, ist diese Anleitung so konzipiert, dass sie leicht verständlich ist. Wir führen dich Schritt für Schritt durch und erklären die Konzepte klar. Für diejenigen, die einen No-Code-Ansatz bevorzugen, bietet TeleClaw leistungsstarke Tools zum Erstellen von Telegram Bots, ohne überhaupt Code schreiben zu müssen.
Wie kann TeleClaw bei meinem Telegram Bot Python Projekt helfen?
TeleClaw kann dein Telegram Bot Python Projekt durch fortschrittliche KI-Funktionen, einfache Integrationen und robuste Analysen verbessern. Du kannst TeleClaw für komplexes natürliches Sprachverständnis, Wissensdatenbank-Integration oder zur effizienten Verwaltung mehrerer Bots nutzen, selbst wenn du mit einem Python-basierten benutzerdefinierten Bot begonnen hast.
Mehr Artikel

Weiter lesen