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 Sisenemispunkt — index.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