Crearea unui bot Telegram în Yandex.Cloud

Crearea unui bot Telegram în Yandex.Cloud

Astăzi, din materiale vechi, vom asambla Yandex.Cloud Telegram bot folosind Funcții Yandex Cloud (Sau, Funcții Yandex - pe scurt) și Depozitarea obiectelor Yandex (Sau, Depozitarea obiectelor - pentru claritate). Codul va fi activat Node.js. Cu toate acestea, există o circumstanță picantă - o anumită organizație numită, să spunem, RossKomTsenzur (cenzura este interzisă de articolul 29 din Constituția Federației Ruse), nu permite furnizorilor de internet ruși să transmită cereri către Telegram API pe adresa: https://api.telegram.org/. Ei bine, nu vom - nu, nu. La urma urmei, în geanta noastră există așa-numite. webhook-uri — cu ajutorul lor, nu facem cereri la o anumită adresă, ci pur și simplu trimitem solicitarea noastră ca răspuns la orice solicitare către noi. Adică, ca și în Odesa, răspundem la o întrebare cu o întrebare. De aceea Telegram API nu va apărea în codul nostru.

DisclaimerNumele oricăror organizații guvernamentale menționate în acest articol sunt fictive, iar posibilele potriviri cu numele organizațiilor din viața reală sunt coincidențe.

Deci, vom face un bot care ne va oferi gânduri inteligente. Exact ca in poza:

Crearea unui bot Telegram în Yandex.Cloud

Puteți încerca în acțiune - iată numele: @SmartThoughtsBot. Am observat butonul „Abilitatea lui Alice”? Acest lucru se datorează faptului că botul este un fel de „însoțitor” pentru botul cu același nume. priceperea lui Alice, adică îndeplinește aceleași funcții ca și priceperea lui Alice și este posibil ca aceștia să poată coexista pașnic făcându-și reclamă unul altuia. Despre cum să creați pricepere Gânduri inteligente descrise în articol Alice dobândește îndemânare. Acum (după ce a făcut unele modificări după publicarea articolului de mai sus) pe smartphone asta pricepere va arata cam asa:

Crearea unui bot Telegram în Yandex.Cloud

Crearea unui bot

Aș dori ca acest tutorial să fie util tuturor, inclusiv. și constructori de bot începători. Prin urmare, în această secțiune voi descrie în detaliu cum să creați în general Telegramăroboții. Pentru cei care nu au nevoie de aceste informații, treceți la următoarele secțiuni.

Deschideți aplicația Telegaram, să numim tatăl tuturor roboților (au totul ca oamenii) - @BotFather - și mai întâi îi vom da comanda /help pentru a-și împrospăta memoria despre ceea ce putem face. Acum vom fi interesați de echipă / newbot.

Crearea unui bot Telegram în Yandex.Cloud

Deoarece botul descris aici a fost deja creat, în scopuri demonstrative voi crea un alt bot pentru o perioadă scurtă de timp (și apoi îl voi șterge). Îl voi suna DemoHabrBot. Nume (nume de utilizator) din toți roboții telegramei trebuie să se termine cu cuvântul bot, de exemplu: MyCoolBot sau my_cool_bot - acesta este pentru roboți. Dar mai întâi îi dăm botului un nume (nume) - și asta este pentru oameni. Numele poate fi în orice limbă, poate conține spații și nu trebuie să se termine cu un cuvânt bot, și nici măcar nu trebuie să fie unic. În acest exemplu, am numit acest bot Demo Habr.

Crearea unui bot Telegram în Yandex.Cloud

Acum alegeți un nume pentru bot (nume de utilizator, cel pentru roboți). Să-l sunăm DemoHabrBot. Tot ce este legat de numele botului (nume) nu are nicio legătură cu numele său - nume de utilizator (sau se aplică, dar exact invers). După ce am creat cu succes un nume unic de bot, trebuie să copiem și să salvăm (cu cea mai strictă încredere!) simbolul afișat în captură de ecran cu o săgeată roșie. Cu ajutorul lui vom stabili ulterior provenind din Telegramă'un webhook către nostru Funcția Yandex.

Crearea unui bot Telegram în Yandex.Cloud

Acum să dăm comanda tatălui tuturor roboților: /mybots, și ne va afișa o listă cu toți roboții pe care i-am creat. Să lăsăm botul proaspăt copt în pace deocamdată Demo Habr (a fost creat pentru a arăta cum să creați boți, dar îl vom folosi și astăzi în alte scopuri demonstrative) și să ne uităm la bot Gânduri inteligente (@SmartThoughtsBot). Faceți clic pe butonul cu numele său din lista de roboți.

Crearea unui bot Telegram în Yandex.Cloud

