Danas ćemo prikupljati od improviziranih materijala 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:
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
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.
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.
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.
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.
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.
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.
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
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.
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.
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:
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.
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.
Nakon toga, lista svih bucketa bi mogla izgledati otprilike ovako (ako je ovo vaša jedina kanta):
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.
Sada možete kliknuti na naziv mape, ući u nju i učitati datoteke:
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).
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:
Testiranje. Trebalo bi da se ogleda.
Istina je. Naše čestitke - sada Yandex funkcija postao telegram-bot!
Smart Thoughts
A sada radimo Pametne misli. Kod je otvoren i leži
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.
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.
Za nekoliko sekundi, kada se funkcija ažurira, ponovo ćemo testirati našeg bota. Sada više ne „ogledava“, već iznosi pametne misli!
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
reference
Donacije
izvor: www.habr.com