\n\n\n\n Mein Telegram-Bot verwendet jetzt externe APIs - AI7Bot \n

Mein Telegram-Bot verwendet jetzt externe APIs

📖 15 min read2,890 wordsUpdated Mar 27, 2026

Hallo, Bot-Bauer und Automatisierungsbegeisterte! Marcus Rivera hier, zurück von ai7bot.com. Heute möchte ich über etwas reden, das in meinen eigenen Projekten in letzter Zeit für Aufregung gesorgt hat, etwas, das sich wie eine Superkraft anfühlt, wenn man es endlich richtig macht: die Integration externer APIs in deine Bots. Genauer gesagt, werden wir erkunden, wie du deine Telegram-Bots intelligenter, dynamischer und ehrlich gesagt, viel nützlicher machen kannst, indem du Daten aus der Außenwelt abrufst.

Es ist 2026, und wenn dein Bot nur Benutzereingaben wiederholt oder statische Antworten gibt, verpasst du eine riesige Gelegenheit. Die wahre Magie passiert, wenn dein Bot Informationen abrufen, verarbeiten und sie dem Benutzer auf sinnvolle Weise zurückgeben kann. Denk darüber nach: Ein Wetter-Bot ist nicht nur ein Bot; er ist ein Fenster zu einer Wetter-API. Ein Aktien-Tracker-Bot? Das ist ein API-Client in Verkleidung. Ein Bot, der dir hilft, das nächstgelegene offene Café zu finden? Ganz genau – eine API-Integration.

Ich erinnere mich an mein erstes Experiment in diesem Bereich. Ich baute einen einfachen Telegram-Bot für meine Freunde und mich, um die Statistiken unserer D&D-Kampagne zu verfolgen. Wir aktualisierten manuell ein Google Sheet, und es war ein Chaos. Ich dachte mir: „Was wäre, wenn der Bot die aktuellen Lebenspunkte unserer Charaktere direkt aus dem Sheet abrufen könnte?“ Das war der Moment, als die Google Sheets API ins Spiel kam. Es ging nicht nur darum, den Bot sprechen zu lassen; es ging darum, ihn zu einer Brücke zu Daten zu machen. Und lass mich dir sagen, dieses Gefühl, als der Bot die richtigen HP für Sir Reginald den Paladin abrief? Reines Gold.

Warum externe APIs die besten Freunde deines Bots sind

Sehen wir es klar: Ein Bot ohne externe Daten ist wie ein Auto ohne Benzin. Es sieht schön aus, hat vielleicht ein paar coole Funktionen, aber es kommt nicht an interessante Orte. APIs (Application Programming Interfaces) sind die Art und Weise, wie verschiedene Softwareanwendungen miteinander kommunizieren. Sie definieren die Regeln, wie du Informationen anfordern oder Befehle an einen anderen Dienst senden kannst.

Für deinen Bot bedeutet das:

  • Frische Daten: Kein hartkodiertes Wissen mehr, das schnell veraltet. Dein Bot kann immer die neuesten Wetterdaten, Aktienkurse, Nachrichtenüberschriften oder was auch immer du an Echtzeitdaten brauchst, liefern.
  • Erweiterte Funktionalität: Du musst nicht jede Funktion von Grund auf neu entwickeln. Möchtest du Text übersetzen? Benutze eine Übersetzungs-API. Musst du Währungen umrechnen? Dafür gibt es eine API. Dein Bot wird zu einem Hub, der die Benutzer mit einer Vielzahl von Diensten verbindet.
  • Personalisierung: Mit externen Daten kann dein Bot personalisierte Erlebnisse bieten. Stell dir einen Bot vor, der deinen Flugstatus verfolgt, dich an bevorstehende Ereignisse aus deinem Kalender erinnert oder sogar Filme vorschlägt basierend auf deiner Sehgeschichte – alles angetrieben von APIs.
  • Automatisierung: Über das Abrufen von Daten hinaus ermöglichen APIs deinem Bot, Aktionen in anderen Diensten auszulösen. Denke an einen Bot, der eine Aufgabe in deinem Projektmanagement-Tool erstellen, eine E-Mail senden oder sogar Smart-Home-Geräte steuern kann.

