Construire un bot Telegram dans Yandex.Cloud

Construire un bot Telegram dans Yandex.Cloud

Aujourd'hui, à partir de matériaux improvisés, nous allons collecter en Yandex.Cloud Télégramme bot en utilisant Fonctions cloud Yandex (ou Fonctions Yandex pour plus de concision) et Stockage d'objets Yandex (ou Stockage d'objets - pour plus de clarté). Le code sera allumé Node.js. Cependant, il y a une circonstance piquante - une certaine organisation appelée, disons, RossKomCensure (la censure est interdite par l'article 29 de la Constitution de la Fédération de Russie), n'autorise pas les fournisseurs d'accès Internet en Russie à transférer les demandes à API de télégramme à l'adresse: https://api.telegram.org/. Eh bien, nous ne le ferons pas - non, non. En effet, dans notre sac il y a des soi-disant. webhooks - avec leur aide, nous ne faisons pas de demandes à une adresse spécifique, mais envoyons uniquement notre demande en réponse à toute demande qui nous est adressée. Autrement dit, comme à Odessa - nous répondons à une question par une question. C'est pourquoi API de télégramme n'apparaîtra pas dans notre code.

AvertissementLes noms de toutes les organisations étatiques mentionnées dans cet article sont fictifs et les éventuelles coïncidences avec les noms d'organisations réelles sont accidentelles.

Nous allons donc créer un bot qui nous fournira des pensées intelligentes. Exactement comme sur la photo :

Construire un bot Telegram dans Yandex.Cloud

Vous pouvez l'essayer en action - voici le nom : @SmartThoughtsBot. Remarquez le bouton "Le talent d'Alice"? En effet, le bot est une sorte de "compagnon" pour l'éponyme Le talent d'Alice, c'est à dire. il remplit les mêmes fonctions que Le talent d'Alice et, peut-être, qu'ils peuvent coexister pacifiquement en se faisant mutuellement la publicité. À propos de la création Compétence Pensée intelligente décrit dans l'article Alice obtient la compétence. Maintenant (après avoir apporté quelques modifications après la publication de l'article ci-dessus) sur un smartphone, cela compétence ressemblera à ceci :

Construire un bot Telegram dans Yandex.Cloud

Création de robots

Je voudrais que ce tutoriel soit utile à tout le monde, incl. et les "constructeurs de robots" débutants. Par conséquent, dans cette section, je décrirai en détail comment créer en général dans Telegram'e robots. Pour ceux qui n'ont pas besoin de ces informations, passez aux sections suivantes.

Ouvrez l'application Télégaram, nous appelons le père de tous les bots (ils ont tout comme les gens) - @BotPère - et pour commencer, nous lui donnerons la commande /help pour nous rafraîchir la mémoire de ce que nous pouvons faire. Maintenant, nous nous intéressons à l'équipe / newbot.

Construire un bot Telegram dans Yandex.Cloud

É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 vais l'appeler DémoHabrBot. Des noms (Nom d'utilisateur) tous les robots télégrammes doivent se terminer par un mot bot, Par exemple: MonCoolBot ou mon_cool_bot C'est pour les robots. Mais d'abord, donnez un nom au bot (prénom) est pour les gens. Le nom peut être dans n'importe quelle langue, contenir des espaces, ne doit pas nécessairement se terminer par un mot bot, et n'a même pas besoin d'être unique. Dans cet exemple, j'ai appelé ce bot Démo.

Construire un bot Telegram dans Yandex.Cloud

Choisissez maintenant un nom pour le bot (Nom d'utilisateur, celui pour les bots). Appelons-le DémoHabrBot. Tout ce qui concerne le nom du bot (prénom) n'est pas du tout lié à son nom - Nom d'utilisateur (ou s'applique, mais exactement le contraire). Après avoir réussi à créer un nom de bot unique, nous devons copier et enregistrer (dans la plus stricte confidentialité !) Le jeton affiché dans la capture d'écran avec une flèche rouge. Avec son aide, nous installerons plus tard le Telegram'un webhook à notre Fonction Yandex.

Construire un bot Telegram dans Yandex.Cloud

Et maintenant, nous allons donner la commande au père de tous les bots : /mes robotset il nous montrera une liste de tous les bots que nous avons créés. Laissons le bot fraîchement sorti du four pour l'instant Démo (il a été créé pour montrer comment créer des bots, mais nous l'utiliserons aujourd'hui à d'autres fins de démonstration), et considérez le bot Pensées intelligentes (@SmartThoughtsBot). Cliquez sur le bouton avec son nom dans la liste des bots.

