\n\n\n\n Mon bot Telegram utilise maintenant des API externes - AI7Bot \n

Mon bot Telegram utilise maintenant des API externes

📖 18 min read3,421 wordsUpdated Mar 27, 2026

Salut à tous, créateurs de bots et passionnés d’automatisation ! Marcus Rivera ici, de retour de ai7bot.com. Aujourd’hui, je veux parler de quelque chose qui a fait beaucoup de bruit dans mes projets ces derniers temps, quelque chose qui ressemble à un superpouvoir quand vous parvenez enfin à le maîtriser : l’intégration d’APIs externes dans vos bots. Plus précisément, nous allons explorer comment rendre vos bots Telegram plus intelligents, plus dynamiques, et franchement, beaucoup plus utiles en tirant des données du monde extérieur.

Nous sommes en 2026, et si votre bot se contente de répéter les entrées des utilisateurs ou de fournir des réponses statiques, vous passez à côté d’une énorme opportunité. La vraie magie se produit lorsque votre bot peut aller chercher des informations, les traiter, et les renvoyer à l’utilisateur de manière significative. Pensez-y : un bot météo n’est pas juste un bot ; c’est une fenêtre vers une API météorologique. Un bot de suivi des actions ? C’est un client API déguisé. Un bot qui vous aide à trouver le café le plus proche ouvert ? Vous l’avez deviné – une intégration API.

Je me souviens de ma première incursion dans ce domaine. Je construisais un simple bot Telegram pour que mes amis et moi puissions suivre les statistiques de notre campagne D&D. Nous mettions à jour manuellement une feuille Google, et c’était le bazar. J’ai pensé : “Et si le bot pouvait simplement tirer la santé actuelle de nos personnages directement de la feuille ?” C’est là que l’API Google Sheets est entrée en jeu. Ce n’était pas seulement une question de faire parler le bot ; il s’agissait de le transformer en un pont vers les données. Et laissez-moi vous dire, ce sentiment quand le bot a récupéré les PV corrects pour Sir Reginald le Paladin ? De l’or pur.

Pourquoi les APIs Externes Sont le Meilleur Ami de Votre Bot

Soyons clairs : un bot sans données externes est comme une voiture sans carburant. Ça a l’air bien, ça a peut-être quelques fonctionnalités intéressantes, mais ça n’ira nulle part d’intéressant. Les APIs (Interfaces de Programmation d’Applications) sont la façon dont différentes applications logicielles communiquent entre elles. Elles définissent les règles pour savoir comment vous pouvez demander des informations ou envoyer des commandes à un autre service.

Pour votre bot, cela signifie :

  • Données Fraîches : Plus besoin de coder en dur des informations qui deviennent rapidement obsolètes. Votre bot peut toujours fournir la météo la plus récente, les prix des actions, les titres d’actualités ou n’importe quelles données en temps réel dont vous avez besoin.
  • Fonctionnalités Étendues : Vous n’avez pas à construire chaque fonctionnalité depuis le début. Vous voulez traduire du texte ? Utilisez une API de traduction. Vous devez convertir des devises ? Il y a une API pour ça. Votre bot devient un hub qui connecte les utilisateurs à une multitude de services.
  • Personnalisation : Avec des données externes, votre bot peut offrir des expériences plus personnalisées. Imaginez un bot qui suit l’état de votre vol, vous rappelle des événements à venir de votre calendrier, ou même suggère des films en fonction de votre historique de visionnage, le tout alimenté par des APIs.
  • Automatisation : Au-delà de simplement récupérer des données, les APIs permettent à votre bot de déclencher des actions dans d’autres services. Pensez à un bot qui peut créer une tâche dans votre outil de gestion de projet, envoyer un email, ou même contrôler des appareils domestiques intelligents.

Mon propre parcours avec les APIs a vraiment commencé lorsque j’ai commencé à construire un bot pour un petit groupe communautaire local. Ils avaient besoin d’un moyen de vérifier rapidement les horaires de bus locaux. La ville avait une API de transport public, et l’intégration signifiait que les utilisateurs pouvaient simplement taper quelque chose comme “/bus 12 Main St” et obtenir des prévisions d’arrivée en temps réel. Ce n’était pas seulement un confort ; cela a transformé la façon dont ils interagissaient avec l’information sur les transports publics. Ce projet, aussi simple soit-il, m’a montré le véritable pouvoir de connecter un bot au monde réel.

