Donc, ce matin, vous vous êtes réveillé avec l'idée de développer un moyen de stocker et d'étiqueter des articles intéressants que vous avez lus. Après avoir joué avec l'idée, vous pensez qu'un chatbot télégramme est la solution la plus pratique pour ce problème.
Dans ce guide, nous vous guiderons à travers tout ce que vous devez savoir pour construire votre premier chatbot télégramme en utilisant JavaScript et Node.js.
Pour commencer, nous devons enregistrer notre nouveau bot avec le soi-disant botfather pour recevoir notre jeton d'accès API.
La première étape vers notre propre bot télégramme est d'enregistrer le bot avec le botfather. Le botfather est un bot lui-même qui vous facilite la vie. Il vous aide à enregistrer des robots, à modifier la description des bots, à ajouter des commandes et à vous fournir le jeton API pour votre bot.
Le jeton API est l'étape la plus importante, car cela vous permet d'exécuter le code qui peut effectuer des tâches pour le bot.
Le botfather se trouve sur Telegram en recherchant «Botfather». Cliquez sur le botfather officiel, indiqué par l'icône de coche blanche dans le cercle bleu.
Maintenant, nous avons trouvé Botfather, parlons-lui! Vous pouvez commencer la conversation en tapant / newbot. Botfather vous demandera de choisir un nom pour vos deux. Ce nom peut être n'importe quoi et n'a pas besoin d'être unique. Pour garder les choses simples, j'ai nommé mon bot Articlebot.
Ensuite, vous serez invité à saisir un nom d'utilisateur pour le bot. Le nom d'utilisateur doit être unique et se terminer en bot. Par conséquent, j'ai choisi Michiel_Article_Bot, car ce nom d'utilisateur n'a pas encore été pris. This will also be the username you use for looking up the bot in Telegram’s search field.
FatherBot renverra un message de réussite avec votre jeton pour accéder à l'API télégramme HTTP. Assurez-vous de stocker ce jeton en toute sécurité, et ne le partagez certainement pas avec personne d'autre.
Nous pouvons modifier davantage le bot en ajoutant une description ou en définissant les commandes que nous souhaitons au bot. Vous pouvez envoyer un message au bot avec le texte / setCommands. Il vous montrera comment saisir les commandes avec le format Command1 - Description.
Pour mon bot, je définis le signet de commande - Enregistrer URL de l'article intéressant
Si vous recherchez votre bot maintenant, vous verrez une icône de commande dans la boîte de chat qui vous montre les commandes disponibles. Vous pouvez créer beaucoup plus de commandes qui fonctionnent et ne les répertorient pas via Botfather. Cependant, à partir d'un point de vue UX, je recommande d'enregistrer toutes les commandes disponibles avec Botfather.
Nous pouvons définir l'intimité du bot avec / setPrivacy. Vous pouvez soit l'activer ou le désactiver. Par défaut, la valeur de confidentialité est définie sur Activé, ce qui signifie que votre bot ne recevra que des messages qui commencent par le / symbole ou en mentionnant le nom d'utilisateur du bot.
Ce paramètre peut être désactivé, ce qui signifie que votre bot peut recevoir tous les messages envoyés à un groupe. Vous devrez ajouter un bot à votre groupe pour qu'il reçoive tous ces messages.
Une liste de toutes les commandes disponibles peut être trouvée ici:
Enfin, nous sommes prêts à commencer le codage. Assurez-vous que le jeton d'accès API est prêt.
Tout d'abord, pendant ce tutoriel, nous utiliserons le code suivant que j'ai préparé.
Il s'agit d'un simple projet Node.js qui n'a que deux dépendances: DOTENV et Node-Telegram-Bot-API. Le premier package est utilisé pour créer un fichier de configuration .env qui conservera notre jeton d'accès API. Le deuxième package agit comme un emballage Node.js pour l'API Telegram Bots, que nous utiliserons pour ce tutoriel.
Pour commencer, clonez le référentiel GitHub et ouvrez le projet dans votre éditeur préféré. Ensuite, créez un fichier .env à la racine de votre projet et ajoutez une seule ligne - jetons = yourToken. Remplacez votre token par le jeton que vous avez reçu du botfather.
Pour vous assurer que la connexion fonctionne, accédez à la racine du projet dans votre terminal et exécutez le démarrage du NPM. La commande NPM Start exécutera votre fichier app.js et devrait se connecter à votre bot. Si vous ne voyez aucune erreur, nous sommes prêts à partir!
First of all, we have to create the bot by passing it our API access token and setting the polling option to true. This means the bot will check for incoming messages at regular intervals.
<span>require('dotenv').config(); </span><span>const TelegramBot = require('node-telegram-bot-api'); </span> <span>const token = process.env.TOKEN; </span> <span>// Created instance of TelegramBot </span><span>const bot = new TelegramBot(token, { </span> <span>polling: true </span><span>}); </span>
Now the bot has been created, let’s take a look at the following snippet of code that represents our /bookmark command. Nous définissons un auditeur pour les messages texte entrants, sur le texte et spécifions pour rechercher un message qui commence par / le signet, car nous le spécifions dans la chaîne regex.
When a message starts with /bookmark, our code will execute. First of all, we store the chat ID, as we want to be able to send a message back to this user’s chat.
Next, we check if the user has used the command correctly. We expect a URL to be passed with the command like this: /bookmark www.google.com.
If there is no URL specified, we send a message back to the stored chatID telling the user to provide us with a URL. If they do send a URL, we store the URL and send them a success message.
<span>// Listener (handler) for telegram's /bookmark event </span>bot<span>.onText(<span>/<span>\/bookmark</span>/</span>, (msg<span>, match</span>) => { </span> <span>const chatId = msg.chat.id; </span> <span>const url = match.input.split(' ')[1]; </span> <span>// 'msg' is the received Message from Telegram </span> <span>// 'match' is the result of executing the regexp above on the text content </span> <span>// of the message </span> <span>if (url === undefined) { </span> bot<span>.sendMessage( </span> chatId<span>, </span> <span>'Please provide URL of article!', </span> <span>); </span> <span>return; </span> <span>} </span> <span>URLs.push(url); </span> bot<span>.sendMessage( </span> chatId<span>, </span> <span>'URL has been successfully saved!', </span> <span>); </span><span>}); </span>
You might have noticed we are using two parameters for the callback function msg and match. La propriété MSG représente le message complet que vous recevez tandis que la correspondance représente le résultat de l'expression régulière que nous avons définie. L'image ci-dessous vous montre le MSG complet, et après ---- il vous montre le match.
Lorsque nous essayons notre commande dans le chat avec le bot, nous recevons le résultat suivant:
Si vous voyez le même résultat, félicitations! Vous venez de créer votre première commande BOT. Jetons un coup d'œil à des options plus avancées comme l'envoi de claviers avec des options prédéfinies.
Maintenant, nous savons comment créer une commande personnalisée, examinons plus en profondeur les options du clavier. Il est possible d'envoyer un clavier prédéfini avec votre commande pour limiter les options de l'utilisateur. Cela peut être aussi simple que de restreindre l'utilisateur à répondre avec oui ou n °
Jetons un coup d'œil à l'extrait de code suivant. Nous avons ajouté un troisième paramètre à notre fonction Bot.SendMessage. Cet objet définit les options de notre clavier. Si vous examinez de plus près Reply_Markup.keyboard, vous trouvez un tableau qui contient plus de tableaux. Chaque tableau ici représente une ligne avec des options. Cela vous aide à formater des options qui sont plus importantes ou qui ont du texte de bouton plus long.
<span>// Listener (handler) for showcasing different keyboard layout </span>bot<span>.onText(<span>/<span>\/keyboard</span>/</span>, (msg) => { </span> bot<span>.sendMessage(msg.chat.id, 'Alternative keybaord layout', { </span> <span>'reply_markup': { </span> <span>'keyboard': [['Sample text', 'Second sample'], ['Keyboard'], ['I\'m robot']], </span> <span>resize_keyboard: true, </span> <span>one_time_keyboard: true, </span> <span>force_reply: true, </span> <span>} </span> <span>}); </span><span>}); </span>
Ce morceau de code donne le résultat suivant lors de l'envoi d'un message / clavier à notre bot.
De plus, nous pouvons également définir les claviers en ligne avec des données supplémentaires par option.
Un clavier en ligne sera affiché dans le chat, et non sous votre boîte d'entrée de message. Comme nous voulons étiqueter les URL que nous soumettons, nous pouvons le faire en montrant à l'utilisateur les catégories disponibles. C'est à quoi ressemble notre clavier maintenant:
Jetons un coup d'œil au code en dessous. La réponse_markup définit désormais la propriété inline_keyboard. Le reste du balisage reste le même. Chaque tableau représente une ligne. Cependant, au lieu de simplement passer du texte, nous pouvons également passer un objet avec du texte et du callback_data pour savoir quelle option vous avez sélectionné.
<span>require('dotenv').config(); </span><span>const TelegramBot = require('node-telegram-bot-api'); </span> <span>const token = process.env.TOKEN; </span> <span>// Created instance of TelegramBot </span><span>const bot = new TelegramBot(token, { </span> <span>polling: true </span><span>}); </span>
La section suivante explique comment utiliser le gestionnaire pour recevoir des données de rappel.
Au cas où nous voulons recevoir des données de rappel, nous devons écouter ce type d'événement.
<span>// Listener (handler) for telegram's /bookmark event </span>bot<span>.onText(<span>/<span>\/bookmark</span>/</span>, (msg<span>, match</span>) => { </span> <span>const chatId = msg.chat.id; </span> <span>const url = match.input.split(' ')[1]; </span> <span>// 'msg' is the received Message from Telegram </span> <span>// 'match' is the result of executing the regexp above on the text content </span> <span>// of the message </span> <span>if (url === undefined) { </span> bot<span>.sendMessage( </span> chatId<span>, </span> <span>'Please provide URL of article!', </span> <span>); </span> <span>return; </span> <span>} </span> <span>URLs.push(url); </span> bot<span>.sendMessage( </span> chatId<span>, </span> <span>'URL has been successfully saved!', </span> <span>); </span><span>}); </span>
La propriété Message sur callbackQuery contient l'intégralité du message de l'utilisateur. La propriété de données contient nos données de rappel de catégorie.
Vous avez peut-être repéré une erreur de conception maintenant. Et si nous avons deux commandes qui renvoient des données de rappel? Vous pourriez obtenir un comportement ou des réponses très étranges.
Par conséquent, il est recommandé de renvoyer un objet JSON Stringified qui contient également une étiquette pour identifier à quelle commande les données de rappel appartiennent. Jetez un œil aux meilleures pratiques suivantes:
<span>// Listener (handler) for showcasing different keyboard layout </span>bot<span>.onText(<span>/<span>\/keyboard</span>/</span>, (msg) => { </span> bot<span>.sendMessage(msg.chat.id, 'Alternative keybaord layout', { </span> <span>'reply_markup': { </span> <span>'keyboard': [['Sample text', 'Second sample'], ['Keyboard'], ['I\'m robot']], </span> <span>resize_keyboard: true, </span> <span>one_time_keyboard: true, </span> <span>force_reply: true, </span> <span>} </span> <span>}); </span><span>}); </span>
Vous pouvez utiliser les données de l'option de commande pour passer à la logique métier spécifique de cette commande.
Nous sommes sur le point de devenir des bot Jedis télégrammes. Pour devenir un maître entièrement appris, explorons les demandes de données.
Il est possible de demander des données, telles que le numéro de téléphone d'une personne ou la géolocalisation. Pour ce tutoriel, nous montrons comment demander un numéro de téléphone avec un clavier alternatif.
<span>// Listener (handler) for telegram's /label event </span>bot<span>.onText(<span>/<span>\/label</span>/</span>, (msg<span>, match</span>) => { </span> <span>const chatId = msg.chat.id; </span> <span>const url = match.input.split(' ')[1]; </span> <span>if (url === undefined) { </span> bot<span>.sendMessage( </span> chatId<span>, </span> <span>'Please provide URL of article!', </span> <span>); </span> <span>return; </span> <span>} </span> tempSiteURL <span>= url; </span> bot<span>.sendMessage( </span> chatId<span>, </span> <span>'URL has been successfully saved!', </span> <span>{ </span> <span>reply_markup: { </span> <span>inline_keyboard: [[ </span> <span>{ </span> <span>text: 'Development', </span> <span>callback_data: 'development' </span> <span>}, { </span> <span>text: 'Lifestyle', </span> <span>callback_data: 'lifestyle' </span> <span>}, { </span> <span>text: 'Other', </span> <span>callback_data: 'other' </span> <span>} </span> <span>]] </span> <span>} </span> <span>} </span> <span>); </span><span>}); </span>
L'utilisateur recevra la demande suivante dans son chat:
Lorsque vous cliquez sur le bouton mon numéro de téléphone, vous obtenez la demande de numéro de téléphone suivant:
C'est à quoi cela ressemble après avoir accès:
Enfin! Vous êtes un bot télégramme entièrement appris. Pour l'instant, plus d'informations et de ressources peuvent être trouvées ici:
Restez également à l'écoute ici - nous serons de retour le mois prochain avec un tutoriel qui approfondit les fonctionnalités avancées de l'API Telegram.
Pour construire un chatbot télégramme avec node.js, vous devez avoir une compréhension de base de JavaScript et Node.js. Vous devez également installer Node.js et NPM (Node Package Manager) sur votre ordinateur. De plus, vous devez créer un bot sur Telegram à l'aide de Botfather, qui vous fournira un jeton que vous utiliserez pour interagir avec l'API Telegram.
Botfather est un bot sur Telegram qui vous permet de créer de nouveaux robots. Pour créer un nouveau bot, commencez une conversation avec Botfather, puis suivez les invites. Il vous sera demandé de choisir un nom et un nom d'utilisateur pour votre bot. Une fois que vous avez fait cela, Botfather vous fournira un jeton, que vous utiliserez pour interagir avec l'API Telegram.
Pour interagir avec l'API Telegram à l'aide de Node.js, vous pouvez utiliser le package Node-Telegram-Bot-API. Ce package fournit une interface simple et puissante pour l'API Telegram. Vous pouvez l'installer à l'aide de NPM, puis l'exiger dans votre code. Vous pouvez ensuite créer un nouveau bot à l'aide du jeton fourni par Botfather, et utiliser les méthodes fournies par le package pour interagir avec l'API.
Le package Node-Telegram-Bot-API fournit une méthode onText, que vous pouvez utiliser pour gérer les messages texte envoyés à votre bot. Cette méthode prend une expression régulière et une fonction de rappel comme des arguments. La fonction de rappel est appelée chaque fois qu'un message qui correspond à l'expression régulière est reçu. L'objet de message est transmis à la fonction de rappel, que vous pouvez utiliser pour répondre au message.
Pour envoyer des messages de votre bot, vous pouvez Utilisez la méthode SendMessage fournie par le package Node-Telegram-Bot-API. Cette méthode prend deux arguments: l'ID de chat du destinataire et le texte du message. Vous pouvez obtenir l'ID de chat à partir de l'objet Message transmis à la fonction de rappel de la méthode OnText.
Une fois que vous avez construit votre bot, vous pouvez déployer Il est sur un serveur afin qu'il puisse s'exécuter en continu. Il existe de nombreuses options pour cela, y compris des plateformes cloud comme Heroku, AWS et Google Cloud, ainsi que les fournisseurs d'hébergement traditionnels. Le processus exact dépendra de la plate-forme que vous choisissez, mais implique généralement de pousser votre code sur la plate-forme, puis de démarrer le bot à l'aide des outils de la plate-forme.
Le package de nœud-telegram-bot-API fournit des méthodes pour gérer différents types de messages. Par exemple, vous pouvez utiliser la méthode Onphoto pour gérer les messages photo ou la méthode OnSticker pour gérer les messages d'autocollants. Ces méthodes fonctionnent de manière similaire à la méthode onText, en prenant une fonction de rappel qui est appelée lorsqu'un message du type correspondant est reçu.
Vous pouvez Ajoutez des commandes personnalisées à votre bot à l'aide de la méthode de commande fournie par le package Node-Telegram-Bot-API. Cette méthode prend une chaîne et une fonction de rappel comme des arguments. La chaîne est le nom de la commande et la fonction de rappel est appelée lorsque la commande est reçue. Vous pouvez utiliser l'objet Message transmis à la fonction de rappel pour répondre à la commande.
Les requêtes en ligne permettent aux utilisateurs d'interagir avec votre bot directement à partir de l'entrée de texte champ de chat. Le package Node-Telegram-Bot-API fournit une méthode OnInlineQuery, que vous pouvez utiliser pour gérer les requêtes en ligne. Cette méthode prend une fonction de rappel, qui est appelée lorsqu'une requête en ligne est reçue. Vous pouvez utiliser l'objet de requête en ligne transmis à la fonction de rappel pour répondre à la requête.
Le débogage de votre bot peut être fait de plusieurs manières. Une méthode courante consiste à utiliser les instructions Console.log dans votre code pour imprimer des informations sur l'état de votre bot. Vous pouvez également utiliser des outils de débogage comme le débogueur Node.js ou Chrome Devtools. De plus, le package Node-Telegram-Bot-API fournit une méthode ONERROR, que vous pouvez utiliser pour gérer toutes les erreurs qui se produisent pendant que votre bot est en cours d'exécution.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!