Izrada Telegram bota u Yandex.Cloud

Izrada Telegram bota u Yandex.Cloud

Danas ćemo prikupljati od improviziranih materijala Yandex.Cloud Telegram bot koristeći Yandex Cloud funkcije (ili Yandex funkcije radi sažetosti) i Yandex Object Storage (ili Skladištenje objekata - radi jasnoće). Kod će biti uključen node.js. Međutim, postoji jedna pikantna okolnost - određena organizacija koja se zove, recimo, RossKomCensorship (cenzura je zabranjena članom 29. Ustava Ruske Federacije), ne dozvoljava internet provajderima u Rusiji da prenose zahteve na Telegram API na: https://api.telegram.org/. Pa, nećemo - ne, ne. Zaista, u našoj torbi postoje tzv. webhooks - uz njihovu pomoć ne postavljamo zahtjeve na određenu adresu, već samo šaljemo naš zahtjev kao odgovor na bilo koji zahtjev nama. Odnosno, kao u Odesi - na pitanje odgovaramo pitanjem. Zbog toga Telegram API neće se pojaviti u našem kodu.

Odricanje od odgovornostiImena svih državnih organizacija pomenutih u ovom članku su izmišljena, a moguće podudarnosti sa nazivima organizacija iz stvarnog života su slučajne.

Dakle, napravićemo bota koji će nas snabdeti pametnim mislima. Tacno kao na slici:

Izrada Telegram bota u Yandex.Cloud

Možete ga isprobati na djelu - evo naziva: @SmartThoughtsBot. Obratite pažnju na dugme "Aliceina vještina"? To je zato što je bot svojevrsni "pratilac" za istoimenog Alisina veština, tj. obavlja iste funkcije kao Alisina veština i, možda, da mogu mirno koegzistirati reklamirajući jedno drugo. O tome kako kreirati Vještina pametne misli opisano u članku Alice dobija veštinu. Sada (nakon što ste napravili neke promjene nakon objavljivanja gornjeg članka) na pametnom telefonu ovo veština izgledat će otprilike ovako:

Izrada Telegram bota u Yandex.Cloud

Kreiranje bota

Želio bih da ovaj tutorijal bude koristan svima, uklj. i početnici "graditelji botova". Stoga ću u ovom odjeljku detaljno opisati kako stvarati općenito u telegram'e bots. Za one kojima ove informacije nisu potrebne, prijeđite na sljedeće dijelove.

Otvorite aplikaciju Telegaram, zovemo otac svih botova (imaju sve kao ljudi) - @BotFather - i za početak ćemo mu dati / help komandu da osvježi naše sjećanje na ono što možemo učiniti. Sada smo zainteresovani za tim / newbot.

Izrada Telegram bota u Yandex.Cloud

Pošto je ovdje opisani bot već kreiran, u svrhu demonstracije napravit ću još jednog bota na kratko (onda ću ga izbrisati). Nazvat ću ga DemoHabrBot. imena (korisničko ime) svi telegram botovi moraju završiti riječju Bot, na primjer: MyCoolBot ili my_cool_bot Ovo je za botove. Ali prvo, dajte botu ime (ime) je za ljude. Ime može biti na bilo kojem jeziku, sadržavati razmake, ne mora se završavati riječju Bot, i čak ne mora biti jedinstven. U ovom primjeru sam nazvao ovog bota Demo Habr.

Izrada Telegram bota u Yandex.Cloud

Sada odaberite ime za bota (korisničko ime, onaj za botove). Nazovimo to DemoHabrBot. Sve vezano za ime bota (ime) uopće nije povezan s njegovim imenom - korisničko ime (ili važi, ali upravo suprotno). Nakon što smo uspješno kreirali jedinstveno ime bota, moramo kopirati i sačuvati (u najstrožijoj tajnosti!) token prikazan na snimku ekrana sa crvenom strelicom. Uz njegovu pomoć, kasnije ćemo instalirati odlazne telegram'webhook za naše Yandex funkcija.

Izrada Telegram bota u Yandex.Cloud

A sada ćemo dati komandu ocu svih botova: /mybotsi to će nam pokazati listu svih botova koje smo kreirali. Ostavimo svježe pečenog bota za sada na miru Demo Habr (napravljen je da pokaže kako se stvore botovi, ali ćemo ga danas koristiti u druge demonstracijske svrhe) i razmotrite bot Smart Thoughts (@SmartThoughtsBot). Kliknite na dugme sa njegovim imenom na listi botova.

