Comment utiliser l'API Telegram Bot pour automatiser l'envoi de messages ?
Découvrez comment utiliser l'API Telegram Bot pour automatiser l'envoi de messages en Python ou curl. Guide complet avec exemples, gestion des erreurs et bonnes pratiques.

Introduction à l’API Telegram Bot
L’API Telegram Bot permet à tout développeur d’automatiser l’envoi de messages dans Telegram, que ce soit pour des notifications, des rappels, des alertes ou des interactions avec les utilisateurs. Contrairement aux clients classiques, un bot peut fonctionner 24 h/24 sans intervention humaine, répondre à des commandes, envoyer des messages programmés et même gérer des conversations complexes. Cet article vous guide de la création d’un bot jusqu’à l’envoi automatisé de messages, en passant par la personnalisation du contenu, la gestion des limites et les bonnes pratiques de sécurité. Nous utilisons comme exemple la dernière version de l’API disponible au moment de la rédaction (vérifiez votre version via https://api.telegram.org/bot<TOKEN>/getMe).
1. Création d’un bot et obtention du token
Étape 1 : Dialogue avec @BotFather
Pour créer un bot Telegram, ouvrez Telegram et recherchez @BotFather (le bot officiel de gestion des bots). Envoyez la commande /newbot et suivez les instructions : choisissez un nom d’affichage (ex. « Mon Bot de Notifications ») puis un nom d’utilisateur unique se terminant par bot (ex. MonBotNotifications_bot). Une fois validé, BotFather vous renvoie un token (ex. 1234567890:ABCdefGHIJklmNOPqrSTUvwxYZ). Ce token est la clé d’authentification de votre bot ; conservez-le en lieu sûr.
Étape 2 : Vérification du token
Avant d’aller plus loin, testez votre token avec une requête simple :
curl https://api.telegram.org/bot<TOKEN>/getMe
La réponse doit contenir {"ok":true,"result":{"id":...}}. Si vous obtenez une erreur 401, vérifiez que le token est correct et qu’il n’y a pas d’espaces.
2. Envoi d’un message simple avec l’API
Méthode sendMessage
Maintenant que votre bot est créé et vérifié, passons à l’envoi de votre premier message. La méthode de base est sendMessage. Elle nécessite les paramètres chat_id (identifiant du destinataire : utilisateur, groupe ou canal) et text (le contenu du message). L’URL est :
https://api.telegram.org/bot<TOKEN>/sendMessage?chat_id=CHAT_ID&text=Bonjour%20monde
Pour obtenir le chat_id d’un utilisateur, vous pouvez envoyer un message à votre bot depuis un client Telegram, puis interroger getUpdates :
curl https://api.telegram.org/bot<TOKEN>/getUpdates
La réponse contient la liste des mises à jour ; cherchez le champ message.chat.id. Pour un groupe ou un canal, l’ID est souvent négatif (ex. -1001234567890).
Exemple avec Python (bibliothèque requests)
import requests
TOKEN = "votre_token"
CHAT_ID = "123456789"
url = f"https://api.telegram.org/bot{TOKEN}/sendMessage"
payload = {
"chat_id": CHAT_ID,
"text": "Bonjour depuis un bot Python !"
}
response = requests.post(url, data=payload)
print(response.json())
Ce script envoie un message texte simple. La réponse contient le message envoyé avec son identifiant. Si le message est trop long (plus de 4096 caractères), Telegram le tronque ; il faut alors découper le texte en plusieurs messages.
3. Personnalisation du message : formatage et enrichissement
Au-delà du texte brut, Telegram permet d’enrichir vos messages avec du formatage et des boutons interactifs, ce qui améliore l’expérience utilisateur.
Mode de parsing (parse_mode)
Le paramètre parse_mode permet d’utiliser le formatage HTML ou Markdown dans le texte. Valeurs possibles : HTML ou MarkdownV2. Exemple avec HTML :
payload = {
"chat_id": CHAT_ID,
"text": "Gras Italique Lien",
"parse_mode": "HTML"
}
Avec MarkdownV2, les caractères spéciaux comme _ ou * doivent être échappés avec un antislash. Attention : si le texte contient des erreurs de syntaxe, l’API renvoie une erreur 400.
Boutons inline et autres fonctionnalités
L’API prend en charge les boutons inline via le paramètre reply_markup. Exemple avec un bouton qui ouvre un URL :
payload = {
"chat_id": CHAT_ID,
"text": "Cliquez ci-dessous :",
"reply_markup": {
"inline_keyboard": [
[{"text": "Visiter notre site", "url": "https://example.com"}]
]
}
}
On peut aussi envoyer des photos, vidéos, documents, sondages, etc. Chaque type de média a sa propre méthode (sendPhoto, sendDocument, etc.).
4. Automatisation : programmation et déclencheurs
Pour que votre bot soit utile, il doit pouvoir envoyer des messages sans intervention manuelle. Deux approches sont possibles : l’envoi programmé et la réponse automatique aux commandes.
Envoi programmé avec cron ou task scheduler
Pour envoyer des messages automatiquement à intervalles réguliers, vous pouvez utiliser un script Python (ou autre langage) couplé à un planificateur de tâches. Sous Linux, une tâche cron peut exécuter toutes les heures un script qui envoie un message :
0 * * * * /usr/bin/python3 /home/user/send_notification.py
Sous Windows, utilisez le Planificateur de tâches. L’important est que le script soit exécuté avec les bonnes permissions et que le token soit protégé.
Réponse automatique aux commandes
Un bot peut réagir aux commandes comme /start ou /aide. Pour cela, il faut interroger régulièrement l’API (polling) ou configurer un webhook. Voici une boucle simple avec Python et la bibliothèque python-telegram-bot (ou en utilisant directement les requêtes) :
import requests
import time
TOKEN = "..."
offset = 0
while True:
updates = requests.get(f"https://api.telegram.org/bot{TOKEN}/getUpdates", params={"offset": offset}).json()
for update in updates.get("result", []):
offset = update["update_id"] + 1
if "message" in update:
chat_id = update["message"]["chat"]["id"]
text = update["message"].get("text", "")
if text == "/start":
requests.post(f"https://api.telegram.org/bot{TOKEN}/sendMessage", data={"chat_id": chat_id, "text": "Bienvenue !"})
time.sleep(1)
5. Webhooks : une alternative au polling
Le polling, bien que simple, n’est pas efficace pour les bots à fort trafic. Une alternative plus performante est le webhook.
Configurer un webhook
Pour éviter de requêter constamment l’API, vous pouvez configurer un webhook : Telegram enverra automatiquement les mises à jour à une URL de votre serveur, via HTTPS obligatoirement. La commande :
curl -F "url=https://votreserveur.com/webhook" https://api.telegram.org/bot<TOKEN>/setWebhook
Votre serveur doit accepter les requêtes POST sur cette URL et répondre rapidement (timeout de 30 secondes maximum). Si vous utilisez un certificat auto-signé, vous pouvez fournir le certificat avec le paramètre certificate.
Limitations et recommandations
Un seul webhook peut être actif par bot. Si vous changez d’URL, désactivez d’abord l’ancien avec deleteWebhook. Le webhook est plus performant pour les bots qui reçoivent beaucoup de messages, mais nécessite un serveur accessible publiquement. Pour un développement local, le polling est plus simple.
6. Gestion des erreurs et limites de l’API
Comme toute API, Telegram impose des limites et peut renvoyer des erreurs. Il est essentiel de les gérer correctement pour assurer la robustesse de votre bot.
Rate limiting
Telegram impose des limites de débit : environ 30 messages par seconde par chat, et un maximum de 20 messages par minute pour les messages envoyés à des groupes. En cas de dépassement, l’API retourne une erreur 429 Too Many Requests. Il faut alors implémenter un backoff exponentiel :
import time
while True:
response = requests.post(url, data=payload)
if response.status_code == 429:
retry_after = response.json().get('parameters', {}).get('retry_after', 5)
time.sleep(retry_after)
else:
break
Erreurs courantes
| Code | Signification | Action |
|---|---|---|
| 400 | Requête invalide (ex. chat_id manquant) | Vérifiez les paramètres |
| 403 | Bot bloqué par l’utilisateur | Ignorez ce chat |
| 404 | Chat non trouvé | Vérifiez l’ID |
| 429 | Trop de requêtes | Attendez et réessayez |
7. Sécurité et bonnes pratiques
Au-delà des aspects techniques, la sécurité de votre bot est primordiale pour éviter tout usage malveillant.
Protection du token
Le token permet de contrôler totalement votre bot. Ne le partagez jamais, ne le commitez pas dans un dépôt public. Utilisez des variables d’environnement (BOT_TOKEN) et limitez les permissions de votre script.
Validation des entrées
Si votre bot accepte des commandes ou des messages, validez toujours le contenu. Évitez d’exécuter du code basé sur des entrées non filtrées. Utilisez des whitelists pour les commandes autorisées.
Limiter les interactions
Si votre bot envoie des messages à des utilisateurs, assurez-vous qu’ils ont donné leur consentement. Telegram interdit le spam ; un bot qui envoie des messages non sollicités peut être banni.
8. Scénarios d’usage et arbitrages
Quand automatiser avec l’API Telegram Bot ?
Ce choix est pertinent pour :
- Notifications de déploiement (CI/CD) vers une équipe.
- Alertes de monitoring (ex. serveur down, seuil dépassé).
- Rappels quotidiens (météo, tâches, rendez-vous).
- Interactions simples avec des utilisateurs (bot FAQ, réservation).
Ces cas illustrent la polyvalence de l’API. Pour des interactions complexes, il peut être préférable d’utiliser des frameworks dédiés comme python-telegram-bot, qui simplifient la gestion des webhooks et des commandes. En résumé, l’API Telegram Bot offre un moyen simple et puissant d’automatiser des communications. En suivant ces bonnes pratiques, vous pouvez créer des bots fiables et sécurisés. N’oubliez pas de consulter la documentation officielle pour les mises à jour de l’API.