Comment créer un Bot Telegram en Python ?

Article publié le mardi 22 décembre 2020 et mis à jour le mercredi 3 avril 2024.

Créer un Bot Telegram en Python

Ces dernières années, Telegram est devenu un outil marketing puissant. La messagerie a bien évolué depuis la folle période des ICO fin 2017 ! Aujourd’hui de plus en plus de marketers l’utilisent pour l’accès direct et personnel à votre communauté qu’elle vous donne.

Des Instagram Pods aux bots GMail pour lire vos mails en passant par une integration Slack, la puissance des Bots Telegram est sans limite.

Pour créer un bot Telegram en Python, cherchez l’utilisateur @BotFather sur l’application Telegram. Une fois la conversation lancée en appuyant sur START, envoyez lui le message /newbot. Le BotFather vous posera des questions à la suite desquelles vous récupérerez un Token pour créer votre bot.

Dans cet article, nous verrons :

  • Comment créer son propre bot Telegram pour automatiser des tâches du quotidien ?
  • Pourquoi utiliser Python pour coder son bot ?
  • Comment configurer et faire tourner un bot Python ?

Découvrons sans plus tarder comment créer votre premier Bot Telegram !

Qu’est-ce qu’un Bot Telegram ?

Un Bot Telegram est une application externe qui tourne dans Telegram. Les utilisateurs peuvent intéragir avec les bots en leur envoyant des message, des commande et d’autres requêtes. On peut utiliser son bot en envoyant des requêtes HTTPS à Telegram ou en utiliser un Wrapper.

Comment configurer un bot Telegram ?

Étape 1 : Trouver le BotFather

Le BotFather est un utilisateur de Telegram officiel qui vous permettra de créer votre bot. Pour le trouver, cherchez le dans votre application Telegram.

Botfather start

Étape 2 : Rejoindre le channel du BotFather

Rejoignez la conversation en appuyant sur START.

Botfather start

Étape 3 : Dire au BotFather qu’on veut créer un nouveau bot

Vous avez accès à plusieurs commandes, pour créer un bot tapez /newbot.

Botfather newbot

Étape 4 : Configurer son Bot Telegram

Le BotFather vous demandera le nom du channel de votre bot (pour lui c’est le BotFather) et puis un identifiant unique (pour lui c’est bot).

Botfather configuration

Étape 5 : Récupérer son Token

Et voilà ! Vous avez tout ce dont vous avez besoin (le token) pour commencer à développer votre bot.

💡 Attention : Votre token est privé et donnera accès à toutes les fonctionnalités de votre bot aux personnes à qui vous le donnez. Ce token doit donc rester secret et mis à l’abris sous peine de devoir générer un nouveau token.

Pourquoi utiliser Python pour son bot Telegram ?

Python possède un Wrapper populaire pour créer des bots Telegram sous le nom de python-telegram-bot. Avec, vous pourrez facilement communiquer avec l’API Telegram avec une classe Python.

Comment installer python-telegram-bot ?

Si vous n’avez pas l’habitude d’installer des packages Python, je vous explique comment installer python-telegram-bot proprement avec un environnement virtuel. Tout ce dont vous avez besoin est d’avoir Python3 d’installé sur votre machine.

1. Créer un Environnement Virtuel

Créer un environnement virtuel permet d’avoir un environnement par projet avec uniquement les paquets dont vous avez besoin. Essayez de prendre l’habitude de créer des venv pour chaque nouveau projet, quite à avoir un virtual env poubelle (sandbox) avec lequel vous installez plein de packages pour vos tests.

python3 -m venv bot-telegram
cd bot-telegram
source bin/activate

2. Installer python-telegram-bot

Une fois dans l’environnement virtual grace à la commande source, installons python-telegram-bot avec pip.

pip install python-telegram-bot

Et pour le reste de ce tutoriel, j’utiliserai un fichier appelé bot.py qui se trouve à la racine de bot-telegram.

Comment connecter son bot à Telegram ?

Pour relier son Bot Python à Telegram, on utilise la classe Updater qu’on importe de python-telegram-bot avec le nom telegram.ext. On lui fournit le token qu’on a reçu du BotFather.

from telegram.ext import Updater

updater = Updater('VOTRE_TOKEN', use_context=True)

Comment ajouter une commande à son bot ?

Une fois l’instance updater créée, on peut répondre à ce qui se passe dans le channel du bot à l’aide d’un dispatcher.

Du dispatcher on utilise la méthode add_handler et on crée un nouveau CommandHandler à qui on donne une commande et une fonction associée.

