Comment créer un bot en Python avec telegram-bot-api ? Guide complet
Introduction aux bots Telegram
Dans le monde moderne, les messageries sont devenues essentielles, et les bots sont des outils pratiques pour automatiser des tâches, interagir avec les utilisateurs, voire gérer une activité. Si vous souhaitez créer rapidement et simplement votre propre bot pour Telegram, le langage Python et la bibliothèque python-telegram-bot sont le choix idéal.
Étape 1. Obtenir un token d'accès auprès de BotFather
Avant d'écrire du code, vous devez enregistrer votre bot sur Telegram. Pour cela :
- Ouvrez Telegram et recherchez l'utilisateur @BotFather.
- Entrez la commande /start, puis /newbot.
- Donnez un nom et un nom d'utilisateur unique à votre bot (par exemple, MonPremierBotPython).
- Après l'enregistrement, BotFather vous fournira un token API. Copiez-le : il vous sera nécessaire dans le code.
Étape 2. Installation des bibliothèques nécessaires
Pour interagir avec l'API Telegram, nous utiliserons la bibliothèque python-telegram-bot. Installez-la via pip :
pip install python-telegram-bot --upgrade
Étape 3. Structure de base du bot
Créons maintenant un bot simple qui répond à la commande /start :
from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text("Bonjour ! Je suis ton premier bot en Python !")
if __name__ == '__main__':
app = ApplicationBuilder().token("VOTRE_TOKEN_ICI").build()
app.add_handler(CommandHandler("start", start))
app.run_polling()
Explications :
ApplicationBuilderetCommandHandlersont les outils de base pour gérer les commandes.- La fonction
startréagit à la commande /start et envoie un message texte à l'utilisateur. - La méthode
run_polling()lance le bot et commence à vérifier les nouveaux messages.
Étape 4. Gestion des messages utilisateur
Ajoutons la gestion des messages texte classiques :
from telegram.ext import MessageHandler, filters
async def echo(update: Update, context: ContextTypes.DEFAULT_TYPE):
received_text = update.message.text
await update.message.reply_text(f"Vous avez écrit : {received_text}")
if __name__ == '__main__':
app = ApplicationBuilder().token("VOTRE_TOKEN_ICI").build()
app.add_handler(CommandHandler("start", start))
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo))
app.run_polling()
Désormais, le bot répond à tout message texte en répétant votre texte.
Étape 5. Ajout de boutons et d'un menu interactif
Les bots deviennent bien plus pratiques avec des boutons :
from telegram import InlineKeyboardButton, InlineKeyboardMarkup
async def menu(update: Update, context: ContextTypes.DEFAULT_TYPE):
keyboard = [
[InlineKeyboardButton("Bouton 1", callback_data='button1')],
[InlineKeyboardButton("Bouton 2", callback_data='button2')]
]
reply_markup = InlineKeyboardMarkup(keyboard)
await update.message.reply_text('Choisissez une option :', reply_markup=reply_markup)
async def button_handler(update: Update, context: ContextTypes.DEFAULT_TYPE):
query = update.callback_query
await query.answer()
await query.edit_message_text(text=f"Vous avez cliqué sur : {query.data}")
if __name__ == '__main__':
from telegram.ext import CallbackQueryHandler
app = ApplicationBuilder().token("VOTRE_TOKEN_ICI").build()
app.add_handler(CommandHandler("start", start))
app.add_handler(CommandHandler("menu", menu))
app.add_handler(CallbackQueryHandler(button_handler))
app.add_handler