Izrada Telegram bota u Yandex.Cloudu

Izrada Telegram bota u Yandex.Cloudu

Danas ćemo sastaviti od otpadnog materijala Yandex.Cloud Telegram bot s Yandex Cloud funkcije (Ili Yandex funkcije - skraćeno) i Yandex Object Storage (Ili Skladištenje objekata - radi jasnoće). Kod će biti uključen Node.js. No, postoji jedna pikantna okolnost - izvjesna organizacija tzv. RossKomTsenzur (cenzura je zabranjena člankom 29. Ustava Ruske Federacije), ne dopušta ruskim pružateljima internetskih usluga slanje zahtjeva na Telegram API prema adresi: https://api.telegram.org/. Pa nećemo - ne, ne. Uostalom, u našoj torbi postoje tzv. webdokačice — uz njihovu pomoć ne šaljemo zahtjeve na određenu adresu, već jednostavno šaljemo svoj zahtjev kao odgovor na bilo koji upit nama. Odnosno, kao u Odesi, na pitanje odgovaramo pitanjem. Zato Telegram API neće se pojaviti u našem kodu.

OdricanjeImena svih vladinih organizacija spomenutih u ovom članku su izmišljena, a moguća podudaranja s imenima organizacija iz stvarnog života su slučajna.

Dakle, napravit ćemo bota koji će nam donositi pametne misli. Točno kao na slici:

Izrada Telegram bota u Yandex.Cloudu

Možete ga isprobati na djelu - evo naziva: @SmartThoughtsBot. Primijetio gumb "Aliceina vještina"? To je zato što je bot neka vrsta "suputnika" za bota istog imena. Aliceina vještina, tj. obavlja iste funkcije kao Aliceina vještina a moguće je da će moći mirno koegzistirati reklamirajući jedni druge. O tome kako stvarati vještina Pametne misli opisano u članku Alice stječe vještinu. Sada (nakon nekih promjena nakon objave gornjeg članka) na pametnom telefonu ovo vještina izgledat će otprilike ovako:

Izrada Telegram bota u Yandex.Cloudu

Izrada bota

Želio bih da ovaj vodič bude koristan svima, uključujući. i početnici u stvaranju botova. Stoga ću u ovom odjeljku detaljno opisati kako općenito stvarati Telegram'e botovi. Za one kojima ove informacije nisu potrebne, prijeđite na sljedeće odjeljke.

Otvorite aplikaciju Telegaram, nazovimo oca svih botova (imaju sve ko i ljudi) - @BotOtac - i prvo ćemo mu dati naredbu /help da mu osvježimo sjećanje o tome što možemo učiniti. Sada će nas zanimati tim / newbot.

Izrada Telegram bota u Yandex.Cloudu

Budući da je ovdje opisani bot već kreiran, radi demonstracije ću nakratko izraditi još jednog bota (a zatim ga obrisati). Nazvat ću ga DemoHabrBot. imena (korisničko ime) svih telegram botova mora završavati riječju bot, na primjer: MyCoolBot ili moj_cool_bot - ovo je za botove. Ali prvo dajemo ime botu (ime) - a ovo je za ljude. Naziv može biti na bilo kojem jeziku, sadržavati razmake i ne mora završavati riječju bot, i čak ne mora biti jedinstven. U ovom primjeru sam pozvao ovog bota Demo Habr.

Izrada Telegram bota u Yandex.Cloudu

Sada odaberite ime za bota (korisničko ime, onaj za botove). Nazovimo ga DemoHabrBot. Sve vezano za naziv bota (ime) uopće se ne odnosi na njegovo ime - korisničko ime (ili vrijedi, ali upravo suprotno). Nakon uspješne izrade jedinstvenog imena bota, trebamo kopirati i spremiti (u najstrožoj tajnosti!) token prikazan na snimci zaslona crvenom strelicom. Pomoću njega kasnije ćemo utvrditi porijeklo iz Telegram'webdojavnik za naš Yandex funkcija.

Izrada Telegram bota u Yandex.Cloudu

Sada dajmo naredbu ocu svih botova: /mojibotovi, i pokazat će nam popis svih botova koje smo izradili. Ostavimo sad novopečenog bota na miru Demo Habr (napravljen je da pokaže kako se stvaraju botovi, ali ćemo ga danas koristiti i za druge demonstracijske svrhe), i pogledajmo bot Pametne misli (@SmartThoughtsBot). Pritisnite gumb s njegovim imenom na popisu botova.

Izrada Telegram bota u Yandex.Cloudu

Ovdje možemo konfigurirati našeg bota. Pritiskom na tipku Uredi… Preći ćemo na uređivanje jedne ili druge opcije. Na primjer, klikom na gumb Uredi ime možemo promijeniti ime bota, recimo umjesto toga Pametne misli, napiši Lude ideje. Botpic - ovo je avatar bota, mora biti barem 150 x 150 px. Opis — ovo je kratki opis koji korisnik vidi pri prvom pokretanju bota, kao odgovor na pitanje: Što ovaj bot može? O nama — još kraći opis, koji se prenosi uz link na bot (https://t.me/SmartThoughtsBot) ili prilikom pregledavanja informacija o njemu.

Izrada Telegram bota u Yandex.Cloudu

Sve što trebamo učiniti je postaviti naredbe. Da biste to učinili, pritisnite gumb Uredi naredbe. Standardizirati korisničku praksu Telegram preporučuje uvijek korištenje dvije naredbe: /početak и / Pomozite, a ako bot treba postavke, koristite dodatnu naredbu /settings. Naš bot je jednostavan kao lopta, tako da još ne treba nikakve postavke. Napišemo prve dvije naredbe koje ćemo zatim obraditi u kodu. Sada, ako korisnik unese kosu crtu (znak kose crte: /) u polje za unos, pojavit će se popis naredbi za brzi odabir. Sve je kao na slici: lijevo - instaliramo naredbe preko očevog bota; s desne strane, ove su naredbe već dostupne korisnicima u našem botu.

Izrada Telegram bota u Yandex.Cloudu

Yandex funkcija

Sada kada je naš bot kreiran, idemo na Yandex.Cloudza izradu funkcije koja će izvršiti kod našeg bota. Ako niste radili sa Yandex.Cloud pročitajte materijal Alisa u zemlji Bitrixa, i onda - Yandex funkcije za slanje pošte. Prilično sam siguran da će vam ova dva relativno kratka članka biti dovoljna za osnovno razumijevanje teme.

Dakle u konzoli Yandex.Cloud u lijevom navigacijskom izborniku odaberite stavku Funkcije oblaka, a zatim pritisnite gumb Stvorite funkciju. Sami mu dajemo ime i kratak opis.

Izrada Telegram bota u Yandex.Cloudu

Nakon pritiska na tipku stvoriti i nakon nekoliko sekundi, nova funkcija će se pojaviti u popisu svih funkcija. Kliknite na njezino ime - to će nas odvesti na stranicu Pregled naša funkcija. Ovdje morate omogućiti (On) sklopka Javna funkcijatako da postaje dostupan izvana (za Yandex.Cloud) svijeta, te značenje polj Veza poziva и identifikator — čuvaj ga u dubokoj tajnosti od svih osim od sebe i Telegrama, kako tvoju funkciju ne bi prozvali razni prevaranti.

Izrada Telegram bota u Yandex.Cloudu

Sada, koristeći lijevi izbornik, idite na Urednik funkcije. Ostavimo na trenutak po strani naše Pametne misli, i izraditi minimalnu funkciju predloška za provjeru funkcionalnosti našeg bota... Međutim, u ovom kontekstu, ova funkcija je naš bot... Ukratko, sada i upravo ovdje napravit ćemo jednostavnog bota koji će "zrcaliti" ( tj. poslati natrag ) korisničke zahtjeve. Ovaj se predložak uvijek može koristiti pri izradi novih telegram botova kako bi se osigurala komunikacija sa Telegram'ohm radi dobro. Klik Stvori datoteku, nazovimo ga index.js, i online Uređivač koda zalijepite sljedeći kod u ovu datoteku:

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

U konzoli Yandex.Cloud to bi trebalo izgledati otprilike ovako:

Izrada Telegram bota u Yandex.Cloudu

Dalje u nastavku navodimo Ulazna točka - indeks.botGdje indeks ovo je naziv datoteke (index.js), i bot - naziv funkcije (modul.exports.bot). Sva ostala polja ostavite onakva kakva jesu i kliknite gumb u gornjem desnom kutu Izradi verziju. Za nekoliko sekundi ova će se verzija funkcije izraditi. Ubrzo nakon testiranja webhook, izradit ćemo novu verziju − Pametne misli.

Izrada Telegram bota u Yandex.Cloudu

Skladištenje objekata

Sad kad smo stvorili Yandex funkcija, hajde, dok smo u konzoli Yandex.Cloud, stvorimo tzv kanta (kanta, tj. kanta na ruskom, uopće nije buket) za pohranu slikovnih datoteka koje će se koristiti u našem botu Pametne misli. U lijevom navigacijskom izborniku odaberite stavku Pohrana predmeta, pritisni gumb Napravite kantu, smisli ime za to, na primjer, img-kanta, i što je najvažnije, Pristup čitanju objekata Mi to javno objavljujemo - inače Telegram neće vidjeti naše slike. Sva ostala polja ostavljamo nepromijenjena. pritisni gumb Napravite kantu.

Izrada Telegram bota u Yandex.Cloudu

Nakon ovoga, popis svih spremnika može izgledati otprilike ovako (ako je ovo vaš jedini spremnik):

Izrada Telegram bota u Yandex.Cloudu

Sada predlažem da kliknete na naziv spremnika i stvorite mapu unutar njega kako biste organizirali pohranu slika za svoje različite aplikacije. Na primjer, za telegram bot Pametne misli Napravio sam mapu pod nazivom tg-bot-pametne-misli (ništa, razumjet ću ovaj kod). Stvorite i vi jednu.

Izrada Telegram bota u Yandex.Cloudu

Sada možete kliknuti na naziv mape, otići u nju i učitati datoteke:

Izrada Telegram bota u Yandex.Cloudu

I klikom na naziv datoteke - dobiti ga URL za korištenje u našem botu, i općenito - bilo gdje (ali nemojte ovo objaviti URL nepotrebno, budući da prometuje iz Skladištenje objekata nabijen).

Izrada Telegram bota u Yandex.Cloudu

To je u biti sve što se tiče toga Skladištenje objekata. Sada ćete znati što učiniti kada tamo vidite upit za učitavanje datoteka.

Webhook

Sada ćemo instalirati webhook - tj. kada bot primi ažuriranje (na primjer, poruku od korisnika) od poslužitelja Telegram našima Yandex funkcija zahtjev će biti poslan (zatražiti) s podacima. Evo retka koji možete jednostavno zalijepiti u adresno polje preglednika i zatim osvježiti stranicu (ovo morate učiniti samo jednom): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Samo ćemo ga zamijeniti {bot_token} na token koji smo primili od oca bota prilikom stvaranja našeg bota, i {webhook_url} - dalje URL naš Yandex funkcije. Pričekaj minutu! Ali RossKomTsenzur zabranjuje davateljima usluga u Ruskoj Federaciji servisiranje adrese https://api.telegram.org. Da, tako je. Ali smisli nešto. Uostalom, možete, na primjer, pitati svoju baku o tome u Ukrajini, Izraelu ili Kanadi - tamo nema "Rosskomcenzure", a sam Bog zna kako ljudi žive bez nje. Kao rezultat toga, zahtjev-odgovor prilikom instaliranja web-dojavnika trebao bi izgledati ovako:

Izrada Telegram bota u Yandex.Cloudu

Mi testiramo. Trebao bi se "zrcaliti".

Izrada Telegram bota u Yandex.Cloudu

To je istina. Naše čestitke - sada Yandex funkcija postalo je Telegram-bot!

Pametne misli

Sada idemo Pametne misli. Šifra je otvorena i leži GitHub. Prilično je dobro komentiran i ima samo stotinu redaka. Čitajte ga kao libreto operne dive!

Izrada Telegram bota u Yandex.Cloudu

Klonirajte projekt i instalirajte ovisnosti:

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

Unesite potrebne promjene u datoteku index.js (nije obavezno; ne morate ništa mijenjati). Stvoriti zip-arhiva, sa spisom index.js i mapa čvorovi_moduli unutra, na primjer, pod imenom pametno.zip.

Izrada Telegram bota u Yandex.Cloudu

Sada idite do naše konzole Yandex funkcije, odaberite karticu ZIP arhiva, pritisni gumb Odaberite datoteku, i preuzmite našu arhivu pametno.zip. Na kraju, u gornjem desnom kutu kliknite gumb Izradi verziju.

Izrada Telegram bota u Yandex.Cloudu

Za nekoliko sekundi, kada se funkcija ažurira, ponovno ćemo testirati našeg bota. Sada više ne “ogleda”, već donosi pametne misli!

Izrada Telegram bota u Yandex.Cloudu

To je sve za danas. Slijedi više članaka. Ako ste zainteresirani za čitanje ovoga, pretplatite se na obavijesti o novim člancima. Možete se pretplatiti ovdje ili na Telegram-kanal IT Tutorial ZakharIli X / Twitter @mikezaharov.

reference

Kod na GitHubu
Yandex Cloud funkcije
Yandex Object Storage
Botovi: uvod za programere
Telegram Bot API

Donaty

Izrada Telegram bota u Yandex.Cloudu

Izvor: www.habr.com

Dodajte komentar