Meine eigene Reise mit APIs begann wirklich, als ich anfing, einen Bot für eine kleine lokale Gemeinschaftsgruppe zu entwickeln. Sie benötigten eine Möglichkeit, schnell den lokalen Fahrplan der Busse zu überprüfen. Die Stadt hatte eine API für öffentliche Verkehrsmittel, und die Integration bedeutete, dass die Benutzer einfach etwas wie „/bus 12 Main St“ eingeben konnten und Echtzeit-Ankunftsvorhersagen bekamen. Es war nicht nur eine Bequemlichkeit; es veränderte, wie sie mit Informationen über öffentliche Verkehrsmittel interagierten. Dieses Projekt, so einfach es auch war, zeigte mir die wahre Kraft der Verbindung eines Bots mit der realen Welt.

Erste Schritte: Die Grundlagen der API-Interaktion

Bevor wir in spezifische Beispiele eintauchen, lassen Sie uns die absoluten Grundlagen abdecken. Die meisten APIs, mit denen du interagieren wirst, sind Web-APIs, was bedeutet, dass sie über HTTP kommunizieren. Du wirst normalerweise HTTP-Anfragen (GET, POST, PUT, DELETE) an bestimmte URLs (Endpunkte) senden und Antworten erhalten, normalerweise im JSON-Format.

Authentifizierung: Der Tore Wächter

Viele APIs erfordern eine Authentifizierung. So erkennt die API, wer du bist und ob du die Berechtigung hast, auf die Daten zuzugreifen oder Aktionen durchzuführen. Häufige Authentifizierungsmethoden sind:

  • API-Keys: Eine einzigartige Zeichenfolge, die du in deiner Anfrage, oft als Header oder Abfrageparameter, einfügst. Dies ist wahrscheinlich die gängigste Methode für öffentliche Daten-APIs.
  • OAuth 2.0: Komplexer, wird verwendet, wenn dein Bot auf benutzerspezifische Daten von einem Drittanbieterdienst (z.B. Google Kalender, Twitter) zugreifen muss. Dies beinhaltet, den Benutzer zu dem Dienst weiterzuleiten, um die Erlaubnis zu erteilen.
  • Basic Auth: Senden eines Benutzernamens und Passworts (base64-kodiert) mit jeder Anfrage. Weniger verbreitet für moderne Web-APIs.

Für die meisten einfachen Datenabruf- Bots wirst du nach einem API-Key suchen. Wenn du dich für einen API-Dienst anmeldest, stellen sie dir normalerweise einen zur Verfügung. Bewahre diese Schlüssel geheim! Hardcodiere sie nicht direkt in dein öffentliches Code-Repository.

Anfragen stellen und Antworten verarbeiten

In Python ist die requests-Bibliothek dein bester Freund, wenn es darum geht, HTTP-Anfragen zu stellen. Es ist unglaublich einfach zu bedienen und macht die Verarbeitung von Antworten zum Kinderspiel.

Hier ist ein ganz einfaches Beispiel, wie man Daten von einer hypothetischen „Chuck Norris Witze“-API abruft:


import requests

def get_chuck_norris_joke():
 url = "https://api.chucknorris.io/jokes/random"
 try:
 response = requests.get(url)
 response.raise_for_status() # Wirft einen HTTPError für schlechte Antworten (4xx oder 5xx)
 joke_data = response.json()
 return joke_data['value']
 except requests.exceptions.RequestException as e:
 print(f"Fehler beim Abrufen eines Chuck Norris Witzes: {e}")
 return "Konnte gerade keinen Witz abrufen. Chuck Norris ist wahrscheinlich zu beschäftigt damit, großartig zu sein."

if __name__ == "__main__":
 joke = get_chuck_norris_joke()
 print(joke)