Commencer : Les Bases de l’Interaction avec les APIs

Avant de plonger dans des exemples spécifiques, couvrons les bases absolues. La plupart des APIs avec lesquelles vous interagirez sont des APIs web, ce qui signifie qu’elles communiquent via HTTP. Vous ferez généralement des requêtes HTTP (GET, POST, PUT, DELETE) à des URLs spécifiques (points de terminaison) et recevrez des réponses, généralement au format JSON.

Authentification : Le Gardien

De nombreuses APIs nécessitent une authentification. C’est ainsi que l’API sait qui vous êtes et si vous avez la permission d’accéder aux données ou d’effectuer des actions. Les méthodes d’authentification courantes incluent :

  • Clés API : Une chaîne unique que vous incluez dans votre requête, souvent en tant qu’en-tête ou paramètre de requête. C’est probablement la plus courante pour les APIs de données publiques.
  • OAuth 2.0 : Plus complexe, utilisé lorsque votre bot doit accéder à des données spécifiques à l’utilisateur à partir d’un service tiers (par exemple, Google Calendar, Twitter). Cela implique de rediriger l’utilisateur vers le service pour accorder l’autorisation.
  • Authentification de Base : L’envoi d’un nom d’utilisateur et d’un mot de passe (encodés en base64) avec chaque requête. Moins courant pour les APIs web modernes.

Pour la plupart des bots de récupération de données simples, une clé API est ce que vous chercherez. Lorsque vous vous inscrivez pour un service API, ils vous fournissent généralement une. Gardez ces clés secrètes ! Ne les codez pas directement dans votre dépôt de code public.

Faire des Requêtes et Gérer les Réponses

En Python, la bibliothèque requests est votre meilleur ami pour faire des requêtes HTTP. C’est incroyablement facile à utiliser et cela facilite le traitement des réponses.

Voici un exemple super basique de récupération de données d’une API hypothétique “Chuck Norris Jokes” :


import requests

def get_chuck_norris_joke():
 url = "https://api.chucknorris.io/jokes/random"
 try:
 response = requests.get(url)
 response.raise_for_status() # Provoque une HTTPError pour les mauvaises réponses (4xx ou 5xx)
 joke_data = response.json()
 return joke_data['value']
 except requests.exceptions.RequestException as e:
 print(f"Erreur lors de la récupération de la blague de Chuck Norris : {e}")
 return "Impossible de récupérer une blague pour le moment. Chuck Norris est probablement trop occupé à être génial."

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

Dans cet extrait :

  • Nous définissons l’URL du point de terminaison API.
  • requests.get(url) envoie une requête GET.
  • response.raise_for_status() est une bonne pratique pour vérifier automatiquement les erreurs HTTP.
  • response.json() analyse la réponse JSON dans un dictionnaire Python.
  • Nous accédons ensuite à la partie spécifique du dictionnaire qui contient la blague.
  • La gestion des erreurs avec un bloc try-except est cruciale pour des bots solides.

Mes premières tentatives à ce sujet étaient pleines d’exceptions KeyError parce que je n’avais pas pris la peine d’afficher joliment la réponse JSON et de voir sa structure. Apprenez de mes erreurs : inspectez toujours la structure JSON avant d’essayer d’en extraire des données ! Des outils comme Postman ou même simplement afficher response.json() dans votre script peuvent vous éviter bien des maux de tête.

Exemple Pratique 1 : Un Bot Météo Simple (OpenWeatherMap API)

Construisons un exemple pratique. Nous allons créer une commande de bot Telegram qui récupère la météo actuelle pour une ville spécifiée en utilisant l’API OpenWeatherMap. Vous aurez besoin d’une clé API de OpenWeatherMap (ils ont un plan gratuit).

Étape 1 : Obtenez Votre Clé API

Allez sur OpenWeatherMap, inscrivez-vous, et générez une clé API. Supposons que vous la stockiez dans une variable d’environnement ou un fichier de configuration (ne la codez jamais directement dans le code de votre bot pour la production !). Pour cet exemple, j’utiliserai un espace réservé.

Étape 2 : Code Python pour Récupérer les Données Météorologiques


import requests
import os