Construire un bot Telegram dans Yandex.Cloud

C'est ici que nous pouvons configurer notre bot. Appuyer sur un bouton Modifier… nous passerons à l'édition de l'une ou l'autre option. Par exemple, en cliquant sur le bouton Modifier le nom nous pouvons changer le nom du bot, disons au lieu de Pensées intelligentesécrire des idées folles. Botpic - ceci est l'avatar du bot, doit être au moins 150 x 150 px. Description est une courte description que l'utilisateur voit lorsque le bot est lancé pour la première fois, en réponse à la question : Que peut faire ce bot ? Qui sommes-nous - une description encore plus courte, qui est transmise avec un lien vers le bot (https://t.me/SmartThoughtsBot) ou lors de l'affichage d'informations à ce sujet.

Construire un bot Telegram dans Yandex.Cloud

Nous avons juste besoin de configurer les commandes. Pour cela, appuyez sur le bouton Modifier les commandes. Homogénéiser les pratiques des utilisateurs Telegram recommande de toujours utiliser deux commandes : / commencer и /Aidez-moi, et si le bot a besoin de paramètres, une commande /settings supplémentaire. Notre bot est aussi simple qu'une balle, il n'a donc pas encore besoin de paramètres. Nous écrivons les deux premières commandes, que nous traiterons ensuite dans le code. Maintenant, si l'utilisateur entre une barre oblique (caractère barre oblique : /) dans le champ de saisie, une liste de commandes apparaîtra pour leur sélection rapide. Tout est comme sur la photo : à gauche - nous définissons les commandes via le bot-father ; à droite, ces commandes sont déjà disponibles pour les utilisateurs de notre bot.

Construire un bot Telegram dans Yandex.Cloud

Fonction Yandex

Maintenant que notre bot a été créé, passons à Yandex.Cloudpour créer une fonction qui exécutera notre code de bot. Si vous n'avez pas travaillé avec Yandex.Cloud lire le matériel Alice au pays de Bitrix, et alors - Les fonctions Yandex envoient du courrier. Je suis presque sûr que ces deux articles relativement petits vous suffiront pour avoir une compréhension de base du sujet.

Donc dans la console Yandex.Clouds dans le menu de navigation de gauche, sélectionnez l'élément Fonctions cloud, puis appuyez sur le bouton Créer une fonction. Nous lui donnons un nom, et pour nous-mêmes - une brève description.

Construire un bot Telegram dans Yandex.Cloud

Après avoir cliqué sur le bouton Créer et après quelques secondes, la nouvelle fonction apparaîtra dans la liste de toutes les fonctions. Cliquez sur son nom - cela nous amènera à la page vue d'ensemble notre fonction. Ici, vous devez activerOn) changer fonction publiquepour le rendre disponible depuis l'extérieur (par Yandex.Clouds) du monde, et la valeur des champs Lien pour appeler и ID - gardez-le dans le plus grand secret de tout le monde sauf de vous-même et de Telegram, afin que divers escrocs ne puissent pas appeler votre fonction.

Construire un bot Telegram dans Yandex.Cloud

Maintenant, en utilisant le menu de gauche, allez à éditeur les fonctions. Laissons un instant de côté notre Pensées intelligentes, et créer une fonction de modèle minimal pour vérifier les performances de notre bot ... Cependant, dans ce contexte, cette fonction est notre bot ... Bref, maintenant et ici, nous allons créer le bot le plus simple qui "reflétera" ( c'est-à-dire renvoyer) les demandes des utilisateurs. Ce modèle peut toujours être utilisé lors de la création de nouveaux robots de télégrammes pour s'assurer que la communication avec Télégramme'OM fonctionne bien. Cliquez sur Créer un fichier, appeler index.js, et en ligne Éditeur de code 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 :

Construire un bot Telegram dans Yandex.Cloud

Ci-dessous, nous indiquons point d'accès - index.botindice c'est le nom du fichier (index.js), et bot - nom de la fonction (module.exports.bot). Laissez 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. Peu de temps après le test webhook, nous allons créer une nouvelle version − Pensées intelligentes.

Construire un bot Telegram dans Yandex.Cloud

Stockage d'objets

Maintenant que nous avons mis en place Fonction Yandexallons-y pendant que nous sommes dans la console Yandex.Clouds, créer un soi-disant. seau (seau, c'est à dire. seau en russe, en aucun cas un bouquet) pour stocker les fichiers image qui seront utilisés dans notre bot Pensées intelligentes. Sélectionnez dans le menu de navigation de gauche Stockage d'objets, appuie sur le bouton Créer un bucket, donnez-lui un nom, par exemple, img-seau, et, surtout, Accès en lecture aux objets rendez-le public - sinon Telegram ne verra pas nos photos. Tous les autres champs restent inchangés. Nous appuyons sur le bouton Créer un bucket.

Construire un bot Telegram dans Yandex.Cloud

Après cela, une liste de tous les compartiments pourrait ressembler à ceci (s'il s'agit de votre seul compartiment) :

Construire un bot Telegram dans Yandex.Cloud

Maintenant, je propose de cliquer sur le nom du bucket et de créer un dossier à l'intérieur pour organiser le stockage des images pour différentes applications. Par exemple, pour un bot télégramme Pensées intelligentes j'ai créé un dossier appelé tg-bot-pensées-intelligentes (Rien, je comprendrai ce chiffrement). Créez-en un aussi.

Construire un bot Telegram dans Yandex.Cloud

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

Construire un bot Telegram dans Yandex.Cloud

Et en cliquant sur le nom du fichier - obtenez-le URL pour une utilisation dans notre bot, et en général - n'importe où (mais, ne publiez pas ce URL inutilement, puisque le trafic provenant stockage d'objets accusé).

Construire un bot Telegram dans Yandex.Cloud

Ici, en fait, c'est tout stockage d'objets. Vous saurez maintenant quoi faire lorsque vous verrez l'invite pour y télécharger des fichiers.

Webhook

Maintenant, nous allons installer webhook - c'est à dire. lorsque le bot reçoit une mise à jour (par exemple, un message de l'utilisateur), du serveur Telegram dans notre Fonction Yandex la demande sera envoyéenécessaire) avec des données. Voici une chaîne que vous pouvez simplement coller dans le champ d'adresse du navigateur, puis actualiser la page (cela ne doit être fait qu'une seule fois) : https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Juste remplacer {bot_token} au jeton que nous avons reçu du bot père lors de la création de notre bot, et {webhook_url} - sur URL notre Fonctions Yandex. Attendez une minute! Mais RossKomCensure interdit aux fournisseurs de la Fédération de Russie de servir l'adresse https://api.telegram.org. Oui c'est vrai. Mais vous pouvez penser à quelque chose. Après tout, vous pouvez, par exemple, en parler à votre grand-mère en Ukraine, en Israël ou au Canada - il n'y a pas de «censure russe» là-bas, et Dieu seul sait comment les gens vivent sans elle. Par conséquent, la requête-réponse lors de l'installation du webhook devrait ressembler à ceci :

