Creació d'un bot de Telegram a Yandex.Cloud

Creació d'un bot de Telegram a Yandex.Cloud

Avui, a partir de materials de rebuig, muntarem Yandex.Cloud Telegram bot utilitzant Funcions Yandex Cloud (O Funcions Yandex - per breu) ​​i Emmagatzematge d'objectes Yandex (O Emmagatzematge d'objectes - per a més claredat). El codi estarà activat NODE.JS. Tanmateix, hi ha una circumstància picant: una determinada organització anomenada, diguem-ne, RossKomTsenzur (La censura està prohibida per l'article 29 de la Constitució de la Federació Russa), no permet que els proveïdors d'Internet russos transmetin sol·licituds a API de Telegram a l’adreça: https://api.telegram.org/. Bé, no ho farem, no, no. Després de tot, a la nostra bossa hi ha els anomenats. webhooks — Amb la seva ajuda, no fem sol·licituds a una adreça específica, sinó que simplement enviem la nostra sol·licitud com a resposta a qualsevol sol·licitud que ens enviem. És a dir, com a Odessa, responem una pregunta amb una pregunta. Aixo es perqué API de Telegram no apareixerà al nostre codi.

Exempció de responsabilitatEls noms de qualsevol organització governamental esmentada en aquest article són ficticis i les possibles coincidències amb els noms d'organitzacions de la vida real són casuals.

Per tant, farem un bot que ens proporcionarà pensaments intel·ligents. Exactament com a la imatge:

Creació d'un bot de Telegram a Yandex.Cloud

Podeu provar-ho en acció: aquí teniu el nom: @SmartThoughtsBot. Vaig notar el botó "L'habilitat d'Alícia"? Això es deu al fet que el bot és una mena de "company" per al bot del mateix nom. L'habilitat d'Alícia, és a dir fa les mateixes funcions que L'habilitat d'Alícia i és possible que puguin conviure pacíficament fent-se publicitat mútuament. Sobre com crear habilitat Pensaments intel·ligents descrit a l'article L'Alícia guanya habilitat. Ara (després de fer alguns canvis després de la publicació de l'article anterior) al telèfon intel·ligent això habilitat semblarà a això:

Creació d'un bot de Telegram a Yandex.Cloud

Creació d'un bot

M'agradaria que aquest tutorial fos útil per a tothom, incl. i constructors de bots novells. Per tant, en aquesta secció descriuré amb cert detall com crear en general telegramels bots. Per a aquells que no necessiten aquesta informació, aneu a les seccions següents.

Obriu l'aplicació Telegaram, anomenem el pare de tots els bots (ho tenen tot com persones) - @BotFather - i primer li donarem l'ordre /help per refrescar-li la memòria del que podem fer. Ara ens interessarà l'equip / newbot.

Creació d'un bot de Telegram a Yandex.Cloud

Com que el bot descrit aquí ja s'ha creat, amb finalitats de demostració crearé un altre bot durant un breu temps (i després el suprimiré). El trucaré DemoHabrBot. Noms (nom d'usuari) de tots els robots de telegram ha d'acabar amb la paraula bot, per exemple: MyCoolBot o my_cool_bot - això és per a robots. Però primer li donem un nom al bot (nom) - i això és per a la gent. El nom pot estar en qualsevol idioma, contenir espais i no ha d'acabar amb una paraula bot, i ni tan sols ha de ser únic. En aquest exemple, he anomenat aquest bot Demo Habr.

Creació d'un bot de Telegram a Yandex.Cloud

Ara trieu un nom per al bot (nom d'usuari, el dels robots). Anem a cridar-lo DemoHabrBot. Tot el relacionat amb el nom del bot (nom) no té cap relació amb el seu nom - nom d'usuari (o s'aplica, però exactament el contrari). Després de crear correctament un nom de bot únic, hem de copiar i desar (amb la màxima confidencialitat!) el testimoni que es mostra a la captura de pantalla amb una fletxa vermella. Amb la seva ajuda establirem posteriorment l'origen telegram'un webhook al nostre Funció Yandex.

Creació d'un bot de Telegram a Yandex.Cloud

Ara donem l'ordre al pare de tots els bots: /mybots, i ens mostrarà una llista de tots els bots que hem creat. Deixem el bot acabat de fer en pau de moment Demo Habr (va ser creat per mostrar com crear bots, però avui també l'utilitzarem per a altres propòsits de demostració), i mirem el bot Pensaments intel·ligents (@SmartThoughtsBot). Feu clic al botó amb el seu nom a la llista de robots.

Creació d'un bot de Telegram a Yandex.Cloud

Aquí podem configurar el nostre bot. En prémer el botó Edita… Passarem a editar una o altra opció. Per exemple, fent clic al botó Edita el nom podem canviar el nom del bot, per exemple Pensaments intel·ligents, escriure Idees boges. Botpic - aquest és l'avatar del bot, ha de ser com a mínim 150 x 150 px. Descripció — aquesta és una breu descripció que l'usuari veu quan s'inicia el bot per primera vegada, com a resposta a la pregunta: Què pot fer aquest bot? Qui som? — una descripció encara més breu, que es transmet amb un enllaç al bot (https://t.me/SmartThoughtsBot) o en visualitzar informació al respecte.

Creació d'un bot de Telegram a Yandex.Cloud

Tot el que hem de fer és configurar les ordres. Per fer-ho, premeu el botó Edita les ordres. Estandarditzar la pràctica dels usuaris telegram recomana utilitzar sempre dues ordres: /començar и / help, i si el bot necessita configuració, utilitzeu l'ordre addicional /settings. El nostre bot és tan senzill com una pilota, de manera que encara no necessita cap configuració. Escrivim les dues primeres ordres, que després processarem en codi. Ara, si l'usuari introdueix una barra inclinada (signe de barra inclinada: /) al camp d'entrada, apareixerà una llista d'ordres per a una selecció ràpida. Tot és com a la imatge: a l'esquerra: instal·lem ordres a través del bot pare; a la dreta, aquestes ordres ja estan disponibles per als usuaris del nostre bot.

Creació d'un bot de Telegram a Yandex.Cloud

Funció Yandex

Ara que s'ha creat el nostre bot, anem a Yandex.Cloudper crear una funció que executarà el codi del nostre bot. Si no has treballat amb Yandex.Cloud llegir el material Alícia a la terra de Bitrix, i llavors - Les funcions de Yandex envien correu. Estic bastant segur que aquests dos articles relativament breus seran suficients perquè tingueu una comprensió bàsica del tema.

Així que a la consola Yandex.Cloud al menú de navegació esquerre, seleccioneu l'element Funcions al núvol, i després premeu el botó Crea una funció. Li donem un nom i una breu descripció per a nosaltres mateixos.

Creació d'un bot de Telegram a Yandex.Cloud

Després de prémer el botó crear i al cap d'un parell de segons, la nova funció apareixerà a la llista de totes les funcions. Feu clic al seu nom; això ens portarà a la pàgina visió de conjunt la nostra funció. Aquí heu d'habilitar (On) interruptor funció públicade manera que sigui accessible des de l'exterior (per a Yandex.Cloud) del món, i el significat dels camps Enllaç per trucar и Идентификатор — Mantingueu-lo en secret per a tothom, excepte per a vosaltres mateixos i Telegram, de manera que diversos estafadors no puguin cridar la vostra funció.

Creació d'un bot de Telegram a Yandex.Cloud

Ara, utilitzant el menú de l'esquerra, aneu a L'editor funcions. Deixem de banda per un moment el nostre Pensaments intel·ligents, i crear una funció de plantilla mínima per comprovar la funcionalitat del nostre bot... No obstant això, en aquest context, aquesta funció és el nostre bot... En resum, ara i aquí mateix farem un bot senzill que farà un "mirall" ( és a dir, enviar de tornada les sol·licituds dels usuaris. Aquesta plantilla sempre es pot utilitzar quan es creen nous robots de telegram per assegurar-se que es comunica amb Telegrama'ohm funciona bé. Feu clic Crea un fitxer, cridem-lo index.js, i en línia Editor de codi enganxeu el codi següent en aquest fitxer:

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
  };
};

A la consola Yandex.Cloud hauria de semblar a això:

Creació d'un bot de Telegram a Yandex.Cloud

Més avall us indiquem Punt d'entrada - index.botOn index aquest és el nom del fitxer (index.js), i bot - nom de la funció (module.exports.bot). Deixeu tots els altres camps com estan i feu clic al botó de la cantonada superior dreta Crea una versió. En pocs segons es crearà aquesta versió de la funció. Poc després de la prova webhook, crearem una nova versió − Pensaments intel·ligents.

Creació d'un bot de Telegram a Yandex.Cloud

Emmagatzematge d'objectes

Ara que hem creat Funció Yandex, va, mentre estem a la consola Yandex.Cloud, creem l'anomenat cubell (cub, és a dir galleda en rus, no és un ram) per emmagatzemar fitxers d'imatge que s'utilitzaran al nostre bot Pensaments intel·ligents. Al menú de navegació esquerre, seleccioneu l'element Emmagatzematge d'objectes, prem el botó Crea una galleda, doneu-li un nom, per exemple, img-cubeta, i, el més important, Accés de lectura als objectes Ho fem públic; en cas contrari, Telegram no veurà les nostres imatges. Deixem tots els altres camps sense canvis. prem el botó Crea una galleda.

Creació d'un bot de Telegram a Yandex.Cloud

Després d'això, la llista de tots els cubs podria semblar a això (si aquest és el vostre únic cub):

Creació d'un bot de Telegram a Yandex.Cloud

Ara us suggereixo fer clic al nom de la galleda i crear-hi una carpeta per organitzar l'emmagatzematge d'imatges per a les vostres diferents aplicacions. Per exemple, per a un bot de telegram Pensaments intel·ligents Vaig crear una carpeta anomenada tg-bot-smart-thoughts (res, entendré aquest codi). Creeu-ne un també.

Creació d'un bot de Telegram a Yandex.Cloud

Ara podeu fer clic al nom de la carpeta, entrar-hi i pujar fitxers:

Creació d'un bot de Telegram a Yandex.Cloud

I fent clic al nom del fitxer, obteniu-lo URL per utilitzar-lo al nostre bot i, en general, a qualsevol lloc (però no publiqueu això URL innecessari, ja que el trànsit des de Emmagatzematge d'objectes carregat).

Creació d'un bot de Telegram a Yandex.Cloud

Això és bàsicament tot el que hi ha Emmagatzematge d'objectes. Ara sabreu què heu de fer quan vegeu un missatge per carregar fitxers allà.

Webhook

Ara instal·larem webhook - és a dir quan el bot rep una actualització (per exemple, un missatge d'un usuari) del servidor telegram al nostre Funció Yandex s'enviarà una sol·licitud (sol · licitar) amb dades. Aquí teniu una línia que podeu enganxar simplement al camp d'adreça del vostre navegador i després actualitzar la pàgina (només ho heu de fer una vegada): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Només el substituirem {bot_token} al testimoni que vam rebre del bot pare en crear el nostre bot, i {webhook_url} - encès URL el nostre Funcions Yandex. Espera un minut! Però RossKomTsenzur prohibeix als proveïdors de la Federació Russa el servei de l'adreça https://api.telegram.org. Sí, és correcte. Però proposa alguna cosa. Al cap i a la fi, podeu, per exemple, preguntar-ho a la vostra àvia a Ucraïna, Israel o Canadà: no hi ha "Rosskomcensorship" i només Déu sap com viu la gent sense ella. Com a resultat, la sol·licitud-resposta quan s'instal·la un webhook hauria de ser així:

Creació d'un bot de Telegram a Yandex.Cloud

Estem provant. Hauria de "mirar".

Creació d'un bot de Telegram a Yandex.Cloud

Això és cert. Les nostres felicitacions - ara Funció Yandex s'ha convertit telegram-bot!

Pensaments intel·ligents

Ara fem Smart Thoughts. El codi està obert i es troba GitHub. Està bastant ben comentat i només té un centenar de línies. Llegiu-lo com un llibret de diva d'òpera!

Creació d'un bot de Telegram a Yandex.Cloud

Clonar el projecte i instal·lar dependències:

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

Feu els canvis que necessiteu al fitxer index.js (opcional; no cal que canvieu res). Crear cremallera-arxiu, amb arxiu index.js i carpeta mòduls_node dins, per exemple, sota el nom smart.zip.

Creació d'un bot de Telegram a Yandex.Cloud

Ara aneu a la consola al nostre Funcions Yandex, seleccioneu la pestanya Arxiu ZIP, prem el botó Seleccioneu un fitxer, i descarregueu el nostre arxiu smart.zip. Finalment, a l'extrem superior dret, feu clic al botó Crea una versió.

Creació d'un bot de Telegram a Yandex.Cloud

En uns segons, quan s'actualitzi la funció, tornarem a provar el nostre bot. Ara ja no "miralls", sinó que ofereix pensaments intel·ligents!

Creació d'un bot de Telegram a Yandex.Cloud

Això és tot per avui. Més articles a continuació. Si t'interessa llegir això, subscriu-te a les notificacions sobre nous articles. Pots subscriure't aquí, o a telegram-canal Tutorial d'informàtica ZakharO Twitter @mikezaharov.

Referències

Codi a GitHub
Funcions Yandex Cloud
Emmagatzematge d'objectes Yandex
Bots: una introducció per a desenvolupadors
API de Telegram Bot

Donacions

Creació d'un bot de Telegram a Yandex.Cloud

Font: www.habr.com

Afegeix comentari