Comment configurer un bot Telegram avec l'API Bot pour automatiser des tâches ?

Pourquoi automatiser avec un bot Telegram ?
La configuration d'un bot Telegram avec l'API Bot vous permet d'automatiser des tâches répétitives comme la modération de groupe, l'envoi de notifications, la collecte de données ou encore l'intégration avec des services externes. Ce guide vous montre comment créer, paramétrer et déployer votre propre bot, tout en abordant les pièges courants et les bonnes pratiques issues de l'expérience terrain. Que vous soyez débutant ou développeur aguerri, vous y trouverez des repères concrets.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
- Un compte Telegram actif.
- Un accès à un environnement de développement (ordinateur, terminal ou service cloud).
- Des notions de base en programmation (Python, Node.js ou similaire).
- La dernière version de l'application Telegram (vérifiez dans Paramètres > À propos).
Si vous utilisez un téléphone, l'étape de création du bot se fait via le client officiel, mais le déploiement du code nécessite un ordinateur ou un serveur. Prévoyez également un éditeur de texte (VS Code, PyCharm) et un terminal pour exécuter vos scripts.
Créer votre bot via BotFather
BotFather est le « bot des bots » officiel de Telegram. C'est le point d'entrée unique pour enregistrer un nouveau bot et obtenir son jeton d'API. La procédure est simple et prend moins de cinq minutes.
- Ouvrez Telegram et recherchez @BotFather.
- Envoyez la commande
/newbot. - Suivez les instructions : donnez un nom public (ex. « MonAssistant») puis un username unique se terminant par bot (ex. MonAssistantBot).
- Une fois créé, BotFather vous renvoie un jeton HTTP API du type
123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11. Conservez-le précieusement.
⚠️ Attention : Ne partagez jamais ce jeton publiquement. Quiconque le possède peut contrôler votre bot. Rangez-le dans un fichier sécurisé ou un gestionnaire d'environnement.
Personnalisation de base via BotFather
Vous pouvez modifier la description, la photo de profil et les commandes de votre bot en renvoyant /mybots à BotFather, puis en sélectionnant votre bot et en utilisant les options comme Edit Bot, Edit Commands ou Edit Description. Par exemple, définissez une liste de commandes claires pour guider vos utilisateurs :
start - Lancer le bot
help - Aide
status - Voir l'état
Configurer l'environnement de développement
Le bot n'est qu'un jeton tant que vous n'écrivez pas le code qui répond aux messages. Deux choix populaires s'offrent à vous selon votre maîtrise technique :
- Python avec la bibliothèque
python-telegram-bot(recommandée pour les débutants). - Node.js avec
node-telegram-bot-api(adapté aux développeurs JavaScript).
Installez la bibliothèque choisie avec pip ou npm. Exemple en Python :
pip install python-telegram-bot --upgrade
Créez un fichier bot.py et importez les modules nécessaires. Stockez le jeton dans une variable d'environnement pour ne pas l'exposer dans le code :
import os
TOKEN = os.getenv("TELEGRAM_TOKEN")
Écrire le premier handler
Un handler est une fonction qui réagit à un type de message (commande, texte, image…). Le plus basique est le handler pour la commande /start. Ce squelette vous permet de vérifier que tout fonctionne avant d'ajouter des fonctionnalités.
from telegram.ext import Application, CommandHandler
async def start(update, context):
await update.message.reply_text("Bonjour ! Je suis votre assistant.")
def main():
app = Application.builder().token(TOKEN).build()
app.add_handler(CommandHandler("start", start))
app.run_polling()
if __name__ == "__main__":
main()
Ce code lance le bot en mode polling (interrogation continue). Pour un usage en production, préférez un webhook (voir section dédiée). Le polling suffit pour un premier test local.
Tester localement
Exécutez le script avec python bot.py. Ouvrez Telegram, retrouvez votre bot via son username et tapez /start. Vous devriez recevoir la réponse. Si rien ne se produit, vérifiez que le jeton est correct, que le script est bien lancé, et qu'aucun pare-feu ne bloque la connexion sortante.
Automatiser des tâches concrètes
Voyons trois cas d'usage typiques avec des exemples de code. Chacun illustre une capacité différente de l'API : programmation, modération, et requête externe.
1. Envoi de notifications programmées
Vous pouvez envoyer un message chaque jour à une heure fixe (rappel de rendez-vous, météo, cours de bourse). Utilisez la bibliothèque apscheduler en Python :
from apscheduler.schedulers.asyncio import AsyncIOScheduler
async def rappel():
await bot.send_message(chat_id=CHAT_ID, text="N'oubliez pas votre réunion à 14h.")
scheduler = AsyncIOScheduler()
scheduler.add_job(rappel, 'cron', hour=13, minute=55)
scheduler.start()
Définissez CHAT_ID – vous pouvez l'obtenir en écrivant au bot et en consultant les logs de mise à jour. Pensez à démarrer le scheduler après l'initialisation du bot.
2. Modération automatique de groupe
Un bot peut supprimer des messages contenant certains mots-clés ou limiter les nouveaux membres. Exemple de handler pour supprimer les liens :
from telegram import Update
from telegram.ext import MessageHandler, filters
async def supprimer_lien(update, context):
if "http" in update.message.text:
await update.message.delete()
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, supprimer_lien))
Attention : le bot doit être administrateur du groupe avec les droits de suppression. Testez d'abord dans un groupe privé pour éviter les erreurs.
3. Collecte de données depuis des API externes
Votre bot peut interroger une API (météo, crypto, statut serveur) et renvoyer le résultat. Exemple avec l'API publique de OpenWeatherMap :
import requests
async def meteo(update, context):
rep = requests.get(f"https://api.openweathermap.org/data/2.5/weather?q=Paris&appid={API_KEY}")
data = rep.json()
temp = data['main']['temp'] - 273.15
await update.message.reply_text(f"Température à Paris : {temp:.1f}°C")
N'oubliez pas de gérer les erreurs (API indisponible, ville introuvable). Utilisez des blocs try/except et informez l'utilisateur en cas d'échec.
Déploiement : polling vs webhook
Le polling est simple pour le développement, mais consomme des ressources et peut ralentir. En production, utilisez un webhook : Telegram envoie les mises à jour vers une URL publique (HTTPS obligatoire). Ce mode est plus efficace et évolutif.
Configurer un webhook
- Déployez votre code sur un serveur avec un domaine et certificat SSL (par exemple via Heroku, Render, ou un VPS).
- Définissez l'URL du webhook avec l'API Telegram :
curl -F "url=https://votredomaine.com/webhook" https://api.telegram.org/bot<TON_TOKEN>/setWebhook
Votre serveur doit écouter les requêtes POST sur ce chemin et appeler la méthode process_update de la bibliothèque. Assurez-vous que le endpoint est accessible publiquement.
⚠️ Attention : Si vous passez du polling au webhook, arrêtez d'abord le processus de polling, sinon les mises à jour seront traitées deux fois.
Sécurité et bonnes pratiques
- Ne jamais exposer le jeton. Utilisez des variables d'environnement ou un gestionnaire de secrets.
- Valider les entrées. Un attaquant pourrait envoyer des commandes malveillantes. Filtrez les messages et échappez les sorties.
- Limiter les accès. Si votre bot est privé, vérifiez que l'utilisateur est autorisé (listes blanches).
- Utiliser un webhook avec un secret. Certaines bibliothèques permettent de définir un secret token que Telegram inclus dans chaque requête, pour éviter les usurpations.
En appliquant ces principes, vous réduisez les risques de prise de contrôle ou de fuite de données.
Dépannage fréquent
| Symptôme | Cause probable | Solution |
|---|---|---|
| Le bot ne répond pas | Jeton incorrect ou bot bloqué | Vérifiez le jeton, redémarrez le script |
| Erreur 404 sur webhook | URL mal configurée | Utilisez getWebhookInfo pour déboguer |
| Le bot crash sur un message | Exception non capturée | Ajoutez des blocs try/except |
Quand ne pas utiliser un bot Telegram
Un bot Telegram n'est pas idéal pour :
- Chat en temps réel très volumineux ( > 1 million d'utilisateurs) – privilégiez une infrastructure dédiée.
- Traitement de données sensibles sans chiffrement de bout en bout – les messages transitent par les serveurs Telegram.
- Applications nécessitant une interface graphique riche – les bots sont limités à du texte et des boutons InlineKeyboard.
Dans ces cas, envisagez une application native ou un service web complet.
Questions fréquentes
Puis-je utiliser un bot sans coder ?
Oui, des plateformes comme ManyBot ou Chatfuel proposent des interfaces visuelles, mais elles sont limitées. Pour une automatisation personnalisée, le code reste incontournable.
Quel langage dois-je choisir ?
Python est le plus accessible pour les débutants. Node.js offre de meilleures performances pour les applications asynchrones. Les deux sont officiellement supportés.
Mon bot peut-il envoyer des messages sans être sollicité ?
Oui, à condition de connaître le chat_id de l'utilisateur. Mais si l'utilisateur n'a pas initié la conversation, le bot ne pourra pas lui écrire (sauf s'il l'a déjà contacté via le bot). Les groupes sont plus flexibles.
Combien coûte un bot Telegram ?
L'API Bot est gratuite. Seuls les coûts d'hébergement (serveur ou cloud) sont à votre charge.
Pour aller plus loin
Consultez la documentation officielle de l'API Bot pour découvrir les méthodes avancées : envoi de médias, sondages, factures, jeux. Expérimentez en forchant un projet existant sur GitHub ou en rejoignant la communauté des développeurs Telegram. Avec un peu de pratique, vous pourrez transformer des tâches chronophages en processus automatisés, fiables et discrets. Commencez simple, itérez, et surtout, amusez-vous !