Izrada Telegram bota u Yandex.Cloud

Ovdje možemo postaviti našeg bota. Pritiskanje dugmeta Uredi… preći ćemo na uređivanje jedne ili druge opcije. Na primjer, klikom na dugme Uredi ime možemo promijeniti ime bota, recimo umjesto Smart Thoughts, pisati lude ideje. Botpic - ovo je avatar bota, mora biti barem 150 x 150 px. Opis je kratak opis koji korisnik vidi kada se bot prvi put pokrene, kao odgovor na pitanje: Šta ovaj bot može? Oko - još kraći opis, koji se prenosi linkom na bot (https://t.me/SmartThoughtsBot) ili prilikom pregleda informacija o tome.

Izrada Telegram bota u Yandex.Cloud

Samo treba da podesimo komande. Da biste to uradili, pritisnite dugme Uredi komande. Standardizirati korisničke prakse telegram preporučuje uvijek korištenje dvije naredbe: / start и / pomoć, a ako su botu potrebna podešavanja, dodatna naredba /settings. Naš bot je jednostavan kao lopta, tako da mu još nisu potrebna nikakva podešavanja. Napišemo prve dvije naredbe, koje ćemo zatim obraditi u kodu. Sada, ako korisnik unese kosu crtu (kosa crta : /) u polje za unos, pojavit će se lista naredbi za njihov brzi odabir. Sve je kao na slici: lijevo - postavljamo komande preko bot-father; na desnoj strani, ove komande su već dostupne korisnicima u našem botu.

Izrada Telegram bota u Yandex.Cloud

Yandex funkcija

Sada kada je naš bot kreiran, idemo na Yandex.Cloudda kreiramo funkciju koja će izvršiti naš bot kod. Ako niste radili sa Yandex.Cloud pročitajte materijal Alisa u zemlji Bitrixa, i onda - Yandex funkcije šalju poštu. Gotovo sam siguran da će vam ova dva relativno mala članka biti dovoljna za osnovno razumijevanje teme.

Dakle u konzoli Yandex.Clouds u lijevom navigacijskom meniju odaberite stavku Funkcije oblaka, a zatim pritisnite dugme Kreirajte funkciju. Dajemo mu ime, a za sebe - kratak opis.

Izrada Telegram bota u Yandex.Cloud

Nakon pritiska na dugme stvoriti i nakon nekoliko sekundi, nova funkcija će se pojaviti na listi svih funkcija. Kliknite na njeno ime - ovo će nas odvesti na stranicu pregled naša funkcija. Ovdje morate omogućitiOn) prekidač javna funkcijada ga učini dostupnim sa eksternog (za Yandex.Clouds) svijeta i vrijednost polja Link za poziv и ID - čuvajte u dubokoj tajnosti od svih osim od sebe i Telegrama, tako da razni prevaranti ne mogu da pozovu vašu funkciju.

Izrada Telegram bota u Yandex.Cloud

Sada koristeći levi meni idite na Urednik funkcije. Ostavimo na trenutak naše Smart Thoughts, i kreirajte minimalnu predlošku funkciju za provjeru performansi našeg bota... Međutim, u ovom kontekstu, ova funkcija je naš bot... Ukratko, sada i upravo ovdje ćemo napraviti najjednostavniji bot koji će "ogledati" ( tj. poslati natrag ) korisničke zahtjeve. Ovaj predložak se uvijek može koristiti prilikom kreiranja novih telegram botova kako bi se osigurala komunikacija s njima Telegram'om radi dobro. Kliknite Kreirajte fajl, zovi index.js, i na mreži Editor 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.Cloud

U nastavku navodimo ulazna tačka - index.botgde indeks ovo je naziv fajla (index.js), i Bot - naziv funkcije (module.exports.bot). Sva ostala polja ostavite "kao što jesu", a u gornjem desnom uglu kliknite na dugme Kreiraj verziju. Nakon nekoliko sekundi, ova verzija funkcije će biti kreirana. Ubrzo nakon testiranja webhook, kreirat ćemo novu verziju − Smart Thoughts.

Izrada Telegram bota u Yandex.Cloud

Skladištenje objekata

