Loome Telegrami boti Yandex.Cloudis

Loome Telegrami boti Yandex.Cloudis

Täna me kogume kokku Yandexi pilve toodetud materjalidest Yandex.Облачке Telegram-boti kasutades Yandex Cloud Functions (või Yandexi funktsioonid — lühidalt) ja Yandex Object Storage (või Objekti hoidla — selguse huvides). Kood tuleb Node.js. Kuid on üks maitsev tõsiasi — nimelt organisatsioon, mida võiks nimetada Roskomcenzur (tsensuur on keelatud artikliga 29 Venemaa põhiseadusest), ei luba Venemaa interneti pakkujatel edastada päringuid Telegram API-le aadressil: https://api.telegram.org/. Noh, ja me ei tee seda — pole probleemi. Lõppude lõpuks on meie kantud kotti nn. veebihook'id — nende abil me ei tee päringuid määratud aadressile, vaid saadame oma päringu vastusena igale päringule, mis meile saadetakse. See tähendab, et nagu Odessas — vastame küsimusele küsimusega. Seega Telegram API-le meie koodis ei kajastu.

MärkusSelles artiklis mainitud riigiorganisatsioonide nimed on välja mõeldud ning igasugused kokkulangevused reaalselt eksisteerivate organisatsioonide nimedega on juhuslikud.

Nii et me teeme boti, mis varustab meid nutikate mõtetega. Täpselt sellise, nagu pildil:

Loome Telegrami boti Yandex.Cloudis

Saate seda praktikas proovida — siin on nimi: @SmartThoughtsBot. Kas tähelepanite nuppu „Alise oskus”? Это потому, что бот является своеобразным «компаньоном» для одноименного Alise oskuse, st see täidab samu funktsioone nagu Alise oskus ja võib-olla saavad nad rahumeelselt kooseksisteerida ja üksteist reklaamida. Kuidas luua oskust „Nutikaid Mõtteid” on kirjeldatud artiklis Alise oskuse omandamine. Praegu (pärast mõningaid muudatusi juba pärast ülalmainitud artikli avaldamist) tundub see oskuse nähtavasti telefonis umbes selline:

Loome Telegrami boti Yandex.Cloudis

Boti loomine

Soovin, et see juhend oleks kasulik kõigile, sealhulgas ka algajatele 'boti ehitajatele'. Seetõttu kirjeldan selles osas üsna põhjalikult, kuidas üldiselt luua Telegrame bote. Neile, kellele see teave ei ole vajalik — liikuge järgmistele osadele.

Avame rakenduse Telegaram, kutsume kokku kõigi botide isa (nendel on kõik nagu inimestel) — @BotFather — ja esmalt anname talle käsu /help, et värskendada oma mälu, mida me teha saame. Praegu huvitab meid käsk /newbot.

Loome Telegrami boti Yandex.Cloudis

Kuna siin kirjeldatud bott on juba loodud, loome demonstreerimiseks ajutiselt teise boti (hiljem kustutan selle). Nimeks annan DemoHabrBot. Nimed (username) kõigil telegrammi botidel peavad lõppema sõnaga bot, näiteks: MyCoolBot või my_cool_bot — see on botidele. Aga kõigepealt anname botile nime (nimi) — ja see on inimestele. Nimi võib olla igas keeles, sisaldada tühikuid ja ei pea lõppema sõnaga bot, ega pea olema isegi ainulaadne. Antud näites nimeks, mille andsin sellele botile, on Demo Habr.

Loome Telegrami boti Yandex.Cloudis

Nüüd valime botile nime (username, mis on botide jaoks). Nimetame seda DemoHabrBot. Kõik, mis seondub botile antud nimega (nimi) ei seostu sugugi selle nimega — username (või seondub, kuid vastupidiselt). Pärast unikaalse botinime edukat loomist, peame kopeerima ja salvestama (äärmiselt salajas!) tokeni, mis on ekraanipildil punase noolega näidatud. Selle abil seadistame hiljem väljamineva Telegram‘a veebihook’i meie Yandex-funktsioon.

Loome Telegrami boti Yandex.Cloudis

Nüüd anname käsu kõikide botide isale: /mybots, ja ta näitab meile nimekirja kõigist meie loodud botidest. Jätame praegu kõrvale värskelt loodud boti Demo Habr (see loodi, et näidata, kuidas botte luua, kuid kasutame seda täna veel teiste demonstreerimise eesmärkide jaoks), ja vaatame boti Nutikaid Mõtteid (@SmartThoughtsBot). Nõustume boti nimega loetelu nupul.

