Danas ćemo sastaviti od otpadnog materijala 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:
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
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.
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.
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.
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.
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.
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.
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
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.
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.
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:
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.
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.
Nakon ovoga, popis svih spremnika može izgledati otprilike ovako (ako je ovo vaš jedini spremnik):
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.
Sada možete kliknuti na naziv mape, otići u nju i učitati datoteke:
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).
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:
Mi testiramo. Trebao bi se "zrcaliti".
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
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.
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.
Za nekoliko sekundi, kada se funkcija ažurira, ponovno ćemo testirati našeg bota. Sada više ne “ogleda”, već donosi pametne misli!
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
reference
Donaty
Izvor: www.habr.com