Construim un bot Telegram în Yandex.Cloud

Construim un bot Telegram în Yandex.Cloud

Astăzi, folosind materiale disponibile, vom crea în Yandex Cloud un bot Telegram folosind Funcțiile Yandex Cloud (sau Funcții Yandex — pentru a fi mai clar) și Yandex Object Storage (sau Stocare obiect — pentru claritate). Codul va fi pe Node.js. Cu toate acestea, există o mică problemă — o anumită organizație numită, să zicem, RosKomTenzura (cenzura este interzisă prin articolul 29 din Constituția Federației Ruse), nu permite furnizorilor de internet din Rusia să transmită cereri către API-ul Telegram la adresa: https://api.telegram.org/. Dar nu ne vom deranja — dacă nu, atunci nu. De fapt, în rucsacul nostru avem așa-numitele webhooks — cu ajutorul lor nu facem solicitări la o adresă specifică, ci doar trimitem solicitarea noastră ca răspuns la orice solicitare adresată nouă. Așadar, ca în Odessa — răspundem întrebării cu o întrebare. Prin urmare, API-ul Telegram nu va apărea în codul nostru.

Declinarea responsabilitățiiNumele organizațiilor guvernamentale menționate în acest articol sunt fictive, iar posibilele coincidențe cu numele organizațiilor reale sunt întâmplătoare.

Așadar, vom crea un bot care ne va furniza gânduri inteligente. Exact așa cum este în imagine:

Construim un bot Telegram în Yandex.Cloud

Îl puteți testa în acțiune — iată numele: @SmartThoughtsBot. Ați observat butonul „Abilitatea Alisei”? Это потому, что бот является своеобразным «компаньоном» для одноименного abilitatea Alisei, adică îndeplinește aceleași funcții ca și abilitatea Alisei și, poate, vor putea coexista în mod pașnic promovându-se reciproc. Despre cum să creezi abilitatea Gânduri Inteligente a fost descris în articolul Alisa dobândește abilitatea. Acum (după ce au fost efectuate unele modificări după publicarea articolului menționat anterior) pe smartphone acest abilitate va arăta cam așa:

Construim un bot Telegram în Yandex.Cloud

Crearea botului

Mi-ar plăcea ca acest tutorial să fie util pentru toată lumea, inclusiv pentru începătorii în „construirea de boți”. De aceea, în această secțiune voi descrie destul de detaliat cum se creează boți în Telegram'e. Pentru cei care nu au nevoie de această informație — puteți trece la secțiunile următoare.

Deschidem aplicația Telegaram, chemăm tatăl tuturor boților (la ei e ca la oameni) — @BotFather — și, mai întâi, îi dăm comanda /help, pentru a ne reimprospăta memoria cu ce putem face. Acum ne interesează comanda /newbot.

Construim un bot Telegram în Yandex.Cloud

Deoarece botul descris aici este deja creat, pentru scopuri demonstrative voi crea temporar un alt bot (după aceea îl voi șterge). Îi voi da numele DemoHabrBot. Numele (username) tuturor boților Telegram trebuie să se termine cu cuvântul bot, de exemplu: MyCoolBot sau my_cool_bot — aceasta este pentru boți. Dar mai întâi dăm botului un nume (name) — și aceasta este pentru oameni. Numele poate fi în orice limbă, poate conține spații, nu trebuie să se termine în cuvântul bot, și nici nu trebuie să fie unic. În exemplul de față, am denumit acest bot Demo Habr.

Construim un bot Telegram în Yandex.Cloud

Acum alegem un nume pentru bot (username, cel dedicat boturilor). Să-l numim DemoHabrBot. Tot ce se referea la numele botului (name) nu are legătură deloc cu numele său — username (sau are legătură, dar cu o precizie inversă). După ce am creat cu succes un nume unic pentru bot, trebuie să copiem și să păstrăm (în cea mai strictă confidențialitate!) token-ul arătat în captura de ecran cu săgeata roșie. Cu ajutorul său, vom stabili mai târziu webhook-ul de la Telegramfuncția web Yandex . Acum să dăm comandă tatălui tuturor boturilor:.

Construim un bot Telegram în Yandex.Cloud