# Remplacez par votre véritable clé API OpenWeatherMap ou obtenez-la depuis l'environnement
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" # ou 'imperial' pour 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"Impossible de trouver la météo pour {city_name}. Veuillez vérifier le nom de la ville."

 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"Météo actuelle à {city_name.title()} :\n"
 f"Description : {main_weather.capitalize()}\n"
 f"Température : {temperature}°C (ressenti comme {feels_like}°C)\n"
 f"Humidité : {humidity}%\n"
 f"Vitesse du vent : {wind_speed} m/s")

 except requests.exceptions.RequestException as e:
 print(f"Erreur lors de la récupération de la météo pour {city_name} : {e}")
 return "Désolé, j'ai des difficultés à récupérer les données météo en ce moment."
 except KeyError as e:
 print(f"Erreur de clé dans les données météo pour {city_name} : {e}. Réponse : {weather_data}")
 return "Quelque chose a mal tourné lors de l'analyse des données météo. Essayez à nouveau plus tard."

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

Remarquez comment nous passons des paramètres comme q (nom de la ville), appid (votre clé API), et units sous forme de dictionnaire à requests.get(). La bibliothèque requests gère automatiquement l’encodage de ceux-ci dans la chaîne de requête de l’URL.

Étape 3 : Intégration avec Votre Bot Telegram

Maintenant, relions cela à un bot Telegram. Je vais utiliser python-telegram-bot pour cela. Si vous n’avez pas encore de token de bot, créez-en un en discutant avec BotFather sur Telegram.


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

# Votre token de bot Telegram (obtenez-le auprès de BotFather)
TELEGRAM_BOT_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN", "YOUR_TELEGRAM_BOT_TOKEN_HERE")
# Votre clé API OpenWeatherMap
OPENWEATHER_API_KEY = os.getenv("OPENWEATHER_API_KEY", "YOUR_OPENWEATHER_API_KEY_HERE")

# Assurez-vous que la fonction get_current_weather est définie ou importée ci-dessus
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"Impossible de trouver la météo pour {city_name}. Veuillez vérifier le nom de la ville."

 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"Météo actuelle à {city_name.title()}:\n"
 f"Description: {main_weather.capitalize()}\n"
 f"Température: {temperature}°C (ressenti {feels_like}°C)\n"
 f"Humidité: {humidity}%\n"
 f"Vitesse du vent: {wind_speed} m/s")

 except requests.exceptions.RequestException as e:
 print(f"Erreur lors de la récupération de la météo pour {city_name}: {e}")
 return "Désolé, j'ai des difficultés à récupérer les données météo pour le moment."
 except KeyError as e:
 print(f"Erreur de clé dans les données météo pour {city_name}: {e}. Réponse: {weather_data}")
 return "Un problème est survenu lors de l'analyse des données météo. Réessayez plus tard."


