Izdelava Telegram bota v Yandex.Cloud

Izdelava Telegram bota v Yandex.Cloud

Danes bomo iz improviziranih materialov zbirali v Yandex.Cloud Telegram bot z uporabo Funkcije v oblaku Yandex (Ali Funkcije Yandex za kratkost) in Shramba predmetov Yandex (Ali Shranjevanje predmetov - zaradi jasnosti). Koda bo vklopljena Node.js. Vendar obstaja ena pikantna okoliščina - neka organizacija, imenovana npr. Cenzura RossKom (cenzura je prepovedana v 29. členu Ustave Ruske federacije), internetnim ponudnikom v Rusiji ne dovoljuje prenosa zahtev na Telegram API po naslovu: 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:

Izdelava Telegram bota v Yandex.Cloud

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 Alice pridobi spretnost. Zdaj (po nekaj spremembah po objavi zgornjega članka) na pametnem telefonu to spretnost bo videti nekako takole:

Izdelava Telegram bota v Yandex.Cloud

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.

Izdelava Telegram bota v Yandex.Cloud

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.

Izdelava Telegram bota v Yandex.Cloud

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.

Izdelava Telegram bota v Yandex.Cloud

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.

Izdelava Telegram bota v Yandex.Cloud

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.

Izdelava Telegram bota v Yandex.Cloud

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.

Izdelava Telegram bota v Yandex.Cloud

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 Alice v deželi Bitrix, in potem - Funkcije Yandex pošiljajo pošto. Skoraj prepričan sem, da bosta ta dva relativno majhna članka dovolj za osnovno razumevanje teme.

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.

Izdelava Telegram bota v Yandex.Cloud

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.

Izdelava Telegram bota v Yandex.Cloud

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:

Izdelava Telegram bota v Yandex.Cloud

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.

Izdelava Telegram bota v Yandex.Cloud

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.

Izdelava Telegram bota v Yandex.Cloud

Po tem bi lahko seznam vseh veder izgledal nekako takole (če je to vaše edino vedro):

Izdelava Telegram bota v Yandex.Cloud

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.

Izdelava Telegram bota v Yandex.Cloud

Zdaj lahko kliknete ime mape, greste vanjo in naložite datoteke:

Izdelava Telegram bota v Yandex.Cloud

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).

Izdelava Telegram bota v Yandex.Cloud

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:

Izdelava Telegram bota v Yandex.Cloud

Testiranje. Moral bi biti zrcaljen.

Izdelava Telegram bota v Yandex.Cloud

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 GitHub. Je precej dobro komentiran, dolg je le sto vrstic. Preberite ga kot libreto operne dive!

Izdelava Telegram bota v Yandex.Cloud

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.

Izdelava Telegram bota v Yandex.Cloud

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.

Izdelava Telegram bota v Yandex.Cloud

Čez nekaj sekund, ko bo funkcija posodobljena, bomo našega bota ponovno preizkusili. Sedaj ne »zrcali« več, ampak podaja pametne misli!

Izdelava Telegram bota v Yandex.Cloud

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 IT Tutorial ZakharAli Twitter @mikezaharov.

reference

Koda na GitHubu
Funkcije v oblaku Yandex
Shramba predmetov Yandex
Boti: uvod za razvijalce
API za Telegram Bot

Donacije

Izdelava Telegram bota v Yandex.Cloud

Vir: www.habr.com

Dodaj komentar