Loome Telegrami boti Yandex.Cloudis

Siin saame oma boti seadistada. Vajutades nuppu Edit… of two option to edit. Näiteks, vajutades nuppu Edit Name saame muuta boti nime, näiteks asemel Nutikaid Mõtteid, kirjutada Väärad Ideed. Botpic — see on boti avatar, peab olema vähemalt 150 x 150 px. Kirjeldus — see on lühike kirjeldus, mida kasutaja näeb boti esmakordsel käivitamisel, vastuseks küsimusele: Mida see bot teha saab? About — veelgi lühem kirjeldus, mis edastatakse koos lingiga botile (https://t.me/SmartThoughtsBot) või botist teabe vaatamisel.

Loome Telegrami boti Yandex.Cloudis

Meil on jäänud ainult käsud seadistada. Selleks vajutame nuppu Edit Commands. Kasutajate praktika standardiseerimiseks Telegram soovitab alati kasutada kahte käsku: /start ja /help, ja kui bot vajab seadistusi — täiendavat käsku /settings. Meie bot on lihtne nagu pall, seega seadistusi tal ei vajata. Kirjutame kaks esimest käsku, mida me seejärel koodis töötleme. Nüüd, kui kasutaja sisestab sisestusväljale kaldkriipsu (kaldkriips: /), ilmub käsud loend kiireks valimiseks. Kõik nagu pildil: vasakul — seadistame käsud isa-boti kaudu; paremal need käsud on juba kasutajatele meie boti sees saadaval.

Loome Telegrami boti Yandex.Cloudis

Yandex-funktsioon

Nüüd, kui meie bot on loodud, liigume edasi Yandex.Cloud, et luua funktsioon, mis täidab meie boti koodi. Kui te pole veel töötanud Yandex.Cloudiga , lugege materjali Alice Bitrixi maal, seejärel — Yandexi funktsioonid saadavad e-kirju. Olen peaaegu kindel, et need kaks suhteliselt väikest artiklit on teie põhiteadmisteks täiesti piisavad.

Nii et, konsoolis Yandex.Cloudis valige vasakpoolses navigeerimismenüüs valik Cloud Functions, ja seejärel vajutage nuppu Loo funktsioon. Andke sellele nimi ja lühike kirjeldus enda jaoks.

Loome Telegrami boti Yandex.Cloudis

Pärast nuppu vajutamist Luua Ja paar sekundit hiljem ilmub uus funktsioon kõigi funktsioonide nimekirja. Klõpsake sellel nimel — see viib meid meie Ülevaade funktsiooni lehele. Siin tuleb sisse lülitada (Peal) lüliti Avalik funktsioon, et see oleks kättesaadav välisest ( Yandex.Cloudis) maailmast, ja väljaannete väärtused Kutsumise link ja ID — hoidke sügavas saladuses kõigi eest peale enda ja Telegrami, et teie funktsioonile ei saaks ligi mitmesugused petised.

Loome Telegrami boti Yandex.Cloudis

Nüüd liikume vasaku menüü kaudu Toimetaja funktsioonidesse. Jätame hetkel kõrvale meie Nutikaid Mõtteid, ja loome minimaalne funktsioon-mall meie boti töökontrollimiseks... Igal juhul on see funktsioon just meie bot... Ühesõnaga, nüüd ja just siin teeme me kõige lihtsama boti, mis "peegeldab" (st saadab tagasi) kasutajate päringud. Seda mustrit võib alati kasutada uute Telegrammibottide loomisel, et veenduda, et side Telegramigatöötab normaalselt. Vajutame Loo fail, anname sellele nimeks index.js, ja online Koodiredaktoris kandke selline kood sellele failile:

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
  };
};

Konsoolis Yandex.Cloudis peaks see välja nägema umbes nii:

Loome Telegrami boti Yandex.Cloudis

Seejärel määrake pisut allpool Sisenemispunktindex.bot, kus index see on faili nimi (index.js), ja bot — funktsiooni nimi (module.exports.bot). Kõik muud väljad jätame "selliseks nagu on", ja paremas ülanurgas vajutame nuppu Loo versioon. Mõne sekundi pärast luuakse see funktsiooni versioon. Varsti, pärast veebihooki testimist , loome uue versiooni —Nüüd, kui meil on loodud Nutikaid Mõtteid.

Loome Telegrami boti Yandex.Cloudis

Objekti hoidla