async def start_command(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
 await update.message.reply_text("Bonjour! Je suis un bot qui peut vous dire la météo. Essayez /weather <city_name>")

async def weather_command(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
 if not context.args:
 await update.message.reply_text("Veuillez fournir un nom de ville. Utilisation: /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()

Pour exécuter ceci, assurez-vous d’avoir python-telegram-bot et requests installés : pip install python-telegram-bot requests. Ensuite, remplacez les clés API d’exemple et exécutez le script. Vous pouvez ensuite envoyer /weather London à votre bot, et il devrait répondre avec la météo actuelle!

Ceci est un modèle fondamental pour de nombreuses intégrations d’API : l’entrée utilisateur déclenche une fonction, cette fonction effectue un appel API, traite les données et renvoie une réponse formatée à l’utilisateur.

Exemple Pratique 2 : Envoi de données (requête POST) – Un simple bot Todo

Toutes les interactions avec les API ne consistent pas seulement à récupérer des données. Parfois, votre bot a besoin d’envoyer des données à un service externe. Imaginons que nous voulons un bot qui peut ajouter des éléments à une très simple API “Todo” hypothétique. Cette API attend une requête POST avec l’élément todo dans le corps de la requête.

Pour cet exemple, je vais simuler un point de terminaison API simple en utilisant un framework de serveur web local comme Flask. Dans un scénario réel, il s’agirait d’un service distant avec lequel vous interagissez.

API Todo Simulée (Flask)

Créez un fichier nommé 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": "Tâche manquante dans le corps de la requête"}), 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)

Exécutez ceci avec pip install Flask puis python todo_api.py. Cela démarrera un serveur sur http://127.0.0.1:5000.

Code du bot pour ajouter un élément Todo


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

TELEGRAM_BOT_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN", "YOUR_TELEGRAM_BOT_TOKEN_HERE")
TODO_API_BASE_URL = "http://127.0.0.1:5000" # Notre API Flask locale

async def start_command(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
 await update.message.reply_text("Bonjour! Je suis un bot todo. Utilisez /add_todo <task> pour ajouter une tâche.")

async def add_todo_command(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
 if not context.args:
 await update.message.reply_text("Veuillez fournir une tâche. Utilisation: /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() # Vérifier les erreurs HTTP
 
 todo_item = response.json()
 await update.message.reply_text(f"Tâche '{todo_item['task']}' (ID: {todo_item['id']}) ajoutée avec succès!")

 except requests.exceptions.RequestException as e:
 print(f"Erreur lors de l'ajout de todo: {e}")
 await update.message.reply_text("Désolé, je ne pouvais pas ajouter la tâche pour le moment. Le service todo pourrait être hors service.")
 except Exception as e:
 print(f"Une erreur inattendue est survenue: {e}")
 await update.message.reply_text("Une erreur inattendue est survenue lors de l'ajout de la tâche.")

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()

Dans cet exemple, requests.post(endpoint, json=payload, headers=headers) est la partie clé. Nous spécifions la méthode POST, envoyons nos données sous forme de charge utile JSON et définissons l’en-tête Content-Type pour indiquer que nous envoyons du JSON.

Lorsque j’apprenais d’abord les requêtes POST, j’oubliais souvent l’en-tête Content-Type. Mes requêtes échouaient souvent avec des erreurs cryptiques « type de média non pris en charge » de la part des API. Vérifiez toujours la documentation de l’API pour les en-têtes requis et le format du corps de requête (JSON, données de formulaire, etc.). C’est une leçon apprise à mes dépens !

Leçons Actionnables pour Vos Projets de Bot

Intégrer des API dans vos bots est une compétence qui ouvre un monde de possibilités. Voici ce que je veux que vous reteniez :

  1. Commencez Simple : N’essayez pas d’intégrer une API OAuth 2.0 complexe comme votre premier projet. Commencez par des API publiques qui utilisent une authentification simple par clé API et des requêtes GET.
  2. Lisez la Documentation : Sérieusement, c’est non négociable. Chaque API a ses particularités. Comprenez les points de terminaison, les paramètres requis, les méthodes d’authentification et les formats de réponse. Cela vous fera gagner des heures de débogage.
  3. Inspectez les Réponses : Utilisez des instructions print ou un outil comme Postman pour examiner la réponse JSON brute d’une API. Cela vous aide à comprendre sa structure et à accéder correctement aux données dont vous avez besoin.
  4. La Gestion des Erreurs est Cruciale : Les API peuvent échouer pour de nombreuses raisons (problèmes de réseau, limites de requêtes, requêtes invalides, erreurs serveur). Encapsulez toujours vos appels d’API dans des blocs try-except et fournissez des messages utiles à vos utilisateurs de bot.
  5. Protégez Vos Clés API : Ne codez jamais d’informations sensibles comme des clés API directement dans votre code, surtout si elles vont dans un dépôt public. Utilisez des variables d’environnement ou un système de gestion de configuration sécurisé.
  6. Limites de Taux : Soyez conscient que la plupart des API ont des limites de taux (combien de requêtes vous pouvez faire dans une période donnée). Votre bot devrait gérer cela gracieusement, peut-être en attendant et en réessayant, ou en informant l’utilisateur.
  7. Considérez les Opérations Asynchrones : Pour des bots plus complexes ou des API qui pourraient prendre du temps à répondre, envisagez d’utiliser la programmation asynchrone (par exemple, asyncio de Python) pour éviter que votre bot ne se fige en attendant la fin d’un appel API.

Le chemin d’un simple bot echo à un assistant véritablement intelligent et axé sur les données est pavé d’intégrations d’API réussies. C’est là que votre bot cesse d’être juste un programme et commence à devenir un outil puissant qui connecte les utilisateurs à l’immense océan d’informations et de services disponibles en ligne.

Alors allez-y, choisissez une API intéressante et commencez à expérimenter ! Vos utilisateurs (et votre groupe D&D) vous remercieront. Jusqu’à la prochaine fois, bonne construction de bot !

Articles Connexes

🕒 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