Sada kada smo postavili Yandex funkcijaidemo dok smo u konzoli Yandex.Clouds, kreirati tzv. kanta (kašika, tj. kanta na ruskom, nikako buket) za pohranjivanje slikovnih datoteka koje će se koristiti u našem botu Smart Thoughts. Odaberite iz lijevog navigacijskog menija Object Storage, pritisnite dugme Create bucket, dajte mu ime, na primjer, img-bucket, i, što je najvažnije, Pristup za čitanje objekata učinite to javnim - inače Telegram neće vidjeti naše slike. Sva ostala polja ostaju nepromijenjena. Pritisnemo dugme Create bucket.

Izrada Telegram bota u Yandex.Cloud

Nakon toga, lista svih bucketa bi mogla izgledati otprilike ovako (ako je ovo vaša jedina kanta):

Izrada Telegram bota u Yandex.Cloud

Sada predlažem da kliknete na naziv kante, a unutar njega kreirate mapu za organiziranje pohrane slika za različite aplikacije. Na primjer, za telegram bot Smart Thoughts kreirao sam folder pod nazivom tg-bot-smart-thoughts (Ništa, razumjet ću ovu šifru). Napravite i jedan.

Izrada Telegram bota u Yandex.Cloud

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

Izrada Telegram bota u Yandex.Cloud

I klikom na naziv fajla - nabavite ga URL za upotrebu u našem botu, i općenito - bilo gdje (ali, nemojte ovo objavljivati URL nepotrebno, budući da saobraćaj iz skladištenje objekata naplaćeno).

Izrada Telegram bota u Yandex.Cloud

Evo, u stvari, to je sve skladištenje objekata. Sada ćete znati šta da radite kada vidite upit za otpremanje datoteka tamo.

Webhook

Sada ćemo instalirati webhook — tj. kada bot primi ažuriranje (na primjer, poruku od korisnika), sa servera telegram u naše Yandex funkcija zahtjev će biti poslanzahtev) sa podacima. Evo niza koji možete jednostavno zalijepiti u adresno polje pretraživača, a zatim osvježiti stranicu (ovo je potrebno uraditi samo jednom): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Samo zamijeni {bot_token} na token koji smo dobili od oca bota prilikom kreiranja našeg bota, i {webhook_url} - dalje URL naš Yandex funkcije. Sačekaj minutu! Ali RossKomCensorship zabranjuje provajderima u Ruskoj Federaciji da uslužuju adresu https://api.telegram.org. Da, tako je. Ali možete smisliti nešto. Uostalom, možete, na primjer, pitati svoju baku o tome u Ukrajini, Izraelu ili Kanadi - tamo nema “ruske cenzure” i samo Bog zna kako ljudi žive bez toga. Kao rezultat, zahtjev-odgovor prilikom instaliranja webhooka trebao bi izgledati ovako:

Izrada Telegram bota u Yandex.Cloud

Testiranje. Trebalo bi da se ogleda.

Izrada Telegram bota u Yandex.Cloud

Istina je. Naše čestitke - sada Yandex funkcija postao telegram-bot!

Smart Thoughts

A sada radimo Pametne misli. Kod je otvoren i leži GitHub. Prilično je dobro prokomentarisan, a ima samo stotinu redova. Čitajte ga kao libreto operske dive!

Izrada Telegram bota u Yandex.Cloud

Klonirajte projekat i instalirajte zavisnosti:

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

Napravite potrebne promjene u datoteci index.js (opciono; ne možete ništa promijeniti). Stvoriti zip-arhiva, sa fajlom index.js i folder node_modules unutra, na primjer, zove smart.zip.

Izrada Telegram bota u Yandex.Cloud

Sada idite u konzolu na našu Yandex funkcije, odaberite karticu ZIP arhiva, pritisnite dugme Odaberite datotekui preuzmite našu arhivu smart.zip. Na kraju, u gornjem desnom uglu kliknite na dugme Kreiraj verziju.

Izrada Telegram bota u Yandex.Cloud

Za nekoliko sekundi, kada se funkcija ažurira, ponovo ćemo testirati našeg bota. Sada više ne „ogledava“, već iznosi pametne misli!

Izrada Telegram bota u Yandex.Cloud

To je sve za danas. Drugi članci slijede. Ako ste zainteresovani da ovo pročitate, pretplatite se na obaveštenja o novim člancima. Možete se pretplatiti ovdje ili telegram-kanal IT Tutorial Zakharili cvrkut @mikezaharov.

reference

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

Donacije

Izrada Telegram bota u Yandex.Cloud

izvor: www.habr.com

Dodajte komentar