Créons un bot Telegram dans Yandex.Cloud

Créons un bot Telegram dans Yandex.Cloud

Aujourd'hui, nous allons assembler à partir de matériaux de récupération dans Yandex.Cloud un bot Telegram à l'aide de Yandex Cloud Functions ou les fonctions Yandex — pour abréger) et Yandex Object Storage ou le stockage d'objets — pour plus de clarté). Le code sera sur Node.js. Cependant, il y a un petit détail — une organisation appelée, disons, Roskomtsenzur (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 à transmettre des requêtes à l'API Telegram à l'adresse : https://api.telegram.org/. Eh bien, nous n'allons pas le faire non plus — si c'est non, c'est non. Après tout, notre sac contient ce qu'on appelle des webhooks — grâce à eux, nous ne faisons pas de requêtes à une adresse spécifique, mais envoyons simplement notre requête comme réponse à toute requête adressée à nous. C'est-à-dire, comme à Odessa — nous répondons à une question par une question. Donc l'API Telegram il ne figurera pas dans notre code.

AvertissementLes noms d'organisations gouvernementales mentionnés dans cet article sont fictifs, et toute similitude avec des organisations réellement existantes est purement fortuite.

Ainsi, nous allons créer un bot qui nous fournira des pensées intelligentes. Exactement comme sur l'image :

Créons un bot Telegram dans Yandex.Cloud