Aici ne putem configura botul. Prin apăsarea butonului Editați | ×… Vom trece la editarea uneia sau altei opțiuni. De exemplu, făcând clic pe butonul Editeaza numele putem schimba numele botului, să spunem în schimb Gânduri inteligente, scrie Idei nebunești. Botpic - acesta este avatarul botului, trebuie să fie cel puțin 150 x 150 px. Descriere — aceasta este o scurtă descriere pe care utilizatorul o vede când pornește botul pentru prima dată, ca răspuns la întrebarea: Ce poate face acest bot? Despre Noi — o descriere și mai scurtă, care este transmisă cu un link către bot (https://t.me/SmartThoughtsBot) sau când vizualizați informații despre acesta.

Crearea unui bot Telegram în Yandex.Cloud

Tot ce trebuie să facem este să setăm comenzile. Pentru a face acest lucru, apăsați butonul Editați comenzi. Pentru a standardiza practica utilizatorilor Telegramă recomandă să utilizați întotdeauna două comenzi: /start и / ajutor, iar dacă botul are nevoie de setări, utilizați comanda suplimentară /settings. Botul nostru este la fel de simplu ca o minge, deci nu are nevoie încă de setări. Scriem primele două comenzi, pe care apoi le vom procesa în cod. Acum, dacă utilizatorul introduce o bară oblică (semn: /) în câmpul de introducere, va apărea o listă de comenzi pentru o selecție rapidă. Totul este ca în imagine: în stânga - instalăm comenzi prin botul tată; în dreapta, aceste comenzi sunt deja disponibile pentru utilizatorii din botul nostru.

Crearea unui bot Telegram în Yandex.Cloud

Funcția Yandex

Acum că botul nostru a fost creat, să mergem la Yandex.Cloudpentru a crea o funcție care va executa codul botului nostru. Dacă nu ai lucrat cu Yandex.Cloud citeste materialul Alice în Țara lui Bitrix, și apoi - Funcțiile Yandex trimit e-mail. Sunt destul de sigur că aceste două articole relativ scurte vă vor fi suficiente pentru a avea o înțelegere de bază a subiectului.

Deci în consolă Yandex.Cloud în meniul de navigare din stânga selectați elementul Funcții cloud, apoi apăsați butonul Creați o funcție. Îi dăm un nume și o scurtă descriere pentru noi înșine.

Crearea unui bot Telegram în Yandex.Cloud

După apăsarea butonului crea iar după câteva secunde, noua funcție va apărea în lista tuturor funcțiilor. Faceți clic pe numele ei - aceasta ne va duce la pagină Revizuire funcția noastră. Aici trebuie să activați (On) intrerupator Funcția publicăastfel încât să devină accesibil din exterior (pentru Yandex.Cloud) din lume și sensul câmpurilor Apelați legătura и Identificator — păstrați-l profund secret față de toată lumea, cu excepția dvs. și a Telegramului, astfel încât funcția dvs. să nu poată fi apelată de diverși escroci.

Crearea unui bot Telegram în Yandex.Cloud

Acum, folosind meniul din stânga, accesați Editorul funcții. Să lăsăm o clipă deoparte Gânduri inteligente, și creați o funcție de șablon minimă pentru a verifica funcționalitatea botului nostru... Totuși, în acest context, această funcție este botul nostru... Pe scurt, acum și chiar aici vom face un bot simplu care se va „oglindi” ( adică trimite înapoi cererile utilizatorilor. Acest șablon poate fi folosit oricând la crearea de noi roboți de telegramă pentru a vă asigura că comunicarea cu Telegramă'ohm funcționează bine. Clic Creați fișier, să-i spunem index.js, și online Editor de cod lipiți următorul cod în acest fișier:

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

În consola Yandex.Cloud ar trebui să arate cam așa:

Crearea unui bot Telegram în Yandex.Cloud

Mai jos indicăm Punct de intrare - index.botUnde index acesta este numele fișierului (index.js) și bot - numele funcției (module.exports.bot). Lăsați toate celelalte câmpuri așa cum sunt și faceți clic pe butonul din colțul din dreapta sus Creați versiunea. În câteva secunde va fi creată această versiune a funcției. La scurt timp după testare webhook, vom crea o nouă versiune − Gânduri inteligente.

Crearea unui bot Telegram în Yandex.Cloud

Depozitarea obiectelor

Acum că am creat Funcția Yandex, haide, cât suntem în consolă Yandex.Cloud, să creăm așa-numitul găleată (găleată, adică găleată în rusă, deloc un buchet) pentru stocarea fișierelor de imagine care vor fi folosite în botul nostru Gânduri inteligente. În meniul de navigare din stânga, selectați elementul Depozitarea obiectelor, apasa butonul Creați o găleată, veniți cu un nume pentru el, de exemplu, img-găleată, si cel mai important, Acces de citire la obiecte Îl facem public - altfel Telegram nu va vedea pozele noastre. Lăsăm toate celelalte câmpuri neschimbate. apasa butonul Creați o găleată.

Crearea unui bot Telegram în Yandex.Cloud

După aceasta, lista tuturor găleților ar putea arăta cam așa (dacă aceasta este singura ta găleată):

Crearea unui bot Telegram în Yandex.Cloud

Acum vă sugerez să faceți clic pe numele găleții și să creați un folder în interiorul acestuia pentru a organiza stocarea imaginilor pentru diferite aplicații. De exemplu, pentru un bot telegram Gânduri inteligente Am creat un folder numit tg-bot-gânduri-inteligente (nimic, voi înțelege acest cod). Creează și tu unul.

Crearea unui bot Telegram în Yandex.Cloud

Acum puteți să faceți clic pe numele folderului, să intrați în el și să încărcați fișiere:

Crearea unui bot Telegram în Yandex.Cloud

Și făcând clic pe numele fișierului - obțineți-l URL-ul pentru utilizare în botul nostru și, în general, oriunde (dar nu publicați acest lucru URL-ul inutil, deoarece traficul din Depozitarea obiectelor taxat).

Crearea unui bot Telegram în Yandex.Cloud

Asta e practic tot ceea ce este Depozitarea obiectelor. Acum veți ști ce să faceți când vedeți o solicitare pentru a încărca fișiere acolo.

Webhook

Acum vom instala webhook - adica când botul primește o actualizare (de exemplu, un mesaj de la un utilizator) de la server Telegramă în nostru Funcția Yandex se va trimite o cerere (solicita) cu date. Iată o linie pe care o puteți lipi pur și simplu în câmpul de adresă al browserului și apoi reîmprospătați pagina (trebuie să faceți acest lucru o singură dată): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
O vom înlocui doar {bot_token} la jetonul pe care l-am primit de la botul tată la crearea botului nostru și {webhook_url} - pe URL-ul al nostru Funcții Yandex. Așteptaţi un minut! Dar RossKomTsenzur interzice furnizorilor din Federația Rusă să deservească adresa https://api.telegram.org. Da, așa e. Dar vine cu ceva. La urma urmei, poți, de exemplu, să o întrebi pe bunica despre asta în Ucraina, Israel sau Canada - nu există nicio „cenzură Rosskom” acolo și numai Dumnezeu știe cum trăiesc oamenii fără ea. Ca rezultat, cererea-răspuns la instalarea unui webhook ar trebui să arate astfel:

Crearea unui bot Telegram în Yandex.Cloud

Testăm. Ar trebui să se „oglindă”.

Crearea unui bot Telegram în Yandex.Cloud

Asta este adevărat. Felicitările noastre - acum Funcția Yandex a devenit Telegramă-bot!

Gânduri inteligente

Acum să facem Gânduri inteligente. Codul este deschis și se află GitHub. Este destul de bine comentat și are doar o sută de rânduri. Citește-l ca pe un libret de divă de operă!

Crearea unui bot Telegram în Yandex.Cloud

Clonează proiectul și instalează dependențe:

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

Faceți modificările de care aveți nevoie în fișier index.js (opțional; nu trebuie să schimbați nimic). Crea zip-arhiva, cu dosar index.js și folder nod_module în interior, de exemplu, sub numele smart.zip.

Crearea unui bot Telegram în Yandex.Cloud

Acum du-te la consola la nostru Funcții Yandex, selectați fila Arhiva ZIP, apasa butonul Selectați fișierulși descărcați arhiva noastră smart.zip. În cele din urmă, în colțul din dreapta sus, faceți clic pe butonul Creați versiunea.

Crearea unui bot Telegram în Yandex.Cloud

În câteva secunde, când funcția este actualizată, vom testa din nou botul nostru. Acum nu se mai „oglindește”, ci oferă gânduri inteligente!

Crearea unui bot Telegram în Yandex.Cloud

Asta e tot pentru azi. Urmează mai multe articole. Dacă ești interesat să citești acest articol, abonează-te la notificări despre articole noi. Vă puteți abona aici sau la adresa Telegramă-canal Tutorial IT ZakharSau Twitter @mikezaharov.

referințe

Cod pe GitHub
Funcții Yandex Cloud
Depozitarea obiectelor Yandex
Boți: o introducere pentru dezvoltatori
API Telegram Bot

Donații

Crearea unui bot Telegram în Yandex.Cloud

Sursa: www.habr.com

Adauga un comentariu