Danes bomo iz improviziranih materialov zbirali v https://api.telegram.org/
. No, ne bomo - ne, ne. Dejansko so v naši torbi t.i. webhooks - z njihovo pomočjo ne postavljamo povpraševanj na določen naslov, ampak samo pošljemo našo zahtevo kot odgovor na katerokoli zahtevo nam. Se pravi, kot v Odesi - na vprašanje odgovorimo z vprašanjem. Zato Telegram API ne bo prikazan v naši kodi.
Izjava o omejitvi odgovornostiImena vseh državnih organizacij, omenjenih v tem članku, so izmišljena in morebitna sovpadanja z imeni resničnih organizacij so naključna.
Naredili bomo torej bota, ki nam bo zalagal pametne misli. Točno tako kot na sliki:
Lahko ga preizkusite v akciji - tukaj je ime: @SmartThoughtsBot. Bodite pozorni na gumb "Alicina spretnost"? To je zato, ker je bot nekakšen "sopotnik" istoimenskega Alicina spretnost, tj. opravlja enake funkcije kot Alicina spretnost in morda da lahko mirno sobivata in oglašata drug drugega. O tem, kako ustvariti Spretnost pametnega razmišljanja opisano v članku
Ustvarjanje botov
Rad bi, da bi bila ta vadnica uporabna za vse, vklj. in začetniki "graditelji botov". Zato bom v tem razdelku podrobneje opisal, kako ustvariti na splošno v Telegramso boti. Za tiste, ki teh informacij ne potrebujete, nadaljujte z naslednjimi razdelki.
Odprite aplikacijo Telegaram, ki ga imenujemo oče vseh botov (vse imajo kot ljudje) - @BotOče - in za začetek mu bomo dali ukaz / help, da si osvežimo spomin na to, kaj lahko naredimo. Zdaj nas zanima ekipa / newbot.
Ker je tukaj opisani bot že ustvarjen, bom v demonstracijske namene za kratek čas ustvaril še enega (potem ga bom izbrisal). ga bom poklical DemoHabrBot. Imena (uporabniško ime) vsi telegram roboti se morajo končati z besedo bot, na primer: MyCoolBot ali moj_kul_bot To je za bote. Toda najprej dajte botu ime (Ime) je za ljudi. Ime je lahko v katerem koli jeziku, vsebuje presledke, ni nujno, da se konča z besedo bot, in sploh ni nujno, da je edinstven. V tem primeru sem poklical tega bota Demo Habr.
Zdaj izberite ime za bota (uporabniško ime, tisti za bote). Pokličimo ga DemoHabrBot. Vse v zvezi z imenom bota (Ime) sploh ni povezano z njegovim imenom - uporabniško ime (ali velja, vendar ravno nasprotno). Po uspešnem ustvarjanju unikatnega imena bota moramo kopirati in shraniti (strogo zaupno!) žeton, prikazan na posnetku zaslona z rdečo puščico. Z njegovo pomočjo bomo kasneje namestili odhodno Telegram'webhook za naše Funkcija Yandex.
In zdaj bomo dali ukaz očetu vseh botov: /mybotsin prikazal nam bo seznam vseh botov, ki smo jih ustvarili. Pustimo za zdaj novopečenega bota pri miru Demo Habr (ustvarjen je bil, da pokaže, kako ustvariti bote, vendar ga bomo danes uporabili za druge predstavitvene namene) in razmislite o botu Pametne misli (@SmartThoughtsBot). Na seznamu botov kliknite gumb z njegovim imenom.
Tukaj lahko nastavimo našega bota. Pritisk na gumb Uredi… prešli bomo na urejanje ene ali druge možnosti. Na primer s klikom na gumb Uredi ime lahko spremenimo ime bota, recimo namesto Pametne misli, piši nore ideje. Botpic - to je avatar bota, mora biti vsaj 150 x 150 px. Opis je kratek opis, ki ga uporabnik vidi ob prvem zagonu bota kot odgovor na vprašanje: Kaj lahko naredi ta bot? O meni - še krajši opis, ki se posreduje s povezavo do bota (https://t.me/SmartThoughtsBot
) ali pri ogledu informacij o tem.
Nastaviti moramo samo ukaze. Če želite to narediti, pritisnite gumb Uredi ukaze. Za standardizacijo uporabniških praks Telegram priporoča vedno uporabo dveh ukazov: / start и / pomoč, in če bot potrebuje nastavitve - dodatni ukaz /settings. Naš bot je preprost kot žoga, zato še ne potrebuje nobenih nastavitev. Napišemo prva dva ukaza, ki ju bomo nato obdelali v kodi. Zdaj, če uporabnik v polje za vnos vnese poševnico (poševnica: /), se prikaže seznam ukazov za njihovo hitro izbiro. Vse je kot na sliki: na levi - nastavljamo ukaze prek očeta bota; na desni so ti ukazi že na voljo uporabnikom v našem botu.
Funkcija Yandex
Zdaj, ko je naš bot ustvarjen, pojdimo na Yandex.Cloudustvariti funkcijo, ki bo izvajala kodo našega bota. Če še niste delali z Yandex.Cloud preberi gradivo
Torej v konzoli Yandex.Clouds v levem navigacijskem meniju izberite element Funkcije v oblaku, in nato pritisnite gumb Ustvarite funkcijo. Damo mu ime, zase pa - kratek opis.
Po pritisku na gumb ustvariti in po nekaj sekundah se bo nova funkcija pojavila na seznamu vseh funkcij. Kliknite na njeno ime - to nas bo preusmerilo na stran Pregled naša funkcija. Tukaj morate omogočitiOn) stikalo javna funkcijada je na voljo od zunaj (za Yandex.Clouds) sveta in vrednost polj Povezava do klica и ID - hranite v globoki tajnosti pred vsemi, razen pred seboj in Telegramom, da razni prevaranti ne morejo priklicati vaše funkcije.
Zdaj z uporabo levega menija pojdite na Urednik funkcije. Pustimo za trenutek ob strani naše Pametne misli, in ustvarite minimalno funkcijo predloge za preverjanje delovanja našega bota ... Vendar je v tem kontekstu ta funkcija naš bot ... Skratka, zdaj in prav tukaj bomo naredili najpreprostejši bot, ki bo "zrcalil" ( pošiljanje nazaj ) uporabniških zahtev. To predlogo lahko vedno uporabite pri ustvarjanju novih telegram botov, da zagotovite komunikacijo z Telegram'om dela dobro. Kliknite Ustvari datoteko, pokliči index.js, in na spletu Urejevalnik kode v to datoteko prilepite naslednjo kodo:
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
};
};
V konzoli Yandex.Cloud bi moralo izgledati nekako takole:
Spodaj navajamo Vstopna točka - index.botČe Indeks to je ime datoteke (index.js), in bot - ime funkcije (module.exports.bot). Vsa ostala polja pustite »kot so« in v zgornjem desnem kotu kliknite gumb Ustvari različico. Po nekaj sekundah bo ta različica funkcije ustvarjena. Kmalu po testiranju webhook, bomo ustvarili novo različico − Pametne misli.
Shranjevanje predmetov
Zdaj, ko smo nastavili Funkcija Yandexpojdimo, ko smo v konzoli Yandex.Clouds, ustvariti t.i. vedro (vedro, tj. vedro v ruščini, nikakor ne šopek) za shranjevanje slikovnih datotek, ki bodo uporabljene v našem botu Pametne misli. Izberite v levem navigacijskem meniju Shranjevanje objektov, pritisni gumb Ustvari vedro, dajte mu ime, npr. img-vedro, in kar je najpomembneje, Dostop za branje do predmetov objavite - sicer Telegram ne bo videl naših slik. Vsa ostala polja ostanejo nespremenjena. Pritisnemo gumb Ustvari vedro.
Po tem bi lahko seznam vseh veder izgledal nekako takole (če je to vaše edino vedro):
Zdaj predlagam, da kliknete ime vedra in v njem ustvarite mapo, da organizirate shranjevanje slik za različne aplikacije. Na primer za telegram bot Pametne misli ustvaril sem mapo z imenom tg-bot-pametne-misli (Nič, razumel bom to šifro). Ustvarite ga tudi vi.
Zdaj lahko kliknete ime mape, greste vanjo in naložite datoteke:
In klik na ime datoteke - dobite jo URL za uporabo v našem botu in na splošno - kjer koli (vendar tega ne objavite URL po nepotrebnem, saj promet iz shranjevanje predmetov napolnjen).
Tukaj je pravzaprav to vse shranjevanje predmetov. Zdaj boste vedeli, kaj storiti, ko tam vidite poziv za nalaganje datotek.
Webhook
Zdaj bomo namestili webhook — tj. ko bot od strežnika prejme posodobitev (na primer sporočilo od uporabnika). Telegram v naše Funkcija Yandex zahteva bo poslanazahteva) s podatki. Tukaj je niz, ki ga lahko preprosto prilepite v naslovno polje brskalnika in nato osvežite stran (to je treba storiti samo enkrat): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Samo zamenjaj {bot_token} na žeton, ki smo ga prejeli od očetovega bota pri ustvarjanju našega bota, in {webhook_url} - naprej URL naše Funkcije Yandex. Počakaj minuto! Ampak Cenzura RossKom ponudnikom v Ruski federaciji prepoveduje vročitev naslova https://api.telegram.org
. Da, tako je. Lahko pa si nekaj izmislite. Navsezadnje lahko na primer o tem vprašate svojo babico v Ukrajini, Izraelu ali Kanadi - tam ni "ruske cenzure" in samo Bog ve, kako ljudje živijo brez tega. Posledično bi morala biti zahteva-odgovor pri namestitvi webhooka videti takole:
Testiranje. Moral bi biti zrcaljen.
To je resnica. Naše čestitke - zdaj Funkcija Yandex je postala Telegram-bot!
Pametne misli
In zdaj delamo Pametne misli. Koda je odprta in leži naprej
Klonirajte projekt in namestite odvisnosti:
git clone https://github.com/stmike/tg-bot-smart-thoughts.git
cd tg-bot-smart-thoughts
npm i
Naredite potrebne spremembe v datoteki index.js (neobvezno; ničesar ne morete spremeniti). Ustvari Zadrga-arhiv, z datoteko index.js in mapo node_module znotraj, na primer, imenovan smart.zip.
Zdaj pojdite v konzolo do našega Funkcije Yandex, izberite zavihek ZIP arhiv, pritisni gumb Izberite datotekoin prenesite naš arhiv smart.zip. Na koncu v zgornjem desnem kotu kliknite gumb Ustvari različico.
Čez nekaj sekund, ko bo funkcija posodobljena, bomo našega bota ponovno preizkusili. Sedaj ne »zrcali« več, ampak podaja pametne misli!
To je vse za danes. Sledijo drugi članki. Če vas to zanima, se naročite na obvestila o novih člankih. Naročite se lahko tukaj oz Telegram-kanal
reference
Donacije
Vir: www.habr.com