from telegram.ext import CommandHandler

updater.dispatcher.add_handler(CommandHandler("commande", fonction))

La fonction associée nous donne accès aux variables update et context.

Par exemple, pour écrire quelque chose quand une certaine commande est reçue, on utilise reply_text.

def fonction(update, context):
    update.message.reply_text("Un message à répondre en fonction de la commande saisie par l'utilisateur")

Gérer les messages qui ne sont pas des commandes

Pour tous les autres messages qui ne sont pas des commandes, on peut aussi définir une réponse automatique.

from telegram.ext import MessageHandler, Filters

updater.dispatcher.add_handler(MessageHandler(Filters.text, pas_compris))

En disant à l’utilisateur que nous n’avons pas compris son message. C’est aussi le bon moment de lui rappeler les commandes qui existent.

def pas_compris(update, context):
    update.message.reply_text('Je n\'ai pas compris votre message "', update.message.text, "')

Comment faire tourner son bot Telegram ?

Une fois les comportements de notre bot définis, on “lance” le bot en faisant en sorte qu’il commence à écouter ce qui se passe avec la méthode start_polling :

updater.start_polling()

Comment couper son bot Telegram ?

Sans rentrer dans les détails, comme le bot Telegram utilise plusieurs Threads, on veut le quitter proprement. Avec idle, vous pourrez sortir de votre bot avec la commande CTRL+C.

updater.idle()

Bot Telegram complet

Mettons maintenant toutes ces pièces ensemble pour avoir un bot telegram fonctionnel au complet.

#!/usr/bin/env python

from telegram.ext import Updater, CommandHandler, MessageHandler, Filters

TOKEN = 'VOTRE_TOKEN'

def start(update, context):
    update.message.reply_text("""
Bienvenue sur le bot officiel de tcollart.

Les commandes disponibles sont :
- /site pour obtenir l'adresse du site
- /youtube pour obtenir la chaîne YouTube
- /linkedin pour obtenir son profil Linkedin
    """)


def site(update, context):
    update.message.reply_text('https://www.commentcoder.com')


def youtube(update, context):
    update.message.reply_text('https://www.youtube.com/channel/UCEztUC2WwKEDkVl9c6oUoTw')


def linkedin(update, context):
    update.message.reply_text('https://www.linkedin.com/in/thomascollart')


def pas_compris(update, context):
    update.message.reply_text('Je n\'ai pas compris votre message "', update.message.text, "')


def main():
    # La classe Updater permet de lire en continu ce qu'il se passe sur le channel
    updater = Updater(TOKEN, use_context=True)

    # Pour avoir accès au dispatcher plus facilement
    dp = updater.dispatcher

    # On ajoute des gestionnaires de commandes
    # On donne a CommandHandler la commande textuelle et une fonction associée
    dp.add_handler(CommandHandler("start", start))
    dp.add_handler(CommandHandler("site", site))
    dp.add_handler(CommandHandler("youtube", youtube))
    dp.add_handler(CommandHandler("linkedin", linkedin))

    # Pour gérer les autres messages qui ne sont pas des commandes
    dp.add_handler(MessageHandler(Filters.text, pas_compris))

    # Sert à lancer le bot
    updater.start_polling()

    # Pour arrêter le bot proprement avec CTRL+C
    updater.idle()


if __name__ == '__main__':
    main()

Commencer faire tourner bot Telegram ?

Maintenant que la base de notre bot est finie, on peut le lancer avec la commande python bot.py.

Rejoignez le channel telegram de votre bot et essayez vos commandes, vous devriez obtenir quelque chose comme ça :

bot telegram tcollart

Ajoutez des fonctions à votre bot !

Vous voilà maintenant en possession du squelette d’un bot telegram écrit en Python. Pour aller plus loin, vous pouvez ajouter un système de logging qui fait partie de la bibliothèque standard de Python.

Plus important, votre bot doit tourner en permanence pour qu’il puisse répondre à vos utilisateurs. Pour ça il existe plusieurs solutions en fonction de vos besoins. Commentez en bas de cet article si vous voulez que je vous explique comment héberger votre Bot Instagram pour qu’il tourne en continu.

Comment Coder

Je m'appelle Thomas. J'ai commencé à coder dans mon enfance. Depuis ma sortie de la première promo de l'École 42, j'ai développé des centaines d'applications et sites web. Sur ce blog, je vous donne les meilleurs conseils et astuces pour apprendre comment apprendre à coder efficacement.