{"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\/sl\/blog\/stroim-telegram-bot-v-yandeks-oblake","title":{"rendered":"Gradimo Telegram bota u Yandex Cloud-u","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Gradimo Telegram bota u Yandex Cloud-u\" src=\"\/wp-content\/uploads\/2020\/02\/4a758744e4fc6bc797d270fa1bc42ef3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDanas \u0107emo od dostupnog materijala sastaviti u <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.ru\/\"><i>Yandex Cloud-u<\/i><\/a><\/noindex> <i>Telegram bota<\/i> z uporabo <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.ru\/services\/functions\"><i>Yandex Cloud Functions<\/i><\/a><\/noindex> (ali <i>Yandex funkcije<\/i> \u2014 skra\u0107eno) i <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.ru\/services\/storage\"><i>Yandex Object Storage<\/i><\/a><\/noindex> (ali <i>Objektno skladi\u0161te<\/i> \u2014 radi jasno\u0107e). Kod \u0107e biti na <i>Node.js<\/i>. Me\u0111utim, postoji jedan pikantan detalj \u2014 neka organizacija zvan <i>RosKomCenzor<\/i> (cenzura je zabranjena \u010dlanom 29. Ustava RF), ne dozvoljava internet provajderima u Rusiji da \u0161alju upite ka <i>Telegram API-ju<\/i> na adresu: <code>https:\/\/api.telegram.org\/<\/code>. Pa mi tako i ne\u0107emo \u2014 ako nema, nema. U na\u0161em koferu imamo tzv. <i>webhook-ove<\/i> \u2014 pomo\u0107u njih ne \u0161aljemo zahteve na konkretnu adresu, ve\u0107 samo \u0161aljemo svoj zahtev kao odgovor na bilo koji zahtev ka nama. Drugim re\u010dima, kao u Odesi \u2014 odgovaramo pitanjem na pitanje. Zbog toga <i>Telegram API-ju<\/i> u na\u0161em kodu ne\u0107e biti.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<b class=\"spoiler_title\">Omejitev odgovornosti<\/b><i>Pomenuta imena dr\u017eavnih organizacija u ovom \u010dlanku su izmi\u0161ljena, a eventualne sli\u010dnosti sa imenima stvarnih organizacija su slu\u010dajne. <\/i> <\/p>\n<p>Dakle, napravi\u0107emo bota koji \u0107e nas snabdevati pametnim mislima. Ta\u010dno onakvog kao na slici:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/SmartThoughtsBot\"><img decoding=\"async\" alt=\"Gradimo Telegram bota u Yandex Cloud-u\" src=\"\/wp-content\/uploads\/2020\/02\/6b7aca248999621a20f8a0ec29e75c75.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Mo\u017eete ga isprobati u akciji \u2014 evo imena: <b><i>@SmartThoughtsBot<\/i><\/b>. Primetili ste dugme <i>\u201eVe\u0161tina Alise\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>ve\u0161tine Alise<\/i>, tj. on obavlja iste funkcije kao i <i>ve\u0161tina Alise<\/i> i, mo\u017eda, oni mogu mirno koegzistirati reklamiraju\u0107i jedni druge. O tome kako stvoriti <i>ve\u0161tinu Pametne Misli<\/i> govori se u \u010dlanku <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/465275\/\"><b><i>Alisa sti\u010de ve\u0161tinu<\/i><\/b><\/a><\/noindex>. Sada (nakon nekih izmena ve\u0107 nakon objavljivanja pomenutog \u010dlanka) na pametnom telefonu ova <i>ve\u0161tina<\/i> \u0107e izgledati otprilike ovako:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/alice.ya.ru\/s\/f785af07-4578-4a6b-95ae-485bd803ae20\"><img decoding=\"async\" alt=\"Gradimo Telegram bota u Yandex Cloud-u\" src=\"\/wp-content\/uploads\/2020\/02\/e92c340f8d947ba9252e0fcab0511ce6.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<h2>Kreiranje bota<\/h2>\n<p>\nVoleo bih da ovaj vodi\u010d bude koristan svima, uklju\u010duju\u0107i i po\u010detnike u \u201egradnji botova\u201d. Zato \u0107u u ovom odeljku prili\u010dno detaljno opisati kako zapravo praviti u <i>Telegram<\/i>\u2018o botov. Za tiste, ki te informacije ne potrebujejo \u2014 preidite na naslednje odseke. <\/p>\n<p>Otvorimo aplikaciju <i>Telegaram<\/i>, pozivamo oca svih botova (kod njih je sve kao kod ljudi) \u2014 <b><i>@BotFather<\/i><\/b> \u2014 i za po\u010detak da\u0107emo mu komandu \/help, kako bismo osve\u017eili se\u0107anje na to \u0161ta mo\u017eemo raditi. Sada \u0107e nas zanimati komanda <i>\/newbot<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram bota u Yandex Cloud-u\" src=\"\/wp-content\/uploads\/2020\/02\/12a0e84dd712e0c74dee0463f1b44e74.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPo\u0161to je opisani bot ve\u0107 napravljen, radi demonstrativnih svrha napravit \u0107u na kratko drugog bota (kasnije \u0107u ga obrisati). Nazva\u0107u ga <i>DemoHabrBot<\/i>. Imena (<i>username<\/i>) svih telegram botova moraju se zavr\u0161avati re\u010dju <i>bot<\/i>, na primer: <i>MyCoolBot<\/i> ili <i>my_cool_bot<\/i> \u2014 to je za robote. Najprej damo robotu ime (<i>name<\/i>) \u2014 to pa je za ljudi. Ime je lahko v katerem koli jeziku, lahko vsebuje presledke in ne rabi kon\u010dati z besedo <i>bot<\/i>, in celo ni potrebno, da je edinstveno. V tem primeru sem temu robotu dal ime <i>Demo Habr<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram bota u Yandex Cloud-u\" src=\"\/wp-content\/uploads\/2020\/02\/682ecf64724cabcfef96639d6de87521.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZdaj izberemo ime robota (<i>username<\/i>, tisto, ki je za robote). Imenujmo ga <i>DemoHabrBot<\/i>. Vse, kar se je nana\u0161alo na ime robota (<i>name<\/i>) se sploh ne nana\u0161a na njegovo ime \u2014 <i>username<\/i> (ali se nana\u0161a, vendar ravno nasprotno). Po uspe\u0161nem ustvarjanju edinstvenega imena robota, moramo kopirati in shraniti (v strogi tajnosti!) \u017eeton, ki je prikazan na posnetku zaslona z rde\u010do pu\u0161\u010dico. Z njegovo pomo\u010djo bomo malo kasneje nastavili izhodni <i>Telegram<\/i>\u2018a webhook na na\u0161o <i>Yandex funkcijo<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram bota u Yandex Cloud-u\" src=\"\/wp-content\/uploads\/2020\/02\/78254946c9f763d212a1952bac6c706f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZdaj pa damo ukaz o\u010detu vseh robotov: <i>\/mybots<\/i>, in pokazal bo seznam vseh robotov, ki smo jih ustvarili. Pustimo za zdaj na miru sve\u017ee ustvarjenega robota <i>Demo Habr<\/i> (ustanovljen je bil, da poka\u017ee, kako ustvariti robote, a ga bomo danes \u0161e uporabili za druge demonstracijske namene), in let's take a look at robot <i>Pametne Misli<\/i> (<i>@SmartThoughtsBot<\/i>). Kliknemo gumb z njegovim imenom na seznamu robotov.<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram bota u Yandex Cloud-u\" src=\"\/wp-content\/uploads\/2020\/02\/98434725cb0d7441ec5f2552b0b508a8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTukaj lahko nastavimo na\u0161ega robota. S klikom na gumb <i>Uredi\u2026<\/i> gremo na urejanje ene od mo\u017enosti. Na primer, s klikom na gumb <i>Edit Name<\/i> lahko spremenimo ime robota, recimo namesto <i>Pametne Misli<\/i>, napi\u0161emo <i>Bizarne Ideje<\/i>. <i>Botpic<\/i> \u2014 to je avatar robota, mora biti najmanj <i>150 x 150 px<\/i>. <i>Opis<\/i> \u2014 to je kratki opis, ki ga uporabnik vidi ob prvem zagonu robota, kot odgovor na vpra\u0161anje: <i>Kaj lahko ta robot po\u010dne?<\/i> <i>O<\/i> \u2014 \u0161e bolj kratek opis, ki se posreduje s povezavo na robota (<code>https:\/\/t.me\/SmartThoughtsBot<\/code>) ali pri ogledu informacij o njem.<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram bota u Yandex Cloud-u\" src=\"\/wp-content\/uploads\/2020\/02\/f15ba92be1bfea827273f79616bd2a3a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPreostalo nam je le \u0161e nastaviti ukaze. Za to pritisnemo gumb <i>Edit Commands<\/i>. Za standardizacijo uporabni\u0161ke prakse <i>Telegram<\/i> priporo\u010damo, da vedno uporabite dva ukaza: <i>\/start<\/i> in <i>\/help<\/i>, in \u010de robot potrebuje nastavitve \u2014 dodatni ukaz \/settings. Na\u0161 robot je preprost kot krogla, zato nastavitve zaenkrat niso potrebne. Zapi\u0161emo dva prva ukaza, ki jih bomo nato obdelali v kodi. Zdaj, \u010de uporabnik v vnosno polje vnese po\u0161evnico (znak po\u0161evnice: \/), se prika\u017ee seznam ukazov za hitro izbiro. Tako kot na sliki: levo \u2014 nastavljamo ukaze preko o\u010deta robota; desno pa so ti ukazi \u017ee na voljo uporabnikom v na\u0161em robotu.<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram bota u Yandex Cloud-u\" src=\"\/wp-content\/uploads\/2020\/02\/b536b5fe7b8aad3d68877a7693ea0e6f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Yandex funkcija<\/h2>\n<p>\nZdaj, ko je na\u0161 robot ustvarjen, preidite na <i>Yandex.Cloud<\/i>, da ustvarimo funkcijo, ki bo izvajala kodo na\u0161ega bota. \u010ce \u0161e niste delali z <i>Yandex.Cloud<\/i> , preberite gradivo <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/464739\/\"><b><i>Alice in Bitrix Land<\/i><\/b><\/a><\/noindex>, nato pa \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/440374\/\"><b><i>Yandex funkcije po\u0161iljajo e-po\u0161to<\/i><\/b><\/a><\/noindex>. Skoraj sem prepri\u010dan, da bosta ti dve relativno majhni \u010dlanki dovolj za osnovno razumevanje teme.<\/p>\n<p>Torej, v konzoli <i>Yandex.Cloud<\/i> v levem navigacijskem meniju izberemo to\u010dko <i>Cloud Functions<\/i>, nato pa pritisnite gumb <i>Ustvari funkcijo<\/i>. Dajte ji ime, in za sebe \u2014 kratko opisno besedilo.<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram bota u Yandex Cloud-u\" src=\"\/wp-content\/uploads\/2020\/02\/67f313c60481c5ef84af8a28b4934621.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPo pritisku na gumb <i>Kreirati<\/i> in po nekaj sekundah se nova funkcija pojavi na seznamu vseh funkcij. Kliknite na njeno ime \u2014 to nas bo pripeljalo na stran <i>Pregled<\/i> na\u0161e funkcije. Tukaj moramo vklopiti (<i>On<\/i>) preklopnik <i>Javna funkcija<\/i>, da postane dostopna iz zunanjega (za <i>Yandex.Cloud<\/i>) sveta, ter vrednosti polj <i>Povezava za klic<\/i> in <i>Identifikator<\/i> \u2014 hraniti globoko skrito pred vsemi razen pred seboj in Telegramom, da va\u0161a funkcija ne bi mogla biti klicana s strani razli\u010dnih prevarantov.<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram bota u Yandex Cloud-u\" src=\"\/wp-content\/uploads\/2020\/02\/3ba45d357965d567ba33ab0ee65d2eb4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSedaj z levo plo\u0161\u010do preidimo v <i>Urednik<\/i> funkcije. Pustimo zaenkrat na kratko ob strani na\u0161e <i>Pametne Misli<\/i>, in ustvarimo minimalno funkcijo predloge za preverjanje delovanja na\u0161ega bota\u2026 Kakor koli \u017ee, ta funkcija je v tem kontekstu na\u0161 bot\u2026 Skratka, zdaj in tukaj bomo ustvarili preprostega bota, ki bo 'zrcalil' (t.j. po\u0161iljal nazaj) zahteve uporabnikov. To predlogo je mogo\u010de vedno uporabiti pri ustvarjanju novih telegram botov, da se prepri\u010damo, da je povezava z <i>Telegram<\/i>v redu. Kliknite <i>Ustvari datoteko<\/i>, poimenujte jo <i>index.js<\/i>, in v spletnem <i>Uredniku kode<\/i> prilepite naslednjo kodo v to datoteko:<\/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>\nV konzoli Yandex.Cloud bi to moralo izgledati nekako takole:<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram bota u Yandex Cloud-u\" src=\"\/wp-content\/uploads\/2020\/02\/f0204be84468c9ae7ec1b9e4ca0dfdd9.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNato nekoliko ni\u017eje navedite <i>Vhodno to\u010dko<\/i> \u2014 <i>index.bot<\/i>, gde <i>index<\/i> je ime datoteke (<i>index.js<\/i>), medtem ko je <i>bot<\/i> \u2014 ime funkcije (<i>module.exports.bot<\/i>). Vsa ostala polja pustimo 'kot so', in v zgornjem desnem kotu pritisnite gumb <i>Ustvari razli\u010dico<\/i>. \u010cez nekaj sekund bo ta razli\u010dica funkcije ustvarjena. Kmalu po testiranju <i>webhooka<\/i>, bomo ustvarili novo razli\u010dico \u2014 <i>Pametne Misli<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram bota u Yandex Cloud-u\" src=\"\/wp-content\/uploads\/2020\/02\/48cd898f83bdc29d124600828bf2143f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Objektno skladi\u0161te<\/h2>\n<p>\nZdaj, ko imamo ustvarjeno <i>Yandex funkcija<\/i>, dajmo, dok smo u konzoli <i>Yandex.Cloud<\/i>, napravimo takozvani spremnik (<i>spremnik<\/i>, tj. kanta na ruskom, nikako buket) za pohranu slikovnih datoteka koje \u0107e se koristiti u na\u0161em botu <i>Pametne Misli<\/i>. U lijevom navigacijskom izborniku odaberite stavku <i>Object Storage<\/i>, pritisnite gumb <i>Kreiraj spremnik<\/i>, dajte mu naziv, na primjer, <i>img-spremnik<\/i>, i, najva\u017enije, <i>Pristup za \u010ditanje objekata<\/i> naredimo javno \u2014 sicer Telegram na\u0161ih slik ne bo mogel videti. Vsa ostala polja pustimo brez sprememb. Pritisnemo gumb <i>Kreiraj spremnik<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram bota u Yandex Cloud-u\" src=\"\/wp-content\/uploads\/2020\/02\/c890a42f7d043e03300434b2c4a0258b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNakon toga, popis svih spremnika mogao bi izgledati otprilike ovako (ako je to va\u0161 jedini spremnik):<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram bota u Yandex Cloud-u\" src=\"\/wp-content\/uploads\/2020\/02\/34701231536742a7889b200ff49b08b1.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSada vam predla\u017eem da pritisnete naziv spremnika i unutar njega kreirate mapu kako biste organizirali pohranu slika za razli\u010dite svoje aplikacije. Na primjer, za Telegram bot <i>Pametne Misli<\/i> napravio sam mapu pod nazivom <i>tg-bot-smart-thoughts<\/i> (ni\u0161ta, shvatit \u0107u tu \u0161ifru). A napravite i vi neku.<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram bota u Yandex Cloud-u\" src=\"\/wp-content\/uploads\/2020\/02\/c5707b5ba54fea5b548d62e097328650.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSada mo\u017eete pritisnuti ime mape, u\u0107i u nju i u\u010ditati datoteke:<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram bota u Yandex Cloud-u\" src=\"\/wp-content\/uploads\/2020\/02\/ead320e587e1d161e2cd54a94b4ea0d4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA pritiskom na ime datoteke \u2013 dobit \u0107ete je <i>URL<\/i> za kori\u0161tenje u na\u0161em botu, i uop\u0107e \u2013 bilo gdje (ali, nemojte objavljivati ovu <i>URL<\/i> bez potrebe, jer je promet s <i>Objektnog spremi\u0161ta<\/i> napla\u0107en).<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram bota u Yandex Cloud-u\" src=\"\/wp-content\/uploads\/2020\/02\/07a833430b0584161423f363f6685306.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEto, to je sve s <i>Objektnim spremi\u0161tem<\/i>. Sada \u0107ete znati \u0161to u\u010diniti kada vidite poziv za u\u010ditavanje datoteka.<\/p>\n<h2>Webhook<\/h2>\n<p>\nSada \u0107emo postaviti <i>webhook<\/i> \u2013 tj. kada bot primi a\u017euriranje (na primjer, poruku od korisnika), s poslu\u017eitelja <i>Telegram<\/i> bit \u0107e poslan upit ( <i>Yandex funkcijo<\/i> ) s podacima u na\u0161<i>request<\/i>. Ovo je linija koju mo\u017eete jednostavno umetnuti u adresnu traku preglednika, a zatim osvje\u017eiti stranicu (to treba u\u010diniti samo jednom): <code>https:\/\/api.telegram.org\/bot{bot_token}\/setWebHook?url={webhook_url}<\/code><br \/>\nSamo zamijenite <i>{bot_token}<\/i> s tokenom koji smo dobili od bota-pravitelja prilikom stvaranja na\u0161eg bota, a <i>{webhook_url}<\/i> \u2013 s <i>URL<\/i> na\u0161om <i>Yandex funkcije<\/i>. \u010cekajte malo! Ali <i>RosKomCenzor<\/i> zabranjuje pru\u017eateljima u RF da opslu\u017euju adresu <code>https:\/\/api.telegram.org<\/code>. Da, to\u010dno. Ali smislite ne\u0161to. Mo\u017eete, primjerice, zamoliti svoju baku u Ukrajini, Izraelu ili Kanadi \u2013 tamo nema nikakvih \u00abruskomcenzi\u00bb, a bog zna kako ljudi \u017eive bez toga. Na kraju, upit-odgovor prilikom postavljanja webhooka trebao bi izgledati ovako:<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram bota u Yandex Cloud-u\" src=\"\/wp-content\/uploads\/2020\/02\/713834a1665520d3e471cd3d1831ac06.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTestiramo. Trebalo bi \u00abodra\u017eavati\u00bb.<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram bota u Yandex Cloud-u\" src=\"\/wp-content\/uploads\/2020\/02\/3ab0e97f9b0ca06295fe7f5f793aab2c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTako je. Na\u0161e \u010destitke \u2013 sada ste <i>Yandex funkcija<\/i> je postala <i>Telegram<\/i>-botom!<\/p>\n<h2>Pametne Misli<\/h2>\n<p>\nA sada radimo Pametne Misli. Kod je otvoren i nalazi se na <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/stmike\/tg-bot-smart-thoughts\"><b><i>GitHub<\/i><\/b><\/a><\/noindex>. Dobro je komentiran i ima svega stotinjak redaka. \u010citajte ga kao operska diva libretto! <\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram bota u Yandex Cloud-u\" src=\"\/wp-content\/uploads\/2020\/02\/2ad0e96a2169d0859ccec836f151d3ea.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKlonirajte projekt i instalirajte ovisnosti:<\/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>\nNaredite potrebne spremembe v datoteki <i>index.js<\/i> (neobvezno; ni\u010desar ni treba spreminjati). Ustvarite <i>zip<\/i>-arhiv z datoteko <i>index.js<\/i> in mapo <i>node_modules<\/i> znotraj, na primer pod imenom <i>smart.zip<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram bota u Yandex Cloud-u\" src=\"\/wp-content\/uploads\/2020\/02\/c8c97707515338a01f8b8ed7f743c4a5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZdaj pojdite v konzolo na na\u0161i <i>Yandex funkcije<\/i>, izberite zavihek <i>ZIP-arhiv<\/i>, kliknite gumb <i>Izberi datoteko<\/i>, in nalo\u017eite na\u0161 arhiv <i>smart.zip<\/i>. Nazadnje, v zgornjem desnem kotu kliknite gumb <i>Ustvari razli\u010dico<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram bota u Yandex Cloud-u\" src=\"\/wp-content\/uploads\/2020\/02\/96634c132848278ecc00a509e61b13f0.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u010cez nekaj sekund, ko se funkcija posodobi, ponovno preizkusite na\u0161ega bota. Sedaj ne 'zrcali' ve\u010d, ampak dostavlja pametne misli!<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram bota u Yandex Cloud-u\" src=\"\/wp-content\/uploads\/2020\/02\/0c683826b5ef2bdbbd0253de4691900a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZa danes je to vse. Druge \u010dlanke sledijo. Kdor si \u017eeli brati tak\u0161ne stvari \u2013 prijavite se na obvestila o novih \u010dlankih. Prijavite se lahko tukaj ali na <i>Telegram<\/i>-kanalu <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/it_tutorial_zahar\"><i>IT Tutorial Zahar<\/i><\/a><\/noindex>, ali <i>Twitter<\/i> <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/mikezaharov\"><i>@mikezaharov<\/i><\/a><\/noindex>.<\/p>\n<h2>Povezave<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/stmike\/tg-bot-smart-thoughts\"><b><i>Koda na GitHubu<\/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>Donacije<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/yasobe.ru\/na\/vui\"><img decoding=\"async\" alt=\"Gradimo Telegram bota u Yandex Cloud-u\" src=\"\/wp-content\/uploads\/2020\/02\/250f8765713080fcbbdaf56c04dc882f.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<br \/>Izvor: <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.4 - 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\/sl\/blog\/stroim-telegram-bot-v-yandeks-oblake\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sl_SI\" \/>\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\/sl\/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\udd47Gradnja Telegram-bota v Yandex.Cloudu | ProHoster","description":"Danes bomo sestavili iz razpolo\u017eljivih materialov.","canonical_url":"https:\/\/prohoster.info\/sl\/blog\/stroim-telegram-bot-v-yandeks-oblake","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sl_SI","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\/sl\/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\/sl\/wp-json\/wp\/v2\/posts\/41315","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/comments?post=41315"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/41315\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media\/41316"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media?parent=41315"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/categories?post=41315"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/tags?post=41315"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}