Vous pouvez l'essayer en action — voici son nom : @SmartThoughtsBot. Avez-vous remarqué le petit bouton « Skill d'Alice »? Это потому, что бот является своеобразным «компаньоном» для одноименного du skill d'Alice, c'est-à-dire qu'il remplit les mêmes fonctions que le skill d'Alice et, peut-être, qu'ils pourront coexister paisiblement en se faisant de la publicité mutuellement. Sur comment créer le skill Pensées Intelligentes est expliqué dans l'article Alice acquiert un skill. Maintenant (après quelques modifications faites après la publication de l'article mentionné ci-dessus), sur smartphone, ce skill aura l'apparence suivante :

Créons un bot Telegram dans Yandex.Cloud

Création du bot

J'aimerais que ce tutoriel soit utile à tous, y compris aux « constructeurs de bots » débutants. Donc dans cette section, je vais décrire en détail comment créer des bots dans Telegram'e. Pour ceux dont cette information n'est pas nécessaire — passez aux sections suivantes.

Ouvrez l'application Telegaram, appelez le père de tous les bots (ils sont comme les humains) — @BotFather — et d'abord, donnons-lui la commande /help pour rafraîchir notre mémoire sur ce que nous pouvons faire. Maintenant, nous allons nous intéresser à la commande /newbot.

Créons un bot Telegram dans Yandex.Cloud

Puisque le bot décrit ici est déjà créé, pour des fins de démonstration, je vais créer un autre bot pendant une courte période (je l'effacerai ensuite). Je vais l'appeler DemoHabrBot. Les noms (username) de tous les bots Telegram doivent se terminer par le mot bot, par exemple : MyCoolBot ou my_cool_bot — c'est pour les bots. Mais d'abord, donnons un nom au bot (nom) — et c'est pour les humains. Le nom peut être dans n'importe quelle langue, contenir des espaces, et n'a pas besoin de se terminer par le mot bot, et il n'est même pas nécessaire qu'il soit unique. Dans cet exemple, j'ai nommé ce bot Démo Habr.

Créons un bot Telegram dans Yandex.Cloud

Maintenant, choisissons un nom pour le bot (username, celui qui est destiné aux bots). Appelons-le DemoHabrBot. Tout ce qui concernait le nom du bot (nom) ne concerne absolument pas son nom — username (ou cela le concerne, mais dans le sens opposé). Après avoir créé avec succès un nom unique pour le bot, nous devons copier et conserver (dans le plus grand secret !) le token affiché sur la capture d'écran avec la flèche rouge. Avec cela, nous établirons plus tard le webhook sortant de Telegram‘à notre fonction Yandex.

Créons un bot Telegram dans Yandex.Cloud

Et maintenant, donnons l'ordre au père de tous les bots : /mybots, et il nous montrera la liste de tous les bots que nous avons créés. Laissez de côté pour l'instant le bot fraîchement créé Démo Habr (il a été créé pour montrer comment créer des bots, mais nous l'utiliserons encore aujourd'hui à d'autres fins de démonstration), et examinons le bot Pensées Intelligentes (@SmartThoughtsBot). Cliquez sur le bouton avec son nom dans la liste des bots.

Créons un bot Telegram dans Yandex.Cloud

Ici, nous pouvons configurer notre bot. En appuyant sur le bouton Modifier… , nous accédons à l'édition de telle ou telle 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 Idées Absurdes. Botpic — c'est l'avatar du bot, il doit faire au moins 150 x 150 px. Description — c'est une brève description que l'utilisateur voit lors du premier lancement du bot, en réponse à la question : Que peut faire ce bot ? À propos — encore une description plus courte, qui est transmise avec le lien vers le bot (https://t.me/SmartThoughtsBot) ou lors de la consultation des informations à son sujet.

Créons un bot Telegram dans Yandex.Cloud

Il ne reste qu'à configurer les commandes. Pour ce faire, appuyez sur le bouton Modifier les commandes. Pour standardiser la pratique utilisateur, Telegram il est recommandé d'utiliser toujours deux commandes : /start et /help, et si le bot nécessite des configurables — une commande supplémentaire /settings. Notre bot est simple comme bonjour, donc il n'a pas encore besoin de configurations. Nous écrivons les deux premières commandes, que nous traiterons ensuite dans le code. Maintenant, si l'utilisateur entre une barre oblique (le signe de la barre oblique : /) dans le champ de saisie, une liste de commandes apparaîtra pour un choix rapide. Tout comme sur l'image : à gauche — nous établissons les commandes via le bot-père ; à droite, ces commandes sont déjà accessibles aux utilisateurs dans notre bot.

Créons un bot Telegram dans Yandex.Cloud

fonction Yandex

Maintenant que notre bot est créé, passons à 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 , consultez le matériel Alice au pays de Bitrix, puis — Les fonctions Yandex envoient des e-mails. Je suis presque sûr que ces deux articles relativement courts vous suffiront pour une compréhension basique du sujet.

Donc, dans la console Yandex.Cloud , dans le menu de navigation à gauche, sélectionnez l'élément Cloud Functions, puis cliquez sur le bouton Créer une fonction. Donnez-lui un nom et, pour vous, une brève description.

Créons 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 mènera à la page Aperçu de notre fonction. Ici, vous devez activer (Activé) l'interrupteur Fonction publique, afin qu'elle soit accessible depuis l'extérieur (pour le Yandex.Cloud) monde, et que la valeur des champs Lien pour l'appel et Identifiant — gardez cela profondément secret de tous sauf vous-même et Telegram, pour que votre fonction ne puisse pas être appelée par divers escrocs.

Créons un bot Telegram dans Yandex.Cloud

Maintenant, avec le menu de gauche, allons dans Éditeur les fonctions. Mettons de côté pour un moment nos Pensées Intelligentes, et créons une fonction-modèle minimale pour tester le bon fonctionnement de notre bot... En fait, dans ce contexte, cette fonction est notre bot... En bref, maintenant et ici, nous allons créer un très simple bot qui « miroirera » (c'est-à-dire renverra) les demandes des utilisateurs. Ce modèle peut toujours être utilisé lors de la création de nouveaux bots Telegram pour s'assurer que la connexion avec Telegramfonctionne correctement. Cliquez sur Créer un fichier, appelez-le index.js, et dans l'éditeur de code en ligne , insérez dans ce fichier le code suivant : 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 :

Ensuite, un peu plus bas, indiquez

Créons un bot Telegram dans Yandex.Cloud

Point d'entrée index.bot — c'est le nom du fichier (, où index — le nom de la fonction (index.js), tandis que bot module.exports.bot). Tous les autres champs restent « tels quels », et dans le coin supérieur droit, cliquez sur le boutonCréer une version . Après quelques secondes, cette version de la fonction sera créée. Bientôt, après les testsdu webhook , nous créerons une nouvelle version —Maintenant que nous avons créé Pensées Intelligentes.

Créons un bot Telegram dans Yandex.Cloud

le stockage d'objets

, restons dans la console fonction Yandex, et créons un bucket ( Yandex.Cloudbucketbucket, c'est-à-dire un seau en russe, et pas un bouquet) pour stocker des fichiers image qui seront utilisés dans notre bot Pensées Intelligentes. Dans le menu de navigation à gauche, sélectionnez l'option Object Storage, puis cliquez sur le bouton Créer un seau, donnez-lui un nom, par exemple, img-bucket, et surtout, Accès en lecture aux objets le rend public — sinon Telegram ne pourra pas voir nos images. Tous les autres champs restent inchangés. Cliquez sur le bouton Créer un seau.

Créons un bot Telegram dans Yandex.Cloud

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

Créons un bot Telegram dans Yandex.Cloud

Maintenant, je vous propose de cliquer sur le nom du seau, et à l'intérieur, de créer un dossier pour organiser le stockage des images pour différentes applications. Par exemple, pour un bot Telegram, Pensées Intelligentes j'ai créé un dossier nommé tg-bot-smart-thoughts (ne vous inquiétez pas, je comprends ce code). Créez-en un vous aussi.

Créons un bot Telegram dans Yandex.Cloud

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

Créons un bot Telegram dans Yandex.Cloud

Et en cliquant sur le nom du fichier — l'obtenir URL pour utilisation dans notre bot, et en général — n'importe où (mais ne publiez pas ce URL sans raison, car le trafic depuis le stockage d'objets est facturé).

Créons un bot Telegram dans Yandex.Cloud

Voilà, c'est tout concernant le stockage d'objets. Maintenant, vous saurez quoi faire lorsque vous verrez une invitation à télécharger des fichiers là-bas.

Webhook

Maintenant, nous allons configurer le webhook — c'est-à-dire, lorsque le bot reçoit une mise à jour (par exemple, un message d'un utilisateur), une requête Telegram sera envoyée depuis le serveur fonction Yandex vers notrerequest({}) avec les données. Voici la ligne que vous pouvez simplement coller dans la barre d'adresse de votre navigateur, puis actualiser la page (c'est à faire une seule fois) : https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Il suffit de remplacer {bot_token} par le token que nous avons obtenu de notre bot principal lors de la création de notre bot, et {webhook_url} — par URL le nôtre. les fonctions Yandex. Une minute ! Mais Roskomtsenzur interdit aux fournisseurs en RF de servir l'adresse https://api.telegram.org. Oui, c'est vrai. Mais vous pouvez trouver une solution. Par exemple, vous pouvez demander à votre grand-mère en Ukraine, Israël ou au Canada — là-bas, il n'y a pas de « censure russe », et seul Dieu sait comment les gens vivent sans cela. En fin de compte, la requête-réponse lors de la configuration du webhook doit ressembler à ceci :

Créons un bot Telegram dans Yandex.Cloud

Testons. Ça doit « réfléchir ».

Créons un bot Telegram dans Yandex.Cloud

Et c'est le cas. Félicitations — maintenant c'est un fonction Yandex est Telegram-bot !

Pensées Intelligentes

Et maintenant, faisons des Pensées Intelligentes. Le code est ouvert et disponible sur GitHub. Il est assez bien commenté, et il contient à peine une centaine de lignes. Lisez-le comme une diva d'opéra lirait un livret !

Créons 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 à votre fichier index.js (facultatif ; vous pouvez ne rien changer). Créez une archive-zip, avec le fichier index.js et le dossier node_modules à l'intérieur, par exemple, sous le nom smart.zip.

Créons un bot Telegram dans Yandex.Cloud

Maintenant, allez dans la console vers notre les fonctions Yandex, sélectionnez l'onglet Archive ZIP, cliquez sur le bouton Choisir un fichier, et téléchargez notre archive smart.zip. Enfin, dans le coin supérieur droit, cliquez sur le bouton . Après quelques secondes, cette version de la fonction sera créée. Bientôt, après les tests.

Créons un bot Telegram dans Yandex.Cloud

Dans quelques secondes, lorsque la fonction sera mise à jour, testons à nouveau notre bot. Maintenant, il ne « réfléchit » plus, mais fournit des pensées intelligentes !

Créons un bot Telegram dans Yandex.Cloud

C'est tout pour aujourd'hui. D'autres articles suivront. Pour ceux qui aiment ce genre de lecture, abonnez-vous aux notifications des nouveaux articles. Vous pouvez vous abonner ici, ou sur Telegram-le canal IT Tutoriel Zakar, ou Twitter @mikezaharov.

Liens

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

Dons

Créons un bot Telegram dans Yandex.Cloud

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster