Construire un bot Telegram dans Yandex.Cloud

Création d'un bot télégramme

Aujourd'hui, à partir des documents disponibles, nous assemblerons un bot Telegram dans Yandex.Cloud en utilisant les fonctions cloud Yandex (ou fonctions Yandex pour faire court) et Yandex Object Storage (ou Object Storage pour plus de clarté). Le code sera sur Node.js . Cependant, il y a une circonstance épicée - une sorte d'organisation appelée, par exemple, RossKomTsenzur (censure est interdite par l' article 29 de la Constitution), ne permet pas aux fournisseurs de services Internet pour envoyer des requêtes vers la Russie API Télégramme à: https://api.telegram.org/. Eh bien, nous ne le ferons pas - non, non, non. En effet, dans notre sac il y a ce qu'on appelle webhooks- avec leur aide, nous ne faisons pas de demandes à une adresse spécifique, mais nous envoyons simplement votre demande en réponse à toute demande. Autrement dit, comme à Odessa - nous répondons à la question par une question. Par conséquent, l' API Telegram n'apparaîtra pas dans notre code.

Avertissement
- , — .

Donc, nous ferons un bot qui nous fournira des pensées intelligentes. Tout comme dans l'image: vous pouvez l'essayer en action - voici le nom: @SmartThoughtsBot . Avez-vous remarqué le bouton Alice Skill ? C'est parce que le bot est une sorte de «compagnon» pour la compétence d'Alice du même nom , c'est-à-dire il remplit les mêmes fonctions que la compétence d'Alice et il est possible qu'ils puissent coexister pacifiquement en se faisant de la publicité. Comment créer la compétence Pensées intelligentes est décrite dans l'article Alice acquiert la compétence . Maintenant (après avoir apporté quelques modifications après la publication de l'article ci-dessus) sur un smartphone, cette compétence ressemblera à ceci:

Télégramme bot Pensées intelligentes



Pensées intelligentes de la compétence d'Alice

Création de bots


J'aimerais que ce tutoriel soit utile à tout le monde, y compris et "botanistes" débutants. Par conséquent, dans cette section, je vais décrire en détail comment créer des robots dans Telegram . Pour ceux qui n'ont pas besoin de ces informations, passez aux sections suivantes.

Nous ouvrons l'application Telegaram , appelons le père de tous les bots (ils ont tout comme les gens) - @BotFather - et nous lui donnons d'abord la commande / help pour rafraîchir ce que nous pouvons faire. Nous allons maintenant nous intéresser à la commande / newbot .

Créer un nouveau bot

Étant donné que le bot décrit ici a déjà été créé, à des fins de démonstration, je vais créer un autre bot pendant une courte période (puis je le supprimerai). Je l'appellerai DemoHabrBot . Noms ( nom d'utilisateur) tous les bots de télégrammes doivent se terminer par le mot bot , par exemple: MyCoolBot ou my_cool_bot - c'est pour les bots. Mais d'abord, donnez un nom au bot ( nom ) - et c'est pour les gens. Le nom peut être dans n'importe quelle langue, contenir des espaces, ne doit pas nécessairement se terminer par le mot bot et ne doit même pas être unique. Dans cet exemple, j'ai appelé ce bot Demo Habr .

Nom du bot

Sélectionnez maintenant le nom du bot (nom d' utilisateur , celui des bots). Allons appellent DemoHabrBot . Tout ce qui concerne le nom du bot ( nom ) ne s'applique pas du tout à son nom - nom d'utilisateur(ou s'applique, mais exactement le contraire). Après avoir créé avec succès un nom de bot unique, nous devons copier et enregistrer (dans la plus stricte confidentialité!) Le jeton montré dans la capture d'écran avec une flèche rouge. Avec cela, nous installerons un peu plus tard le webhook provenant de Telegram sur notre fonction Yandex . Donnons

Nom du bot

maintenant la commande au père de tous les bots: / mybots , et il nous montrera une liste de tous les bots que nous avons créés. Laissons simplement le Demo Habr du bot fraîchement cuit (il a été créé pour montrer comment créer des bots, mais nous allons l'utiliser aujourd'hui à d'autres fins de démonstration), et considérons le bot Smart Thoughts ( @SmartThoughtsBot ). Appuyez sur le bouton avec son nom dans la liste des bots.

Paramètres du bot

Ici, nous pouvons configurer notre bot. En cliquant sur le bouton Modifier ... nous continuerons à modifier telle ou telle option. Par exemple, en cliquant sur le bouton Modifier le nom, nous pouvons changer le nom du bot, par exemple au lieu de Pensées intelligentes , écrire des idées délirantes . Botpic est un avatar de bot, doit mesurer au moins 150 x 150 px . Description est une brève description que l'utilisateur voit au premier démarrage du bot, comme réponse à la question: que peut faire ce bot? À propos - une description encore plus courte qui est transmise avec un lien vers le bot ( https://t.me/SmartThoughtsBot) ou lors de la visualisation d'informations à son sujet.

Bot: description et brèves informations

Il suffit de configurer l'équipe. Pour ce faire, cliquez sur le bouton Modifier les commandes . Pour standardiser la pratique des utilisateurs, Telegram recommande de toujours utiliser deux commandes: / start et / help , et si le bot a besoin de paramètres, une commande / paramètres supplémentaires. Notre bot est simple comme une balle, il n'a donc pas encore besoin de réglages. Nous écrivons les deux premières commandes, que nous traitons ensuite dans le code. Maintenant, si l'utilisateur entre une barre oblique (barre oblique: /) dans le champ de saisie, une liste de commandes pour sa sélection rapide apparaîtra. Tout est comme dans l'image: à gauche - nous définissons les commandes via le bot-père; à droite, ces commandes sont déjà disponibles pour les utilisateurs de notre bot.

Installation et utilisation dans la commande bot

Fonction Yandex


Maintenant que notre bot est créé, allez sur Yandex. Cloud pour créer une fonction qui exécutera le code de notre bot. Si vous n'avez pas encore travaillé avec Yandex.Cloud , lisez le matériel d'Alice dans le pays de Bitrix , puis les fonctions Yandex envoient du courrier . Je suis à peu près sûr que ces deux articles relativement petits vous suffiront pour avoir une compréhension de base du sujet.

Ainsi, dans la console Yandex.Cloud dans le menu de navigation de gauche, sélectionnez Fonctions cloud , puis cliquez sur le bouton Créer une fonction . Nous lui donnons un nom et pour elle-même une brève description.

Création d'une fonction Yandex

Après avoir cliqué sur Créeret après quelques secondes, une nouvelle fonction apparaîtra dans la liste de toutes les fonctions. Cliquez sur son nom - cela nous mènera à la page Présentation de notre fonction. Ici, vous devez activer ( On ) le commutateur de fonction publique afin qu'il devienne accessible de l'extérieur (pour Yandex.Cloud ), et que la valeur des champs Lien d'appel et Identifiant soit gardée secrète pour tout le monde sauf vous et Télégramme afin que votre fonction divers escrocs ne pouvaient pas appeler.

Propriétés de la fonction Yandex

Maintenant, en utilisant le menu de gauche, allez dans l' éditeur de fonctions. Mettons de côté nos pensées intelligentes pendant une courte période., et créer un modèle de fonction minimal pour tester les performances de notre bot ... Cependant, dans ce contexte, cette fonction est notre bot ... En bref, maintenant et ici, nous allons créer un bot simple qui sera "miroir" (c'est-à-dire renvoyé ) les demandes des utilisateurs. Ce modèle peut toujours être utilisé lors de la création de nouveaux robots de télégramme pour s'assurer que la communication avec Telegram fonctionne correctement. Cliquez sur Créer un fichier , appelez-le index.js et, dans l' éditeur de code en ligne , collez le code suivant dans ce fichier:

module.exports.bot = async (event) => {
  
  const body = JSON.parse(event.body);

  const msg = {
    'method': 'sendMessage',
    'chat_id': body.message.chat.id,
    'text': body.message.text
  };

  return {
    'statusCode': 200,
    'headers': {
      'Content-Type': 'application/json'
    },
    'body': JSON.stringify(msg),
    'isBase64Encoded': false
  };
};

Dans la console Yandex.Cloud, cela devrait ressembler à ceci:

Le code du bot le plus simple sur les fonctions Yandex

Ensuite, juste en dessous, nous spécifions le point d'entrée - index.bot , où index est le nom du fichier ( index.js ) et bot est le nom de la fonction ( module.exports.bot ). Nous laissons tous les autres champs «tels quels» et, dans le coin supérieur droit, cliquez sur le bouton Créer une version . Après quelques secondes, cette version de la fonction sera créée. Bientôt, après avoir testé le webhook , nous créerons une nouvelle version - Smart Thoughts .

Point d'entrée de la fonction Yandex

Stockage d'objets


Maintenant que nous avons établi la fonction Yandex , laissez-nous pendant que nous sommes dans la console Yandeks.Oblaka , créer un soi-disant un seau ( seau , c'est-à-dire un seau en russe, en aucun cas un bouquet) pour stocker les fichiers image qui seront utilisés dans notre bot Smart Thoughts . Dans le menu de navigation de gauche, sélectionnez l'élément Stockage d' objets , cliquez sur le bouton Créer un compartiment , attribuez-lui un nom, par exemple, img-bucket , et, plus important encore, nous rendons public l' accès aux objets lus - sinon Telegram ne verra pas nos images. Tous les autres champs restent inchangés. Cliquez sur le bouton Créer un compartiment .

Construction du seau.

Après cela, la liste de tous les compartiments peut ressembler à ceci (si c'est votre seul compartiment):

Liste de seaux

Maintenant, je suggère de cliquer sur le nom du compartiment et de créer un dossier à l'intérieur pour organiser le stockage des images pour différentes applications. Par exemple, pour le bot télégramme Smart Thoughts, j'ai créé un dossier appelé tg-bot-smart-pensées (rien, je comprends ce chiffre). Créez aussi certains d'entre vous.

Création d'un dossier dans un compartiment

Maintenant, vous pouvez cliquer sur le nom du dossier, y accéder et télécharger des fichiers:

Téléchargement d'un fichier dans un dossier dans un compartiment

Et en cliquant sur le nom du fichier - obtenez son URL à utiliser dans notre bot, et généralement quelque part (mais, ne publiez pas cette URL inutilement, car le trafic provenant du stockage d'objets est facturé )

Obtention d'une adresse de fichier dans le stockage d'objets

C'est, en fait, tout avecStockage d'objets . Vous saurez maintenant quoi faire lorsque vous verrez un appel pour y télécharger des fichiers.

Webhook


Nous allons maintenant installer un webhook - c'est-à-dire lorsque le bot reçoit une mise à jour (par exemple, un message de l'utilisateur), une demande avec des données sera envoyée de notre serveur Telegram à notre fonction Yandex . Voici une ligne que vous pouvez simplement insérer dans le champ d'adresse du navigateur puis actualiser la page (cela ne doit être fait qu'une seule fois): Remplacez simplement {bot_token} par le jeton que nous avons reçu du père du bot lors de la création de notre bot, et {webhook_url} avec l' URL notre fonction Yandex . Juste un moment! Mais RossKomTsensur interdit aux fournisseurs de la Fédération de Russie de servir l'adressehttps://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
https://api.telegram.org. Oui c'est vrai. Mais vous venez avec quelque chose. Après tout, vous pouvez, par exemple, interroger votre grand-mère à ce sujet en Ukraine, en Israël ou au Canada - il n'y a pas de «commentaires russes» là-bas, et un dieu sait comment les gens vivent sans. Par conséquent, la requête-réponse lors de l'installation d'un hook Web doit ressembler à ceci:

Installation de Webhook

Test. Il devrait "refléter".

Premier test de bot

Et voici. Félicitations - maintenant la fonction Yandex est devenue un bot Telegram !

Pensées intelligentes


Et maintenant, nous faisons des pensées intelligentes. Le code est ouvert et se trouve sur GitHub . Elle est assez bien commentée et ne contient que cent lignes. Lisez-le comme un livret de diva d'opéra!

Réflexions intelligentes sur le code bot

Clonez le projet et installez les dépendances:

git clone https://github.com/stmike/tg-bot-smart-thoughts.git
cd tg-bot-smart-thoughts
npm i

Apportez les modifications nécessaires au fichier index.js (facultatif; vous ne pouvez rien changer). Créer zip - Secondaire, le fichier index.js et le dossier node_modules dans, par exemple, sous le nom smart.zip .

Archive ZIP du bot Smart Thoughts

Accédez maintenant à nos fonctions Yandex dans la console , sélectionnez l'onglet Archive ZIP , cliquez sur le bouton Sélectionner un fichier et téléchargez notre archive smart.zip . Enfin, dans le coin supérieur droit, cliquez sur le bouton Créer une version .

Création d'une version de travail du bot

Après quelques secondes, lorsque la fonction sera mise à jour, nous testerons à nouveau notre bot. Maintenant, il ne fait plus de «miroirs», mais émet des pensées intelligentes!

Achèvement du bot Smart Thoughts

Références


GitHub
Yandex Cloud Functions
Yandex Object Storage
Bots: Une introduction pour les développeurs Telegram Bot API code


Conclusion


C'est tout pour aujourd'hui. D'autres documents suivent. À qui il est intéressant de lire, abonnez-vous aux notifications de nouvelles publications. Vous pouvez vous abonner sur ce site (le bouton S'abonner ci-dessous), ou sur la chaîne Telegram IT Tutorial Zakhar , ou sur la communauté du même nom sur VK , ou Twitter @mikezaharov .

Beignets


Donut

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


All Articles