, și el ne va arăta lista tuturor boturilor create de noi. Să lăsăm deocamdată botul proaspăt creat /mybots(a fost creat pentru a arăta cum se creează boturi, dar îl vom folosi astăzi și pentru alte scopuri demonstrative), și să examinăm botul Demo Habr Gânduri Inteligente ). Apăsăm butonul cu numele său din lista boturilor. (@SmartThoughtsBotAici putem configura botul nostru. Apăsând butonul

Construim un bot Telegram în Yandex.Cloud

Edit… vom trece la editarea uneia sau alteia dintre opțiuni. De exemplu, apăsând pe butonul Edit Name putem schimba numele botului, spunând în loc de , să scriem ). Apăsăm butonul cu numele său din lista boturilor.Idei Nebunești Botpic. — acesta este avatarul botului, trebuie să fie de minimum 150 x 150 px — aceasta este o descriere scurtă, pe care utilizatorul o vede la prima lansare a botului, ca răspuns la întrebarea:. Description Ce poate face acest bot? — o descriere și mai scurtă, care este transmisă cu un link către bot ( Despre ) sau la vizualizarea informațiilor despre acesta.https://t.me/SmartThoughtsBotNe mai rămâne doar să configurăm comenzile. Pentru aceasta, apăsăm butonul

Construim un bot Telegram în Yandex.Cloud

Edit Commands . Pentru standardizarea practicii utilizatorilorrecomandă întotdeauna utilizarea a două comenzi: Telegram , iar dacă botului îi sunt necesare setări — o comandă suplimentară /settings. Botul nostru este simplu ca un bulgăre, așa că nu are nevoie de setări deocamdată. Scriem primele două comenzi, pe care le vom procesa ulterior în cod. Acum, dacă utilizatorul va introduce în câmpul de input Slash (semnul slash: /), va apărea o listă de comenzi pentru selecția rapidă. Totul ca în imagine: în stânga — stabilim comenzile prin tatăl boturilor; în dreapta aceste comenzi sunt deja disponibile utilizatorilor în botul nostru. /start și /helpfuncția web Yandex

Construim un bot Telegram în Yandex.Cloud

Acum, când botul nostru a fost creat, trecem la

Acum, când botul nostru a fost creat, trecem la Yandex.Cloud, pentru a crea o funcție care va executa codul botului nostru. Dacă nu ați lucrat încă cu Yandex.Cloud , citiți materialul Alice în țara Bitrix, și apoi — Funcțiile Yandex trimit emailuri. Sunt aproape sigur că aceste două articole relativ scurte vă vor fi suficiente pentru o înțelegere de bază a subiectului.

Așadar, în consola Yandex.Cloud în meniul de navigare din stânga, selectăm punctul Funcții Cloud, și apoi apăsăm butonul Creează funcția. Îi atribuim un nume și, pentru noi, o descriere scurtă.

Construim un bot Telegram în Yandex.Cloud

După ce ați apăsat butonul Creare Și după câteva secunde, noua funcție va apărea în lista tuturor funcțiilor. Apăsăm pe numele ei — asta ne va duce la pagina Prezentare generală funcției noastre. Aici trebuie să activăm (Activat) comutatorul Funcție publică, pentru a o face accesibilă din lumea externă (pentru Yandex.Cloud) așa încât valorile câmpurilor Link pentru apelare și Identificator — să fie păstrate în mare secret, de către toți ceilalți în afară de tine și Telegram, pentru a te asigura că funcția ta nu poate fi apelată de diferiți escroci.

Construim un bot Telegram în Yandex.Cloud

Acum, cu ajutorul meniului din stânga, ne mutăm la Editor funcții. Haideți să lăsăm deoparte, pentru o scurtă perioadă, ). Apăsăm butonul cu numele său din lista boturilor., și să creăm o funcție template minimă pentru a verifica dacă botul nostru funcționează… De fapt, în acest context, această funcție este botul nostru… Așadar, acum și aici vom crea un bot simplu care va „reflecta” (adică va trimite înapoi) cererile utilizatorilor. Acest template poate fi folosit întotdeauna la crearea de noi boti Telegram, pentru a ne asigura că legătura cu Telegramfuncționează corect. Apăsăm Creează fișier, îl numim index.js, și în editorul Online Code inserăm în acest fișier următorul cod:

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, aceasta ar trebui să arate cam așa:

Construim un bot Telegram în Yandex.Cloud

Mai jos, specificăm Punctul de intrare — index.bot, unde index este numele fișierului (index.js), iar bot — numele funcției (module.exports.bot). Toate celelalte câmpuri le lăsăm „așa cum sunt”, iar în colțul din dreapta sus apăsăm butonul Creează versiunea. După câteva secunde, această versiune a funcției va fi creată. În curând, după testarea webhook-ului, vom crea o nouă versiune — ). Apăsăm butonul cu numele său din lista boturilor..

Construim un bot Telegram în Yandex.Cloud

Stocare obiect

