
TĂ€na me kogume kokku Yandexi pilve toodetud materjalidest Telegram-boti kasutades (vĂ”i Yandexi funktsioonid â lĂŒhidalt) ja (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:
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 . Praegu (pĂ€rast mĂ”ningaid muudatusi juba pĂ€rast ĂŒlalmainitud artikli avaldamist) tundub see oskuse nĂ€htavasti telefonis umbes selline:
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.

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.

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.

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.

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.

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.

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 , seejĂ€rel â . 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.

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.

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:

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.

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.

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

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.

NĂŒĂŒd vĂ”ib vajutada kausta nimele, siseneda sellesse ja faile ĂŒles laadida:

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

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

Ja nii on. Meie Ă”nnitlused â nĂŒĂŒd

-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! Kloonige projekt ja installige sĂ”ltuvused:

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.

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.

MĂ”ne sekundi pĂ€rast, kui funktsioon uuendatakse, testime meie boti uuesti. NĂŒĂŒd ei 'peegelda' ta enam, vaid edastab nutikaid mĂ”tteid!

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 , vÔi Twitteris .
Viidatud lingid
Annetused
Allikas: habr.com
