Écrire un bot de télégramme en python à l'aide de la bibliothèque de telebot partie 1

Attention, la deuxième partie de l'article a été publiée , je vous recommande de la lire



Digression lyrique


Les bots sont aujourd'hui un outil multifonctionnel, tant pour les affaires que pour le divertissement. Personnellement, je crois que l'avenir leur appartient. Bien sûr, après avoir lu cet article, vous ne pourrez pas créer de grands projets, mais vous y intéresser et commencer c'est tout à fait.

Installation et configuration


Pour commencer, téléchargeons python lui-même. Vous pouvez le faire sur le site officiel . N'oubliez pas de cocher ajouter à PATH lors de l'installation! Après avoir installé python, nous avons besoin d'un bon éditeur de code. JetBrains vient à la rescousse avec son PyCharm gratuit. Nous sommes proches, il reste à télécharger la bibliothèque de telebot. Pour ce faire, accédez à la ligne de commande et écrivez:

pip install pytelegrambotapi 

Si tout s'est bien passé, on peut continuer!

VPN


Je pense que tout le monde connaît le blocage des télégrammes en Russie et la seule solution, comme toujours, est le VPN. Personnellement, je recommande Windscribe , car ils vous donnent 2 Go. le trafic est totalement gratuit!

Père du robot


Dans la recherche de télégramme, nous trouvons Bot Farher et créons notre bot en utilisant la commande / newbot. Saisissez ensuite le nom et le nom d'utilisateur. Veuillez noter que le nom d'utilisateur doit se terminer par bot!

image

Comme vous le voyez, nous avons reçu un jeton API spécial avec lequel vous pouvez contrôler votre bot (dans mon cas, c'est: 776550937: AAELEr0c3H6dM-9QnlDD-0Q0Fcd65pPyAiM ). Vous vous souvenez de votre jeton, mais je vous recommande de l'écrire.

Code


Le moment est venu que tout le monde attendait. Ouvrez PyCharm et créez un nouveau projet.

image

Ici, je recommande de tout mettre comme le mien (le nom, bien sûr, peut être changé). Après avoir créé le projet, créons un fichier dans lequel sera notre code. Faites un clic droit sur le dossier avec votre projet, puis sur Nouveau → Fichier Python. Ok, commençons à écrire du code. Importez la bibliothèque de telebot en utilisant:

 import telebot 

Vous devez maintenant créer la variable bot. En fait, le nom de la variable peut être n'importe quoi, mais j'ai l'habitude d'écrire un bot.

 bot = telebot.TeleBot(' ') 

Nous allons écrire le bot .message_handler () décorateur, avec lequel notre bot répondra à la commande / start. Pour ce faire, nous écrivons les commandes = ['start'] entre parenthèses. En conséquence, nous devrions obtenir ceci:

 @bot.message_handler(commands=['start']) 

Si vous essayez de lancer votre bot (RMB-> Run), alors rien ne fonctionnera pour vous. Tout d'abord, à la fin du code, nous devons écrire bot.polling (). Ceci est nécessaire pour que le bot ne s'éteigne pas immédiatement, mais fonctionne et vérifie s'il y a un nouveau message sur le serveur. Et deuxièmement, notre bot, même s'il vérifie les messages, ne pourra toujours rien répondre. Il est temps de le réparer! Après notre décorateur, nous créons la fonction start_message, qui prendra le paramètre message (le nom de la fonction peut être n'importe quoi). Ensuite, implémentons l'envoi de messages à partir du bot lui-même. Dans la fonction, nous écrivons bot.send_message (message.chat.id, 'Bonjour, vous m'avez écrit / start'). Voyez ce que vous devriez obtenir:

 import telebot bot = telebot.TeleBot('776550937:AAELEr0c3H6dM-9QnlDD-0Q0Fcd65pPyAiM') @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, ',    /start') bot.polling() 

Vérifions ...

image

Génial, notre bot fonctionne! Pour qu'il réponde non seulement aux commandes, mais aussi aux messages, créez un nouveau bot décorateur .message_handler (), et entre parenthèses écrivez content_types = ['text']. En général, il existe de nombreux types de contenu, par exemple l'emplacement, la photo, l'audio, l'autocollant, etc. Mais nous devons répondre au texte, non? Par conséquent, nous créons une fonction send_text qui prend un paramètre de message. Dans la fonction, nous écrivons la condition:

 @bot.message_handler(content_types=['text']) def send_text(message): if message.text == '': bot.send_message(message.chat.id, ',  ') elif message.text == '': bot.send_message(message.chat.id, ', ') 

Si le texte du message est "Bonjour", alors le bot répond "Bonjour mon créateur", et si le texte du message est "Au revoir", le bot répondra "Créateur au revoir". Ici, je pense que tout est clair. Mais vous vous êtes probablement demandé, et si l'utilisateur écrit «bonjour» ou «salut», que devez-vous faire dans cette situation? Tout est assez simple! Dans la condition, après le message.text, écrivez la fonction .lower (), et dans le texte, remplacez toutes les lettres majuscules par des minuscules. Maintenant, notre bot répond non seulement à «bonjour», mais aussi à «PrivT», et même «PRIVET».

image

Voici ce que vous devriez obtenir:

 import telebot bot = telebot.TeleBot('776550937:AAELEr0c3H6dM-9QnlDD-0Q0Fcd65pPyAiM') @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, ',    /start') @bot.message_handler(content_types=['text']) def send_text(message): if message.text.lower() == '': bot.send_message(message.chat.id, ',  ') elif message.text.lower() == '': bot.send_message(message.chat.id, ', ') bot.polling() 

Bon, on a compris le texte, mais comment envoyer un autocollant par exemple? Tout est simple! Chaque autocollant a son propre identifiant, respectivement, connaissant l'identifiant, nous pouvons l'envoyer. Il existe deux façons d'obtenir l'identifiant de l'autocollant. Le premier (simple) - à travers le bot spécial "Quel est l'identifiant de l'autocollant?"

image

Eh bien, la deuxième façon, pour ceux qui ne recherchent pas des moyens faciles. Nous créons un nouveau décorateur de bot .message_handler (), seulement entre parenthèses nous écrivons content_types = ['sticker']. Ensuite, tout est comme d'habitude. Nous créons une fonction qui prend le paramètre message, mais ici nous écrivons print (message). Nous lançons le bot.



Regardez, dès que j'ai envoyé l'autocollant, il a immédiatement affiché des informations dans la console, et à la fin sera notre identifiant d'autocollant (file_id). Assurons-nous que lorsque l'utilisateur envoie le bot "Je t'aime", le bot répond avec un autocollant. Il n'est pas nécessaire de créer un nouveau décorateur, nous ajoutons simplement la condition qui était avant cela. Mais au lieu de bot.send_message (), nous écrivons bot.send_sticker (), et au lieu du texte, nous écrivons l'id de l'autocollant.

image

Félicitations, tout a fonctionné! Je pense comment envoyer du son, des photos et la géolocalisation, vous allez le découvrir par vous-même. Je veux vous montrer comment créer un clavier que le bot vous montrera au démarrage. Cela rendra les choses plus difficiles. Nous créons la variable keyboard1, dans laquelle nous écrivons telebot.types.RselfKeyboardMarkup (). Cette fonction appelle le clavier. Ensuite, créez les lignes, mais n'oubliez pas qu'il ne peut y avoir plus de 12 lignes! Pour les créer, écrivez keyboard1.row (). Entre parenthèses, écrivez tout ce que vous voulez, personnellement, j'écrirai «Bonjour» et «Au revoir». Maintenant, pour appeler le clavier, ajoutons reply_markup = keyboard1 à la fonction d'envoi d'un message au démarrage. Voici ce que vous devriez obtenir:

 keyboard1 = telebot.types.ReplyKeyboardMarkup() keyboard1.row('', '') @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, ',    /start', reply_markup=keyboard1) 

Nous lançons le bot ...



Vous voyez que le clavier est assez gros. Pour résoudre ce problème, il vous suffit d'enregistrer True dans ReplyKeyboardMarkup (). Eh bien, si vous voulez que le clavier se cache dès que l'utilisateur clique dessus, écrivez un autre True. Vous pouvez en savoir plus sur leur signification dans la documentation officielle .

 keyboard1 = telebot.types.ReplyKeyboardMarkup(True, True) 

C’est tout! Bien sûr, ce ne sont pas tous les bots possibles dans les télégrammes, mais je vous ai montré les principales fonctionnalités. Merci de votre attention.

Code source:

 import telebot bot = telebot.TeleBot('< >') keyboard1 = telebot.types.ReplyKeyboardMarkup() keyboard1.row('', '') @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, ',    /start', reply_markup=keyboard1) @bot.message_handler(content_types=['text']) def send_text(message): if message.text.lower() == '': bot.send_message(message.chat.id, ',  ') elif message.text.lower() == '': bot.send_message(message.chat.id, ', ') elif message.text.lower() == '  ': bot.send_sticker(message.chat.id, 'CAADAgADZgkAAnlc4gmfCor5YbYYRAI') @bot.message_handler(content_types=['sticker']) def sticker_id(message): print(message) bot.polling() 


Si vous avez des questions - vous pouvez écrire au télégramme dimagorovtsov

Source: https://habr.com/ru/post/fr448310/


All Articles