Acum, când am creat Acum, când botul nostru a fost creat, trecem la, să continuăm, cât timp suntem în consolă Yandex.Cloud, vom crea un așa-numit bucket (bucket, adică un recipient pentru stocarea fișierelor imagini care vor fi utilizate în botul nostru ). Apăsăm butonul cu numele său din lista boturilor.. În meniul de navigare din stânga, selectați opțiunea Object Storage, faceți clic pe butonul Creează bucket, gândiți-i un nume, de exemplu, img-bucket, și, cel mai important, Acces pentru citirea obiectelor să fie public — altfel Telegramul nu va vedea imaginile noastre. Toate celelalte câmpuri le lăsăm neschimbate. Facem clic pe butonul Creează bucket.

Construim un bot Telegram în Yandex.Cloud

După aceasta, lista tuturor bucket-urilor poate arăta cam așa (dacă acesta este singurul dumneavoastră bucket):

Construim un bot Telegram în Yandex.Cloud

Acum vă sugerez să faceți clic pe numele bucket-ului și să creați în interiorul lui un folder pentru a organiza stocarea imaginilor pentru diferitele aplicații ale dumneavoastră. De exemplu, pentru botul de Telegram ). Apăsăm butonul cu numele său din lista boturilor. am creat un folder numit tg-bot-smart-thoughts (nicio problemă, voi înțelege acest cod). Creați și dumneavoastră unul.

Construim un bot Telegram în Yandex.Cloud

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

Construim un bot Telegram în Yandex.Cloud

Iar făcând clic pe numele fișierului — veți obține URL pentru utilizare în botul nostru și, în general — oriunde (dar nu publicați acesta URL fără necesitate, deoarece traficul de la Stocarea Obiectelor este tarifată).

Construim un bot Telegram în Yandex.Cloud

Iată, de fapt, totul despre Stocarea Obiectelor. Acum veți ști ce să faceți când vedeți o solicitare de a încărca fișiere acolo.

Webhook

Acum vom seta un webhook — adică atunci când botul primește o actualizare (de exemplu, un mesaj de la utilizator), de la server Telegram va fi trimisă o solicitare ( . Acum să dăm comandă tatălui tuturor boturilor: request) cu datele. Iată linia pe care o puteți insera pur și simplu în câmpul de adresă al browser-ului și apoi să actualizați pagina (asta trebuie făcut o singură dată):Doar înlocuiți https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
{bot_token} cu token-ul pe care l-am primit de la botul părinte când am creat botul nostru, iar {webhook_url} — cu al nostru. URL Un moment! Dar Funcții Yandexinterzice furnizorilor din RF să deservească adresa RosKomTenzura . Da, corect. Dar gândiți-vă la ceva. Puteți, de exemplu, să-i cereți bunicii dumneavoastră din Ucraina, Israel sau Canada — acolo nu există „cenzuri rusești”, și numai Dumnezeu știe cum trăiesc oamenii fără asta. În cele din urmă, solicitarea-răspuns la setarea webhook-ului ar trebui să arate așa: https://api.telegram.orgTestăm. Trebuie să „reflecte”.

Construim un bot Telegram în Yandex.Cloud

Așa este. Felicitările noastre — acum

Construim un bot Telegram în Yandex.Cloud

-bot! Acum, când botul nostru a fost creat, trecem la a devenit TelegramAcum facem Gânduri Inteligente. Codul este deschis și se află pe

). Apăsăm butonul cu numele său din lista boturilor.

. Este bine comentat și are doar o sută de linii. Citiți-l ca o divă de operă liberetul! GitHubClonați proiectul și instalați dependențele:

Construim un bot Telegram în Yandex.Cloud

Clonați proiectul și instalați dependențele:

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

Faceți modificările necesare în fișier index.js (opțional; nu este necesar să schimbați nimic). Creați zip-arhivă, cu fișierul index.js și folderul node_modules în interior, de exemplu, sub numele smart.zip.

Construim un bot Telegram în Yandex.Cloud

Acum mergeți la consola noastră Funcții Yandex, alegeți tab-ul Arhivă ZIP, apăsați butonul Alegeți fișierul, și încărcați arhiva noastră smart.zip. În cele din urmă, în colțul din dreapta sus apăsați butonul Creează versiunea.

Construim un bot Telegram în Yandex.Cloud

După câteva secunde, când funcția se va actualiza, să testăm din nou botul nostru. Acum el nu mai „reflectă”, ci oferă gânduri inteligente!

Construim un bot Telegram în Yandex.Cloud

Asta este tot pentru astăzi. Alte articole urmează. Cei interesați să citească așa ceva — abonați-vă la notificările despre articolele noi. Puteți să vă abonați aici sau pe Telegram-canal IT Tutorial Zahăr, sau Twitter @mikezaharov.

Linkuri

Cod pe GitHub
Funcțiile Yandex Cloud
Yandex Object Storage
Bots: O introducere pentru dezvoltatori
API-ul Botului Telegram

Donatii

Construim un bot Telegram în Yandex.Cloud

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster