{"id":41315,"date":"2020-02-10T12:09:34","date_gmt":"2020-02-10T09:09:34","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/stroim-telegram-bot-v-yandeks-oblake"},"modified":"2020-02-10T12:09:34","modified_gmt":"2020-02-10T09:09:34","slug":"stroim-telegram-bot-v-yandeks-oblake","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/stroim-telegram-bot-v-yandeks-oblake","title":{"rendered":"Loome Telegrami boti Yandex.Cloudis","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Loome Telegrami boti Yandex.Cloudis\" src=\"\/wp-content\/uploads\/2020\/02\/4a758744e4fc6bc797d270fa1bc42ef3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nT\u00e4na me kogume kokku Yandexi pilve toodetud materjalidest <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.ru\/\"><i>Yandex.\u041e\u0431\u043b\u0430\u0447\u043a\u0435<\/i><\/a><\/noindex> <i>Telegram-boti<\/i> kasutades <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.ru\/services\/functions\"><i>Yandex Cloud Functions<\/i><\/a><\/noindex> (v\u00f5i <i>Yandexi funktsioonid<\/i> \u2014 l\u00fchidalt) ja <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.ru\/services\/storage\"><i>Yandex Object Storage<\/i><\/a><\/noindex> (v\u00f5i <i>Objekti hoidla<\/i> \u2014 selguse huvides). Kood tuleb <i>Node.js<\/i>. Kuid on \u00fcks maitsev t\u00f5siasi \u2014 nimelt organisatsioon, mida v\u00f5iks nimetada <i>Roskomcenzur<\/i> (tsensuur on keelatud artikliga 29 Venemaa p\u00f5hiseadusest), ei luba Venemaa interneti pakkujatel edastada p\u00e4ringuid <i>Telegram API-le<\/i> aadressil: <code>https:\/\/api.telegram.org\/<\/code>. Noh, ja me ei tee seda \u2014 pole probleemi. L\u00f5ppude l\u00f5puks on meie kantud kotti nn. <i>veebihook'id<\/i> \u2014 nende abil me ei tee p\u00e4ringuid m\u00e4\u00e4ratud aadressile, vaid saadame oma p\u00e4ringu vastusena igale p\u00e4ringule, mis meile saadetakse. See t\u00e4hendab, et nagu Odessas \u2014 vastame k\u00fcsimusele k\u00fcsimusega. Seega <i>Telegram API-le<\/i> meie koodis ei kajastu.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<b class=\"spoiler_title\">M\u00e4rkus<\/b><i>Selles artiklis mainitud riigiorganisatsioonide nimed on v\u00e4lja m\u00f5eldud ning igasugused kokkulangevused reaalselt eksisteerivate organisatsioonide nimedega on juhuslikud. <\/i> <\/p>\n<p>Nii et me teeme boti, mis varustab meid nutikate m\u00f5tetega. T\u00e4pselt sellise, nagu pildil:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/SmartThoughtsBot\"><img decoding=\"async\" alt=\"Loome Telegrami boti Yandex.Cloudis\" src=\"\/wp-content\/uploads\/2020\/02\/6b7aca248999621a20f8a0ec29e75c75.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Saate seda praktikas proovida \u2014 siin on nimi: <b><i>@SmartThoughtsBot<\/i><\/b>. Kas t\u00e4helepanite nuppu <i>\u201eAlise oskus\u201d<\/i>? \u042d\u0442\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0431\u043e\u0442 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0432\u043e\u0435\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u043c \u00ab\u043a\u043e\u043c\u043f\u0430\u043d\u044c\u043e\u043d\u043e\u043c\u00bb \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0438\u043c\u0435\u043d\u043d\u043e\u0433\u043e <i>Alise oskuse<\/i>, st see t\u00e4idab samu funktsioone nagu <i>Alise oskus<\/i> ja v\u00f5ib-olla saavad nad rahumeelselt kooseksisteerida ja \u00fcksteist reklaamida. Kuidas luua <i>oskust \u201eNutikaid M\u00f5tteid\u201d<\/i> on kirjeldatud artiklis <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/465275\/\"><b><i>Alise oskuse omandamine<\/i><\/b><\/a><\/noindex>. Praegu (p\u00e4rast m\u00f5ningaid muudatusi juba p\u00e4rast \u00fclalmainitud artikli avaldamist) tundub see <i>oskuse<\/i> n\u00e4htavasti telefonis umbes selline:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/alice.ya.ru\/s\/f785af07-4578-4a6b-95ae-485bd803ae20\"><img decoding=\"async\" alt=\"Loome Telegrami boti Yandex.Cloudis\" src=\"\/wp-content\/uploads\/2020\/02\/e92c340f8d947ba9252e0fcab0511ce6.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<h2>Boti loomine<\/h2>\n<p>\nSoovin, et see juhend oleks kasulik k\u00f5igile, sealhulgas ka algajatele 'boti ehitajatele'. Seet\u00f5ttu kirjeldan selles osas \u00fcsna p\u00f5hjalikult, kuidas \u00fcldiselt luua <i>Telegram<\/i>ebottide. Neilide, kellele see teave ei ole vajalik \u2014 liikuge j\u00e4rgmistele jaotistele. <\/p>\n<p>Avame rakenduse <i>Telegaram<\/i>, kutsume kokku k\u00f5igi botide isa (nendel on k\u00f5ik nagu inimestel) \u2014 <b><i>@BotFather<\/i><\/b> \u2014 ja esmalt anname talle k\u00e4su \/help, et v\u00e4rskendada oma m\u00e4lu, mida me teha saame. Praegu huvitab meid k\u00e4sk <i>\/newbot<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Loome Telegrami boti Yandex.Cloudis\" src=\"\/wp-content\/uploads\/2020\/02\/12a0e84dd712e0c74dee0463f1b44e74.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKuna siin kirjeldatud bott on juba loodud, loome demonstreerimiseks ajutiselt teise boti (hiljem kustutan selle). Nimeks annan <i>DemoHabrBot<\/i>. Nimed (<i>username<\/i>) k\u00f5igil telegrammi botidel peavad l\u00f5ppema s\u00f5naga <i>bot<\/i>, n\u00e4iteks: <i>MyCoolBot<\/i> v\u00f5i <i>my_cool_bot<\/i> \u2014 see on botidele. Aga k\u00f5igepealt anname botile nime (<i>nimi<\/i>) \u2014 ja see on inimestele. Nimi v\u00f5ib olla igas keeles, sisaldada t\u00fchikuid ja ei pea l\u00f5ppema s\u00f5naga <i>bot<\/i>, ega pea olema isegi ainulaadne. Antud n\u00e4ites nimeks, mille andsin sellele botile, on <i>Demo Habr<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Loome Telegrami boti Yandex.Cloudis\" src=\"\/wp-content\/uploads\/2020\/02\/682ecf64724cabcfef96639d6de87521.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00fc\u00fcd valime botile nime (<i>username<\/i>, mis on botide jaoks). Nimetame seda <i>DemoHabrBot<\/i>. K\u00f5ik, mis seondub botile antud nimega (<i>nimi<\/i>) ei seostu sugugi selle nimega \u2014 <i>username<\/i> (v\u00f5i seondub, kuid vastupidiselt). P\u00e4rast unikaalse botinime edukat loomist, peame kopeerima ja salvestama (\u00e4\u00e4rmiselt salajas!) tokeni, mis on ekraanipildil punase noolega n\u00e4idatud. Selle abil seadistame hiljem v\u00e4ljamineva <i>Telegram<\/i>a veebihook meie <i>Yandex-funktsioon<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Loome Telegrami boti Yandex.Cloudis\" src=\"\/wp-content\/uploads\/2020\/02\/78254946c9f763d212a1952bac6c706f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00fc\u00fcd anname k\u00e4su k\u00f5ikide botide isale: <i>\/mybots<\/i>, ja ta n\u00e4itab meile nimekirja k\u00f5igist meie loodud botidest. J\u00e4tame praegu k\u00f5rvale v\u00e4rskelt loodud boti <i>Demo Habr<\/i> (see loodi, et n\u00e4idata, kuidas botte luua, kuid kasutame seda t\u00e4na veel teiste demonstreerimise eesm\u00e4rkide jaoks), ja vaatame boti <i>Nutikaid M\u00f5tteid<\/i> (<i>@SmartThoughtsBot<\/i>). N\u00f5ustume boti nimega loetelu nupul.<\/p>\n<p><img decoding=\"async\" alt=\"Loome Telegrami boti Yandex.Cloudis\" src=\"\/wp-content\/uploads\/2020\/02\/98434725cb0d7441ec5f2552b0b508a8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSiin saame oma boti seadistada. Vajutades nuppu <i>Muuda\u2026<\/i> of two option to edit. N\u00e4iteks, vajutades nuppu <i>Edit Name<\/i> saame muuta boti nime, n\u00e4iteks asemel <i>Nutikaid M\u00f5tteid<\/i>, kirjutada <i>V\u00e4\u00e4rad Ideed<\/i>. <i>Botpic<\/i> \u2014 see on boti avatar, peab olema v\u00e4hemalt <i>150 x 150 px<\/i>. <i>Kirjeldus<\/i> \u2014 see on l\u00fchike kirjeldus, mida kasutaja n\u00e4eb boti esmakordsel k\u00e4ivitamisel, vastuseks k\u00fcsimusele: <i>Mida see bot teha saab?<\/i> <i>About<\/i> \u2014 veelgi l\u00fchem kirjeldus, mis edastatakse koos lingiga botile (<code>https:\/\/t.me\/SmartThoughtsBot<\/code>) v\u00f5i botist teabe vaatamisel.<\/p>\n<p><img decoding=\"async\" alt=\"Loome Telegrami boti Yandex.Cloudis\" src=\"\/wp-content\/uploads\/2020\/02\/f15ba92be1bfea827273f79616bd2a3a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMeil on j\u00e4\u00e4nud ainult k\u00e4sud seadistada. Selleks vajutame nuppu <i>Edit Commands<\/i>. Kasutajate praktika standardiseerimiseks <i>Telegram<\/i> soovitab alati kasutada kahte k\u00e4sku: <i>\/start<\/i> ja <i>\/help<\/i>, ja kui bot vajab seadistusi \u2014 t\u00e4iendavat k\u00e4sku \/settings. Meie bot on lihtne nagu pall, seega seadistusi tal ei vajata. Kirjutame kaks esimest k\u00e4sku, mida me seej\u00e4rel koodis t\u00f6\u00f6tleme. N\u00fc\u00fcd, kui kasutaja sisestab sisestusv\u00e4ljale kaldkriipsu (kaldkriips: \/), ilmub k\u00e4sud loend kiireks valimiseks. K\u00f5ik nagu pildil: vasakul \u2014 seadistame k\u00e4sud isa-boti kaudu; paremal need k\u00e4sud on juba kasutajatele meie boti sees saadaval.<\/p>\n<p><img decoding=\"async\" alt=\"Loome Telegrami boti Yandex.Cloudis\" src=\"\/wp-content\/uploads\/2020\/02\/b536b5fe7b8aad3d68877a7693ea0e6f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Yandex-funktsioon<\/h2>\n<p>\nN\u00fc\u00fcd, kui meie bot on loodud, liigume edasi <i>Yandex.Cloud<\/i>, et luua funktsioon, mis t\u00e4idab meie boti koodi. Kui te pole veel t\u00f6\u00f6tanud <i>Yandex.Cloudiga<\/i> , lugege materjali <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/464739\/\"><b><i>Alice Bitrixi maal<\/i><\/b><\/a><\/noindex>, seej\u00e4rel \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/440374\/\"><b><i>Yandexi funktsioonid saadavad e-kirju<\/i><\/b><\/a><\/noindex>. Olen peaaegu kindel, et need kaks suhteliselt v\u00e4ikest artiklit on teie p\u00f5hiteadmisteks t\u00e4iesti piisavad.<\/p>\n<p>Nii et, konsoolis <i>Yandex.Cloudis<\/i> valige vasakpoolses navigeerimismen\u00fc\u00fcs valik <i>Cloud Functions<\/i>, ja seej\u00e4rel vajutage nuppu <i>Loo funktsioon<\/i>. Andke sellele nimi ja l\u00fchike kirjeldus enda jaoks.<\/p>\n<p><img decoding=\"async\" alt=\"Loome Telegrami boti Yandex.Cloudis\" src=\"\/wp-content\/uploads\/2020\/02\/67f313c60481c5ef84af8a28b4934621.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP\u00e4rast nuppu vajutamist <i>Luua<\/i> Ja paar sekundit hiljem ilmub uus funktsioon k\u00f5igi funktsioonide nimekirja. Kl\u00f5psake sellel nimel \u2014 see viib meid meie <i>\u00dclevaade<\/i> funktsiooni lehele. Siin tuleb sisse l\u00fclitada (<i>Peal<\/i>) l\u00fcliti <i>Avalik funktsioon<\/i>, et see oleks k\u00e4ttesaadav v\u00e4lisest ( <i>Yandex.Cloudis<\/i>) maailmast, ja v\u00e4ljaannete v\u00e4\u00e4rtused <i>Kutsumise link<\/i> ja <i>ID<\/i> \u2014 hoia seda s\u00fcgavas saladuses k\u00f5igi peale, v\u00e4lja arvatud iseenda ja Telegrami, et teie funktsiooni ei saaks kutsuda erinevad kelmid.<\/p>\n<p><img decoding=\"async\" alt=\"Loome Telegrami boti Yandex.Cloudis\" src=\"\/wp-content\/uploads\/2020\/02\/3ba45d357965d567ba33ab0ee65d2eb4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00fc\u00fcd liikume vasaku men\u00fc\u00fc kaudu <i>Toimetaja<\/i> funktsioonidesse. J\u00e4tame hetkel k\u00f5rvale meie <i>Nutikaid M\u00f5tteid<\/i>, ja loome minimaalne funktsioon-mall meie boti t\u00f6\u00f6kontrollimiseks... Igal juhul on see funktsioon just meie bot... \u00dches\u00f5naga, n\u00fc\u00fcd ja just siin teeme me k\u00f5ige lihtsama boti, mis \"peegeldab\" (st saadab tagasi) kasutajate p\u00e4ringud. Seda mustrit v\u00f5ib alati kasutada uute Telegrammibottide loomisel, et veenduda, et side <i>Telegrami<\/i>t\u00f6\u00f6tab normaalselt. Vajutame <i>Loo fail<\/i>, anname sellele nimeks <i>index.js<\/i>, ja online <i>Koodiredaktoris<\/i> kandke selline kood sellele failile:<\/p>\n<pre><code class=\"javascript\">module.exports.bot = async (event) =&gt; {\n  \n  const body = JSON.parse(event.body);\n\n  const msg = {\n    'method': 'sendMessage',\n    'chat_id': body.message.chat.id,\n    'text': body.message.text\n  };\n\n  return {\n    'statusCode': 200,\n    'headers': {\n      'Content-Type': 'application\/json'\n    },\n    'body': JSON.stringify(msg),\n    'isBase64Encoded': false\n  };\n};\n<\/code><\/pre>\n<p>\nKonsoolis Yandex.Cloudis peaks see v\u00e4lja n\u00e4gema umbes nii:<\/p>\n<p><img decoding=\"async\" alt=\"Loome Telegrami boti Yandex.Cloudis\" src=\"\/wp-content\/uploads\/2020\/02\/f0204be84468c9ae7ec1b9e4ca0dfdd9.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSeej\u00e4rel m\u00e4\u00e4rake pisut allpool <i>Sisenemispunkt<\/i> \u2014 <i>index.bot<\/i>, kus <i>index<\/i> see on faili nimi (<i>index.js<\/i>), ja <i>bot<\/i> \u2014 funktsiooni nimi (<i>module.exports.bot<\/i>). K\u00f5ik muud v\u00e4ljad j\u00e4tame \"selliseks nagu on\", ja paremas \u00fclanurgas vajutame nuppu <i>Loo versioon<\/i>. M\u00f5ne sekundi p\u00e4rast luuakse see funktsiooni versioon. Varsti, p\u00e4rast veebihooki testimist <i>, loome uue versiooni \u2014<\/i>N\u00fc\u00fcd, kui meil on loodud <i>Nutikaid M\u00f5tteid<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Loome Telegrami boti Yandex.Cloudis\" src=\"\/wp-content\/uploads\/2020\/02\/48cd898f83bdc29d124600828bf2143f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Objekti hoidla<\/h2>\n<p>\n, loome, kuni oleme konsoolis <i>Yandex-funktsioon<\/i>, nn baketi ( <i>Yandex.Cloudis<\/i>}<i>bucket'i<\/i>, st. baketi eesti keeles, kindlasti mitte kimp) piltide salvestamiseks, mida meie bot kasutama hakkab <i>Nutikaid M\u00f5tteid<\/i>. Vasakus navigeerimismen\u00fc\u00fcs valime punkti <i>Object Storage<\/i>, vajutame nuppu <i>Loo baket<\/i>, m\u00f5tleme sellele nime, n\u00e4iteks, <i>img-baket<\/i>, ja mis k\u00f5ige t\u00e4htsam, <i>Objektide lugemis\u00f5igus<\/i> teeme avalikuks \u2014 muidu ei n\u00e4e meie pilte Telegramis. K\u00f5ik \u00fclej\u00e4\u00e4nud v\u00e4ljad j\u00e4tame muutmata. Vajutame nuppu <i>Loo baket<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Loome Telegrami boti Yandex.Cloudis\" src=\"\/wp-content\/uploads\/2020\/02\/c890a42f7d043e03300434b2c4a0258b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP\u00e4rast seda v\u00f5ib k\u00f5igi bakettide nimekiri v\u00e4lja n\u00e4ha umbes nii (kui see on teie ainus baket):<\/p>\n<p><img decoding=\"async\" alt=\"Loome Telegrami boti Yandex.Cloudis\" src=\"\/wp-content\/uploads\/2020\/02\/34701231536742a7889b200ff49b08b1.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPraegu soovitan vajutada baketi nimele ja luua selles kaust, et korraldada oma pilte erinevatest rakendustest. N\u00e4iteks, meie Telegram-boti jaoks <i>Nutikaid M\u00f5tteid<\/i> loom paku nimega <i>tg-bot-smart-thoughts<\/i> (pole midagi, ma saan sellest koodist aru). Looge teie ka midagi.<\/p>\n<p><img decoding=\"async\" alt=\"Loome Telegrami boti Yandex.Cloudis\" src=\"\/wp-content\/uploads\/2020\/02\/c5707b5ba54fea5b548d62e097328650.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00fc\u00fcd v\u00f5ib vajutada kausta nimele, siseneda sellesse ja faile \u00fcles laadida:<\/p>\n<p><img decoding=\"async\" alt=\"Loome Telegrami boti Yandex.Cloudis\" src=\"\/wp-content\/uploads\/2020\/02\/ead320e587e1d161e2cd54a94b4ea0d4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJa vajutades faili nimele \u2014 saada selle <i>URL<\/i> kasutamiseks meie bot'is ja \u00fcldiselt \u2014 kus iganes (kuid, \u00e4rge avaldage seda <i>URL<\/i> ilma vajaduseta, kuna <i>Objektihoidla<\/i> on tasuline).<\/p>\n<p><img decoding=\"async\" alt=\"Loome Telegrami boti Yandex.Cloudis\" src=\"\/wp-content\/uploads\/2020\/02\/07a833430b0584161423f363f6685306.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNii, tegelikult ongi k\u00f5ik <i>Objektihoidlast<\/i>. N\u00fc\u00fcd teate, mida teha, kui n\u00e4ete kutset faile sinna \u00fcles laadida.<\/p>\n<h2>Webook<\/h2>\n<p>\nN\u00fc\u00fcd seadistame <i>webhooki<\/i> \u2014 st. kui bot saab uuenduse (n\u00e4iteks, s\u00f5num kasutajalt), siis serverist <i>Telegram<\/i> meie <i>Yandex-funktsioon<\/i> saadetakse p\u00e4ring (<i>request<\/i>) andmetega. Siin on rida, mille saab lihtsalt brauseri aadressiv\u00e4ljale kleepida ja seej\u00e4rel lehte v\u00e4rskendada (seda tuleb teha ainult \u00fcks kord): <code>https:\/\/api.telegram.org\/bot{bot_token}\/setWebHook?url={webhook_url}<\/code><br \/>\nLihtsalt asendame <i>{bot_token}<\/i> meie poolt bot-isa k\u00e4est saadud tokeniga, kui me oma boti l\u00f5ime, ja <i>{webhook_url}<\/i> \u2014 meie <i>URL<\/i> . Oodake! Kuid <i>Yandexi funktsioonid<\/i>keelab teenusepakkujatel Venemaal aadressi teenindada <i>Roskomcenzur<\/i> . Jah, t\u00f5si. Kuid m\u00f5elge midagi v\u00e4lja. V\u00f5ib-olla paluda oma vanaema Ukrainas, Iisraelis v\u00f5i Kanadas \u2014 seal ei ole mingeid 'roskomcensuuri', ja \u00fcks jumal teab, kuidas inimesed elavad ilma selleta. L\u00f5puks v\u00e4lja peab p\u00e4ring-vastus webhook'i seadistamisel v\u00e4lja n\u00e4gema nii: <code>https:\/\/api.telegram.org<\/code>Testime. Peaks 'peegeldama'.<\/p>\n<p><img decoding=\"async\" alt=\"Loome Telegrami boti Yandex.Cloudis\" src=\"\/wp-content\/uploads\/2020\/02\/713834a1665520d3e471cd3d1831ac06.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJa nii on. Meie \u00f5nnitlused \u2014 n\u00fc\u00fcd<\/p>\n<p><img decoding=\"async\" alt=\"Loome Telegrami boti Yandex.Cloudis\" src=\"\/wp-content\/uploads\/2020\/02\/3ab0e97f9b0ca06295fe7f5f793aab2c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n-botiga! <i>Yandex-funktsioon<\/i> on saanud <i>Telegram<\/i>N\u00fc\u00fcd teeme Nutika M\u00f5tte. Kood on avatud ja asub<\/p>\n<h2>Nutikaid M\u00f5tteid<\/h2>\n<p>\n. See on \u00fcsna h\u00e4sti kommenteeritud ja selles on vaid sada rida. Lugege seda nagu ooperi diiva libretot! <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/stmike\/tg-bot-smart-thoughts\"><b><i>GitHub<\/i><\/b><\/a><\/noindex>Kloonige projekt ja installige s\u00f5ltuvused: <\/p>\n<p><img decoding=\"async\" alt=\"Loome Telegrami boti Yandex.Cloudis\" src=\"\/wp-content\/uploads\/2020\/02\/2ad0e96a2169d0859ccec836f151d3ea.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\ngit clone https:\/\/github.com\/stmike\/tg-bot-smart-thoughts.git\ncd tg-bot-smart-thoughts\nnpm i<\/p>\n<pre><code class=\"plaintext\">git clone https:\/\/github.com\/stmike\/tg-bot-smart-thoughts.git\ncd tg-bot-smart-thoughts\nnpm i\n<\/code><\/pre>\n<p>\nTehke vajalikud muudatused faili <i>index.js<\/i> (valikuline; ei pea midagi muutma). Looge <i>zip<\/i>-arhiv, faili <i>index.js<\/i> ja kausta <i>node_modules<\/i> sees, n\u00e4iteks nimega <i>smart.zip<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Loome Telegrami boti Yandex.Cloudis\" src=\"\/wp-content\/uploads\/2020\/02\/c8c97707515338a01f8b8ed7f743c4a5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00fc\u00fcd liikuge meie <i>Yandexi funktsioonid<\/i>, valige vahekaart <i>ZIP-arhiv<\/i>, klikkige nupule <i>Vali fail<\/i>, ja laadige meie arhiv \u00fcles <i>smart.zip<\/i>. L\u00f5puks, paremas \u00fclanurgas klikkige nupule <i>Loo versioon<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Loome Telegrami boti Yandex.Cloudis\" src=\"\/wp-content\/uploads\/2020\/02\/96634c132848278ecc00a509e61b13f0.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nM\u00f5ne sekundi p\u00e4rast, kui funktsioon uuendatakse, testime meie boti uuesti. N\u00fc\u00fcd ei 'peegelda' ta enam, vaid edastab nutikaid m\u00f5tteid!<\/p>\n<p><img decoding=\"async\" alt=\"Loome Telegrami boti Yandex.Cloudis\" src=\"\/wp-content\/uploads\/2020\/02\/0c683826b5ef2bdbbd0253de4691900a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKuni selle ajani k\u00f5ik. Teised artiklid j\u00e4rgivad. Kui olete huvitatud sarnastest lugudest, tellige uute artiklite teavitused. Saate tellida siit v\u00f5i <i>Telegram<\/i>-kanal <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/it_tutorial_zahar\"><i>IT \u00d5petus Zahari<\/i><\/a><\/noindex>, v\u00f5i <i>Twitteris<\/i> <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/mikezaharov\"><i>@mikezaharov<\/i><\/a><\/noindex>.<\/p>\n<h2>Viidatud lingid<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/stmike\/tg-bot-smart-thoughts\"><b><i>Kood GitHubis<\/i><\/b><\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.ru\/docs\/functions\/\"><b><i>Yandex Cloud Functions<\/i><\/b><\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.ru\/docs\/storage\/\"><b><i>Yandex Object Storage<\/i><\/b><\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/core.telegram.org\/bots\"><b><i>Bots: An introduction for developers<\/i><\/b><\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/core.telegram.org\/bots\/api\"><b><i>Telegram Bot API<\/i><\/b><\/a><\/noindex><\/p>\n<h2>Annetused<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/yasobe.ru\/na\/vui\"><img decoding=\"async\" alt=\"Loome Telegrami boti Yandex.Cloudis\" src=\"\/wp-content\/uploads\/2020\/02\/250f8765713080fcbbdaf56c04dc882f.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<br \/>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/486876\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0438\u0437 \u043f\u043e\u0434\u0440\u0443\u0447\u043d\u044b\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043c\u044b \u0441\u043e\u0431\u0435\u0440\u0451\u043c \u0432 \u042f\u043d\u0434\u0435\u043a\u0441.\u041e\u0431\u043b\u0430\u043a\u0435 Telegram-\u0431\u043e\u0442 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Yandex Cloud Functions (\u0438\u043b\u0438 \u042f\u043d\u0434\u0435\u043a\u0441-\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u2014 \u0434\u043b\u044f \u043a\u0440\u0430\u0442\u043a\u043e\u0441\u0442\u0438) \u0438 Yandex Object Storage (\u0438\u043b\u0438 \u041e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u2014 \u0434\u043b\u044f \u044f\u0441\u043d\u043e\u0441\u0442\u0438). \u041a\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430 Node.js. \u041e\u0434\u043d\u0430\u043a\u043e, \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e \u043f\u0438\u043a\u0430\u043d\u0442\u043d\u043e\u0435 \u043e\u0431\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e \u2014 \u043d\u0435\u043a\u0430\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c, \u0441\u043a\u0430\u0436\u0435\u043c \u0442\u0430\u043a, \u0420\u043e\u0441\u0441\u041a\u043e\u043c\u0426\u0435\u043d\u0437\u0443\u0440 (\u0446\u0435\u043d\u0437\u0443\u0440\u0430 \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u0430 \u0441\u0442\u0430\u0442\u044c\u0451\u0439 29 \u041a\u043e\u043d\u0441\u0442\u0438\u0442\u0443\u0446\u0438\u0438 \u0420\u0424), \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430\u043c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":41316,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-41315","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0438\u0437 \u043f\u043e\u0434\u0440\u0443\u0447\u043d\u044b\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043c\u044b \u0441\u043e\u0431\u0435\u0440\u0451\u043c \u0432.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/stroim-telegram-bot-v-yandeks-oblake\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u0442\u0440\u043e\u0438\u043c Telegram-\u0431\u043e\u0442 \u0432 \u042f\u043d\u0434\u0435\u043a\u0441.\u041e\u0431\u043b\u0430\u043a\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0438\u0437 \u043f\u043e\u0434\u0440\u0443\u0447\u043d\u044b\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043c\u044b \u0441\u043e\u0431\u0435\u0440\u0451\u043c \u0432.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/stroim-telegram-bot-v-yandeks-oblake\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-02-10T09:09:34+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-10T09:09:34+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Ehitage Telegram-bot Yandex.Cloudis | ProHoster","description":"T\u00e4na kogume me saadaval materjalidest.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/stroim-telegram-bot-v-yandeks-oblake","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u0442\u0440\u043e\u0438\u043c Telegram-\u0431\u043e\u0442 \u0432 \u042f\u043d\u0434\u0435\u043a\u0441.\u041e\u0431\u043b\u0430\u043a\u0435 | ProHoster","og:description":"\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0438\u0437 \u043f\u043e\u0434\u0440\u0443\u0447\u043d\u044b\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043c\u044b \u0441\u043e\u0431\u0435\u0440\u0451\u043c \u0432.","og:url":"https:\/\/prohoster.info\/et\/blog\/stroim-telegram-bot-v-yandeks-oblake","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-02-10T09:09:34+00:00","article:modified_time":"2020-02-10T09:09:34+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"41315","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 00:19:25","updated":"2022-09-29 21:53:55","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/41315","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=41315"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/41315\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/41316"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=41315"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=41315"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=41315"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}