In diesem Snippet:

  • Wir definieren die API-Endpunkt-URL.
  • requests.get(url) sendet eine GET-Anfrage.
  • response.raise_for_status() ist eine gute Praxis, um automatisch nach HTTP-Fehlern zu prüfen.
  • response.json() parst die JSON-Antwort in ein Python-Wörterbuch.
  • Wir greifen dann auf den spezifischen Teil des Wörterbuchs zu, der den Witz enthält.
  • Fehlerbehandlung mit einem try-except-Block ist entscheidend für solide Bots.

Meine ersten Versuche damit waren voll von KeyError-Ausnahmen, weil ich es nicht für notwendig hielt, die JSON-Antwort schön anzuzeigen und tatsächlich ihre Struktur zu sehen. Lerne aus meinen Fehlern: Überprüfe immer die JSON-Struktur, bevor du versuchst, Daten daraus abzurufen! Werkzeuge wie Postman oder sogar einfaches Ausdrucken von response.json() in deinem Skript können dir eine Menge Kopfschmerzen ersparen.

Praktisches Beispiel 1: Ein einfacher Wetter-Bot (OpenWeatherMap API)

Lass uns ein praktisches Beispiel erstellen. Wir werden einen Telegram-Bot-Befehl erstellen, der das aktuelle Wetter für eine angegebene Stadt unter Verwendung der OpenWeatherMap API abruft. Du benötigst einen API-Key von OpenWeatherMap (sie haben einen kostenlosen Tarif).

Schritt 1: Hole dir deinen API-Key

Gehe zu OpenWeatherMap, melde dich an und generiere einen API-Key. Nehmen wir an, du speicherst ihn in einer Umgebungsvariablen oder einer Konfigurationsdatei (hardcode ihn niemals direkt in deinem Bot-Code für die Produktion!). Für dieses Beispiel verwende ich einen Platzhalter.

Schritt 2: Python-Code zum Abrufen des Wetters


import requests
import os

# Ersetze durch deinen tatsächlichen OpenWeatherMap API-Key oder hole ihn aus der Umgebung
OPENWEATHER_API_KEY = os.getenv("OPENWEATHER_API_KEY", "YOUR_OPENWEATHER_API_KEY_HERE")

def get_current_weather(city_name):
 base_url = "http://api.openweathermap.org/data/2.5/weather"
 params = {
 "q": city_name,
 "appid": OPENWEATHER_API_KEY,
 "units": "metric" # oder 'imperial' für Fahrenheit
 }

 try:
 response = requests.get(base_url, params=params)
 response.raise_for_status()
 weather_data = response.json()

 if weather_data.get("cod") == "404":
 return f"Konnte keine Wetterdaten für {city_name} finden. Bitte prüfe den Städtenamen."

 main_weather = weather_data['weather'][0]['description']
 temperature = weather_data['main']['temp']
 feels_like = weather_data['main']['feels_like']
 humidity = weather_data['main']['humidity']
 wind_speed = weather_data['wind']['speed']

 return (f"Aktuelles Wetter in {city_name.title()}:\n"
 f"Beschreibung: {main_weather.capitalize()}\n"
 f"Temperatur: {temperature}°C (fühlt sich an wie {feels_like}°C)\n"
 f"Luftfeuchtigkeit: {humidity}%\n"
 f"Windgeschwindigkeit: {wind_speed} m/s")

 except requests.exceptions.RequestException as e:
 print(f"Fehler beim Abrufen des Wetters für {city_name}: {e}")
 return "Entschuldige, ich habe gerade Schwierigkeiten, Wetterdaten abzurufen."
 except KeyError as e:
 print(f"Key-Fehler in den Wetterdaten für {city_name}: {e}. Antwort: {weather_data}")
 return "Etwas ist schiefgelaufen beim Parsen der Wetterdaten. Versuche es später nochmal."

if __name__ == "__main__":
 print(get_current_weather("London"))
 print(get_current_weather("NonexistentCity123"))