, loome, kuni oleme konsoolis Yandex-funktsioon, nn baketi ( Yandex.Cloudis}bucket'i, st. baketi eesti keeles, kindlasti mitte kimp) piltide salvestamiseks, mida meie bot kasutama hakkab Nutikaid Mõtteid. Vasakus navigeerimismenüüs valime punkti Object Storage, vajutame nuppu Loo baket, mõtleme sellele nime, näiteks, img-baket, ja mis kõige tähtsam, Objektide lugemisõigus teeme avalikuks — vastasel juhul Telegram ei näe meie pilte. Kõik ülejäänud väljad jätame muutmata. Vajutame nuppu Loo baket.

Loome Telegrami boti Yandex.Cloudis

Pärast seda võib kõigi bakettide nimekiri välja näha umbes nii (kui see on teie ainus baket):

Loome Telegrami boti Yandex.Cloudis

Praegu soovitan vajutada baketi nimele ja luua selles kaust, et korraldada oma pilte erinevatest rakendustest. Näiteks, meie Telegram-boti jaoks Nutikaid Mõtteid loom paku nimega tg-bot-smart-thoughts (pole midagi, ma saan sellest koodist aru). Looge teie ka midagi.

Loome Telegrami boti Yandex.Cloudis

Nüüd võib vajutada kausta nimele, siseneda sellesse ja faile üles laadida:

Loome Telegrami boti Yandex.Cloudis

Ja vajutades faili nimele — saada selle URL kasutamiseks meie bot'is ja üldiselt — kus iganes (kuid, ärge avaldage seda URL ilma vajaduseta, kuna Objektihoidla on tasuline).

Loome Telegrami boti Yandex.Cloudis

Nii, tegelikult ongi kõik Objektihoidlast. Nüüd teate, mida teha, kui näete kutset faile sinna üles laadida.

Webook

Nüüd seadistame webhooki — st. kui bot saab uuenduse (näiteks, sõnum kasutajalt), siis serverist Telegram meie Yandex-funktsioon saadetakse päring (request) andmetega. Siin on rida, mille saab lihtsalt brauseri aadressiväljale kleepida ja seejärel lehte värskendada (seda tuleb teha ainult üks kord): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Lihtsalt asendame {bot_token} meie poolt bot-isa käest saadud tokeniga, kui me oma boti lõime, ja {webhook_url} — meie URL . Oodake! Kuid Yandexi funktsioonidkeelab teenusepakkujatel Venemaal aadressi teenindada Roskomcenzur . Jah, tõsi. Kuid mõelge midagi välja. Võib-olla paluda oma vanaema Ukrainas, Iisraelis või Kanadas — seal ei ole mingeid 'roskomcensuuri', ja üks jumal teab, kuidas inimesed elavad ilma selleta. Lõpuks välja peab päring-vastus webhook'i seadistamisel välja nägema nii: https://api.telegram.orgTestime. Peaks 'peegeldama'.

Loome Telegrami boti Yandex.Cloudis

Ja nii on. Meie õnnitlused — nüüd

Loome Telegrami boti Yandex.Cloudis

-botiga! Yandex-funktsioon on saanud TelegramNüüd teeme Nutika Mõtte. Kood on avatud ja asub

Nutikaid Mõtteid

. See on üsna hästi kommenteeritud ja selles on vaid sada rida. Lugege seda nagu ooperi diiva libretot! GitHubKloonige projekt ja installige sõltuvused:

Loome Telegrami boti Yandex.Cloudis

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

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

Tehke vajalikud muudatused faili index.js (valikuline; ei pea midagi muutma). Looge zip-arhiv, faili index.js ja kausta node_modules sees, näiteks nimega smart.zip.

Loome Telegrami boti Yandex.Cloudis

Nüüd liikuge meie Yandexi funktsioonid, valige vahekaart ZIP-arhiv, klikkige nupule Vali fail, ja laadige meie arhiv üles smart.zip. Lõpuks, paremas ülanurgas klikkige nupule Loo versioon.

Loome Telegrami boti Yandex.Cloudis

Mõne sekundi pärast, kui funktsioon uuendatakse, testime meie boti uuesti. Nüüd ei 'peegelda' ta enam, vaid edastab nutikaid mõtteid!

Loome Telegrami boti Yandex.Cloudis

Kuni selle ajani kõik. Teised artiklid järgivad. Kui olete huvitatud sarnastest lugudest, tellige uute artiklite teavitused. Saate tellida siit või Telegram-kanal IT Õpetus Zahari, või Twitteris @mikezaharov.

Viidatud lingid

Kood GitHubis
Yandex Cloud Functions
Yandex Object Storage
Bots: An introduction for developers
Telegram Bot API

Annetused

Loome Telegrami boti Yandex.Cloudis

Allikas: habr.com

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster