Comment créer un robot Telegram de base avec Python 3
Si vous êtes un utilisateur de Telegram, vous avez sûrement eu une «conversation» avec un chatbot à un moment donné. Avec leur étonnante personnalisation, les bots de Telegram offrent une variété d'avantages – que ce soit pour automatiser des tâches ou simplement pour s'amuser un peu avec les jeux de votre groupe de discussion.
Bien que certains puissent trouver que développer un bot est une tâche ardue, ce n'est vraiment pas le cas. Avec la bonne planification, vous pouvez avoir un robot Telegram opérationnel en moins d'une heure! Voici comment créer un robot Telegram simple qui produit de jolies images de chats Internet lorsque vous y êtes invité.
Commencer
Pour ce tutoriel, nous allons utiliser Python 3, la bibliothèque python-telegram-bot et requêtes , et TheCatAPI .
Chaque bot de Telegram dispose d'un jeton unique qui l'aide à communiquer avec l' API Bot afin d'utiliser l'interface de messagerie de l'application. Bot API, l'une des fonctionnalités les plus populaires de Telegram parmi les développeurs, vous permet d'utiliser ses messages comme une interface.
Pour obtenir le jeton, lancez une conversation avec @BotFather qui, comme son nom l'indique, est un bot officiel qui vous permet de créer et de personnaliser vos propres robots. Vous pouvez accéder au bot en utilisant le lien donné ou en recherchant '@botfather' sur Telegram.
Une fois dans le chat, créez votre bot en tapant la commande / newbot . Continuez à définir le nom et le nom d'utilisateur de votre bot (nous avons décidé de nommer le nôtre @pawsomebot). Suite à cela, vous obtiendrez un jeton unique à votre bot.
Maintenant que nous avons tous les prérequis, il est temps de passer à la partie passionnante!
Installation de bibliothèques
Si vous utilisez Windows, ouvrez l'invite de commande et tapez les commandes suivantes:
pip install python-telegram-bot
pip install requests
Si vous utilisez macOS ou Linux, utilisez plutôt les commandes suivantes sur votre terminal. De plus, sous Linux, assurez-vous que vous êtes connecté en tant qu'utilisateur avec les privilèges sudo.
pip3 install python-telegram-bot
pip3 install requests
Rédaction du programme
Créez un nouveau dossier sur votre ordinateur et ouvrez-le dans votre éditeur préféré. Créez un nouveau fichier et nommez-le main.py. Ce fichier contiendra le code source de votre bot.
Maintenant, importons les bibliothèques que nous avons installées plus tôt avec certaines de leurs fonctions intégrées.
from telegram.ext import Updater, CommandHandler
import requests
import re
Le flux du programme à partir de maintenant est d'accéder à TheCatAPI, d'obtenir l'URL d'une image aléatoire et d'envoyer cette image au chat de l'utilisateur.
Commençons par une fonction pour obtenir l'URL de l'image, ce qui peut être fait en utilisant le module de requêtes. Dans cette fonction, nous chargeons les données JSON d'un fichier aléatoire fourni par TheCatAPI et extrayons son URL pour une utilisation ultérieure. Pour consulter le format de l'objet JSON, rendez- vous sur https://api.thecatapi.com/v1/images/search sur votre navigateur. Vous remarquerez quelque chose comme ceci:
[{"breeds":[],"id":"a8c","url":"url.jpg","width":800,"height":533}]
Notez que l'objet JSON est un tableau contenant un dictionnaire. Ce dictionnaire contient l'URL avec la clé 'url'. Pour extraire l'URL, nous devons référencer le premier élément du tableau, puis la clé appropriée.
def getUrl():
#obtain a json object with image details
#extract image url from the json object
contents = requests.get('https://api.thecatapi.com/v1/images/search')
url = contents[0]['url']
return url
Ensuite, nous devons envoyer cette image dans le chat d'un utilisateur. Pour cela, nous avons besoin d'une URL d'image ainsi que de l'ID unique du chat de l'utilisateur. Créons une fonction wrapper pour ce faire. Tout d'abord, nous appelons getUrl () . fonction pour obtenir l'URL d'une image aléatoire — cette URL change à chaque fois que votre programme parcourt la fonction.
Ceci est ensuite suivi par l'obtention de l'ID de conversation de l'utilisateur destinataire, qui définit l'emplacement cible du bot pour les messages et l'analyse de l'URL via la fonction send_photo () intégrée de l'API Bot.
def sendImage(bot, update):
url = getUrl()
chat_id = update.message.chat_id
bot.send_photo(chat_id=chat_id, image=url)
Pour en savoir plus sur les différentes fonctions intégrées de l'API Bot et leur fonctionnement, n'hésitez pas à consulter la documentation officielle de Telegram après ce tutoriel.
Enfin, créons une fonction qui contrôle le fonctionnement global du bot. Cette fonction — classiquement appelée main () — est l'endroit où nous envoyons une requête HTTP à l'API Bot en utilisant le jeton que nous avons obtenu au début du didacticiel, puis définissons à quoi ressemblera l'interaction utilisateur du bot. Dans un cas aussi simple que le nôtre, cela signifie essentiellement lancer le bot et appeler la fonction sendImage () à l'invite de l'utilisateur.
def main():
updater = Updater("1190888035:AAGeJ9316R95NqJLFefV5vQA-UL4np11V2c")
#call sendImage() when the user types a command in the telegram chat
updater.dispatcher.add_handler(CommandHandler('meow',sendImage))
#start the bot
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
Votre programme final devrait ressembler à ceci:
from telegram.ext import Updater, CommandHandler
import requests
import re
def getUrl():
#obtain a json object with image details
#extract image url from the json object
contents = requests.get('https://api.thecatapi.com/v1/images/search')
url = contents[0]['url']
return url
def sendImage(bot, update):
url = getUrl()
chat_id = update.message.chat_id
bot.send_photo(chat_id=chat_id, image=url)
def main():
updater = Updater("1190888035:AAGeJ9316R95NqJLFefV5vQA-UL4np11V2c")
#call sendImage() when the user types a command in the telegram chat
updater.dispatcher.add_handler(CommandHandler('meow',sendImage))
#start the bot
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
Votre propre robot de télégramme
Toutes nos félicitations! Vous avez créé votre propre bot anti-stress qui envoie des images open source des chats Internet les plus mignons dès que vous y êtes invité. Essayez d'exécuter votre programme et tapez / meow dans le chat de votre bot pour l'activer.
Bien qu'il s'agisse d'un simple bot avec des fonctionnalités limitées, cela montre à quel point l'écosystème de développement de robots de Telegram est puissant. Vous pouvez ajouter un nombre illimité de sous-programmes et fonctionnalités complexes pour améliorer les fonctionnalités de votre bot — le ciel est la limite. Pour en savoir plus sur les formidables bots Telegram créés par les contributeurs au fil des ans, consultez notre liste de robots Telegram utiles .
Vous pouvez également trouver une variété de programmes sous licence open source pour les robots Telegram sur des plates-formes telles que GitHub. La plupart des licences open source vous permettent d'utiliser, d'étudier, de télécharger ou de modifier le code source d'un programme.
Hébergez votre robot Telegram en ligne
Maintenant que votre bot est opérationnel, essayez de fermer main.py sur votre PC et utilisez le bot sur votre application de messagerie Telegram. Répond-il toujours à la commande / meow ? Non, ce n'est pas le cas.
En tant que débutant, vous ne savez peut-être pas pourquoi main.py sur votre PC doit être opérationnel alors que vous avez déjà créé un bot fonctionnant sur Internet. La raison en est que le programme utilise votre PC comme serveur local pour envoyer des requêtes HTTP aux API utilisées dans ce programme.
En tant que tel, devoir exécuter le programme chaque fois que vous souhaitez utiliser l'application n'est ni faisable ni pratique. Afin de résoudre ce problème, nous devons supprimer la dépendance du bot sur votre appareil
Une façon de le faire est d'utiliser une carte de circuit imprimé (PCB) à faible coût, telle que Raspberry Pi , pour configurer votre propre serveur Web et l'utiliser pour exécuter votre programme. Cela présente les mêmes avantages que d'exécuter le programme sur votre PC sans les coûts de le garder allumé toute la journée et la nuit, car les PCB ont tendance à avoir une empreinte énergétique nettement inférieure.
Vous pouvez également déployer votre programme dans le cloud. Rendez-vous sur une plate-forme d'hébergement d'applications Web telle que Heroku, AWS, Google Cloud ou Microsoft Azure et choisissez un abonnement qui répond le mieux à vos besoins. Nous vous recommandons de choisir un essai ou un abonnement gratuit et de le mettre à niveau au fur et à mesure que vous augmentez l'échelle ou la portée de votre programme.