Beachte, wie wir Parameter wie q (Stadtname), appid (dein API-Key) und units als Dictionary an requests.get() übergeben. Die requests-Bibliothek kümmert sich automatisch um die Kodierung dieser in die URL-Abfragezeichenfolge.

Schritt 3: Integriere mit deinem Telegram-Bot

Jetzt lass uns das mit einem Telegram-Bot verbinden. Ich werde python-telegram-bot dafür verwenden. Wenn du noch keinen Bot-Token hast, erstelle einen, indem du mit BotFather auf Telegram sprichst.


from telegram import Update
from telegram.ext import Application, CommandHandler, ContextTypes
import os

# Dein Telegram Bot Token (erhalten von BotFather)
TELEGRAM_BOT_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN", "DEIN_TELEGRAM_BOT_TOKEN_HIER")
# Dein OpenWeatherMap API Schlüssel
OPENWEATHER_API_KEY = os.getenv("OPENWEATHER_API_KEY", "DEIN_OPENWEATHER_API_KEY_HIER")

# Stelle sicher, dass die Funktion get_current_weather oben definiert oder importiert ist
def get_current_weather(city_name):
 base_url = "http://api.openweathermap.org/data/2.5/weather"
 params = {
 "q": city_name,
 "appid": OPENWEATHER_API_KEY,
 "units": "metric"
 }
 try:
 response = requests.get(base_url, params=params)
 response.raise_for_status()
 weather_data = response.json()

 if weather_data.get("cod") == "404":
 return f"Kann das Wetter für {city_name} nicht finden. Bitte überprüfe den Städtenamen."

 main_weather = weather_data['weather'][0]['description']
 temperature = weather_data['main']['temp']
 feels_like = weather_data['main']['feels_like']
 humidity = weather_data['main']['humidity']
 wind_speed = weather_data['wind']['speed']

 return (f"Aktuelles Wetter in {city_name.title()}:\n"
 f"Beschreibung: {main_weather.capitalize()}\n"
 f"Temperatur: {temperature}°C (fühlt sich an wie {feels_like}°C)\n"
 f"Luftfeuchtigkeit: {humidity}%\n"
 f"Windgeschwindigkeit: {wind_speed} m/s")

 except requests.exceptions.RequestException as e:
 print(f"Fehler beim Abrufen des Wetters für {city_name}: {e}")
 return "Entschuldigung, ich habe gerade Probleme, Wetterdaten abzurufen."
 except KeyError as e:
 print(f"Schlüssel-Fehler in den Wetterdaten für {city_name}: {e}. Antwort: {weather_data}")
 return "Bei der Verarbeitung der Wetterdaten ist etwas schiefgelaufen. Versuch es später noch einmal."