Construire un bot Telegram dans Yandex.Cloud

Essai. Devrait être mis en miroir.

Construire un bot Telegram dans Yandex.Cloud

C'est vrai. Nos félicitations - maintenant Fonction Yandex devenue Telegram-bot !

Pensées intelligentes

Et maintenant, nous faisons des pensées intelligentes. Le code est ouvert et repose sur GitHub. C'est assez bien commenté, et ça ne fait qu'une centaine de lignes. Lisez-le comme un livret d'opéra diva!

Construire un bot Telegram dans Yandex.Cloud

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 *: français-archive, avec un fichier index.js et dossier node_modules à l'intérieur, par exemple, appelé smart.zip.

Construire un bot Telegram dans Yandex.Cloud

Allez maintenant dans la console à notre Fonctions Yandex, sélectionnez l'onglet Archive ZIP, appuie sur le bouton Sélectionner un fichieret téléchargez nos archives smart.zip. Enfin, dans le coin supérieur droit, cliquez sur le bouton Créer une version.

Construire un bot Telegram dans Yandex.Cloud

Dans quelques secondes, lorsque la fonction sera mise à jour, nous testerons à nouveau notre bot. Désormais, il ne « reflète plus », mais délivre des pensées intelligentes !

Construire un bot Telegram dans Yandex.Cloud

C'est tout pour aujourd'hui. D'autres articles suivent. Si vous êtes intéressé à lire ceci, abonnez-vous aux notifications de nouveaux articles. Vous pouvez vous inscrire ici ou Telegram-canaliser Tutoriel informatique ZakharOu Twitter @mikezaharov.

références

Coder sur GitHub
Fonctions cloud Yandex
Stockage d'objets Yandex
Bots : une introduction pour les développeurs
API Telegram Bot

онаты

Construire un bot Telegram dans Yandex.Cloud

Source: habr.com

Ajouter un commentaire