async def start_command(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
 await update.message.reply_text("Hallo! Ich bin ein Bot, der dir das Wetter sagen kann. Versuch /weather <city_name>")

async def weather_command(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
 if not context.args:
 await update.message.reply_text("Bitte gib einen Städtenamen an. Verwendung: /weather <city_name>")
 return
 
 city_name = " ".join(context.args)
 weather_info = get_current_weather(city_name)
 await update.message.reply_text(weather_info)

def main() -> None:
 application = Application.builder().token(TELEGRAM_BOT_TOKEN).build()

 application.add_handler(CommandHandler("start", start_command))
 application.add_handler(CommandHandler("weather", weather_command))

 application.run_polling(allowed_updates=Update.ALL_TYPES)

if __name__ == "__main__":
 main()

Um dies auszuführen, stelle sicher, dass du python-telegram-bot und requests installiert hast: pip install python-telegram-bot requests. Ersetze dann die Platzhalter-API-Schlüssel und führe das Skript aus. Du kannst dann /weather London an deinen Bot senden, und er sollte mit dem aktuellen Wetter antworten!

Dies ist ein grundlegendes Muster für viele API-Integrationen: Benutzereingaben lösen eine Funktion aus, diese Funktion ruft eine API auf, verarbeitet die Daten und sendet eine formatierte Antwort zurück an den Benutzer.

Praktisches Beispiel 2: Daten senden (POST-Anfrage) – Ein einfacher Todo-Bot

Nicht alle API-Interaktionen drehen sich nur um das Abrufen von Daten. Manchmal muss dein Bot Daten an einen externen Dienst senden. Stellen wir uns vor, wir wollen einen Bot, der Elemente zu einer sehr einfachen, hypothetischen „Todo“-API hinzufügen kann. Diese API erwartet eine POST-Anfrage mit dem Todo-Element im Anforderungstext.

Für dieses Beispiel werde ich einen einfachen API-Endpunkt simulieren, indem ich ein lokales Webserver-Framework wie Flask verwende. In einer realen Situation wäre dies ein entfernter Dienst, mit dem du interagierst.

Simulierte Todo-API (Flask)

Erstelle eine Datei mit dem Namen todo_api.py:


from flask import Flask, request, jsonify

app = Flask(__name__)
todos = []
todo_id_counter = 1

@app.route('/todos', methods=['POST'])
def add_todo():
 global todo_id_counter
 data = request.json
 if not data or 'task' not in data:
 return jsonify({"error": "Fehlende 'task' im Anforderungstext"}), 400
 
 new_todo = {"id": todo_id_counter, "task": data['task'], "completed": False}
 todos.append(new_todo)
 todo_id_counter += 1
 return jsonify(new_todo), 201

@app.route('/todos', methods=['GET'])
def get_todos():
 return jsonify(todos)

if __name__ == '__main__':
 app.run(port=5000, debug=True)

Führe dies mit pip install Flask aus und dann python todo_api.py. Es wird einen Server auf http://127.0.0.1:5000 starten.

Bot-Code zum Hinzufügen eines Todo-Elements


import requests
from telegram import Update
from telegram.ext import Application, CommandHandler, ContextTypes
import os

TELEGRAM_BOT_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN", "DEIN_TELEGRAM_BOT_TOKEN_HIER")
TODO_API_BASE_URL = "http://127.0.0.1:5000" # Unsere lokale Flask-API

async def start_command(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
 await update.message.reply_text("Hallo! Ich bin ein Todo-Bot. Verwende /add_todo <task> um eine Aufgabe hinzuzufügen.")

async def add_todo_command(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
 if not context.args:
 await update.message.reply_text("Bitte gib eine Aufgabe an. Verwendung: /add_todo <task>")
 return
 
 task_description = " ".join(context.args)
 endpoint = f"{TODO_API_BASE_URL}/todos"
 headers = {"Content-Type": "application/json"}
 payload = {"task": task_description}

 try:
 response = requests.post(endpoint, json=payload, headers=headers)
 response.raise_for_status() # Überprüfe auf HTTP-Fehler
 
 todo_item = response.json()
 await update.message.reply_text(f"Aufgabe '{todo_item['task']}' (ID: {todo_item['id']}) erfolgreich hinzugefügt!")

 except requests.exceptions.RequestException as e:
 print(f"Fehler beim Hinzufügen des Todos: {e}")
 await update.message.reply_text("Entschuldigung, ich konnte die Aufgabe gerade nicht hinzufügen. Der Todo-Dienst könnte offline sein.")
 except Exception as e:
 print(f"Ein unerwarteter Fehler ist aufgetreten: {e}")
 await update.message.reply_text("Ein unerwarteter Fehler ist beim Hinzufügen der Aufgabe aufgetreten.")

def main() -> None:
 application = Application.builder().token(TELEGRAM_BOT_TOKEN).build()

 application.add_handler(CommandHandler("start", start_command))
 application.add_handler(CommandHandler("add_todo", add_todo_command))

 application.run_polling(allowed_updates=Update.ALL_TYPES)

if __name__ == "__main__":
 main()

In diesem Beispiel ist requests.post(endpoint, json=payload, headers=headers) der Schlüsselteil. Wir geben die POST-Methode an, senden unsere Daten als JSON-Nutzlast und setzen den Content-Type-Header, um anzuzeigen, dass wir JSON senden.

Als ich anfing, POST-Anfragen zu lernen, vergaß ich oft den Content-Type-Header. Meine Anfragen schlugen oft mit kryptischen Fehlern von APIs mit „nicht unterstütztem Medientyp“ fehl. Überprüfe immer die API-Dokumentation auf benötigte Header und das Format des Anforderungstexts (JSON, Formulardaten usw.). Das ist eine Lektion, die ich auf die harte Tour gelernt habe!

Handlungsorientierte Erkenntnisse für deine Bot-Projekte

Die Integration von APIs in deine Bots ist eine Fähigkeit, die eine Welt von Möglichkeiten eröffnet. Hier ist, was ich möchte, dass du dir merkst:

  1. Starte einfach: Versuche nicht, eine komplexe OAuth 2.0 API als dein erstes Projekt zu integrieren. Beginne mit öffentlichen APIs, die eine einfache API-Schlüssel-Authentifizierung und GET-Anfragen verwenden.
  2. Lesen der Dokumentation: Im Ernst, das ist nicht verhandelbar. Jede API hat ihre Eigenheiten. Verstehe die Endpunkte, erforderlichen Parameter, Authentifizierungsmethoden und Antwortformate. Das wird dir Stunden des Debuggens sparen.
  3. Antworten inspizieren: Verwende print-Anweisungen oder ein Tool wie Postman, um die Roh-JSON-Antwort von einer API zu untersuchen. Das hilft dir, ihre Struktur zu verstehen und die benötigten Daten korrekt zuzugreifen.
  4. Fehlerbehandlung ist entscheidend: APIs können aus vielen Gründen fehlschlagen (Netzwerkprobleme, Ratenbegrenzungen, ungültige Anfragen, Serverfehler). Umhülle deine API-Aufrufe immer in try-except-Blöcken und gib hilfreiche Nachrichten an deine Bot-Nutzer weiter.
  5. Schütze deine API-Schlüssel: Hardcode niemals sensible Informationen wie API-Schlüssel direkt in deinen Code, insbesondere wenn er in ein öffentliches Repository gelangt. Verwende Umgebungsvariablen oder ein sicheres Konfigurationsmanagement-System.
  6. Ratenlimits: Sei dir bewusst, dass die meisten APIs Ratenlimits haben (wie viele Anfragen du in einem bestimmten Zeitraum machen kannst). Dein Bot sollte damit vernünftig umgehen, vielleicht indem er wartet und es erneut versucht oder den Benutzer informiert.
  7. Berücksichtige asynchrone Operationen: Für komplexere Bots oder APIs, die eine Weile brauchen, um zu antworten, ziehe es in Betracht, asynchrone Programmierung (z.B. Pythons asyncio) zu verwenden, um zu verhindern, dass dein Bot einfriert, während er auf den Abschluss eines API-Aufrufs wartet.

Der Weg von einem einfachen Echo-Bot zu einem wirklich intelligenten, datengestützten Assistenten ist gepflastert mit erfolgreichen API-Integrationen. An diesem Punkt hört dein Bot auf, nur ein Programm zu sein, und beginnt, ein leistungsstarkes Werkzeug zu werden, das Benutzer mit dem riesigen Ozean von Informationen und Diensten verbindet, die online verfügbar sind.

Also gehe voran, wähle eine interessante API und fang an zu experimentieren! Deine Nutzer (und deine D&D-Gruppe) werden es dir danken. Bis zum nächsten Mal, viel Spaß beim Botbauen!

Verwandte Artikel

🕒 Published:

💬
Written by Jake Chen

Bot developer who has built 50+ chatbots across Discord, Telegram, Slack, and WhatsApp. Specializes in conversational AI and NLP.

Learn more →
Browse Topics: Best Practices | Bot Building | Bot Development | Business | Operations
Scroll to Top