{"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\/hr\/blog\/stroim-telegram-bot-v-yandeks-oblake","title":{"rendered":"Gradimo Telegram-bota u Yandex.Cloudu","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Gradimo Telegram-bota u Yandex.Cloudu\" src=\"\/wp-content\/uploads\/2020\/02\/4a758744e4fc6bc797d270fa1bc42ef3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDanas \u0107emo od dostupnih materijala sastaviti <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.ru\/\"><i>Yandex.Cloud<\/i><\/a><\/noindex> <i>Telegram-bota<\/i> s kori\u0161tenjem <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.ru\/services\/functions\"><i>Yandex Cloud Functions<\/i><\/a><\/noindex> (ili <i>Yandex-funkcije<\/i> \u2014 radi sa\u017eetka) i <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.ru\/services\/storage\"><i>Yandex Object Storage<\/i><\/a><\/noindex> (ili <i>Objektno skladi\u0161te<\/i> \u2014 radi jasno\u0107e). Kod \u0107e biti na <i>Node.js<\/i>. Me\u0111utim, postoji jedan so\u010dni detalj \u2014 neka organizacija pod nazivom, recimo, <i>RosKomCenzor<\/i> (cenzura je zabranjena \u010dlanom 29. Ustava RF), ne dozvoljava internet-provajderima u Rusiji da \u0161alju zahtjeve u <i>Telegram API<\/i> na adresu: <code>https:\/\/api.telegram.org\/<\/code>. Pa, ne\u0107emo ni slati \u2014 ako ne mo\u017ee, ne mo\u017ee. Uostalom, u na\u0161em prtljagu imamo takozvane <i>webhookove<\/i> \u2014 s njihovom pomo\u0107i ne \u0161aljemo zahtjeve na odre\u0111enu adresu, ve\u0107 samo \u0161aljemo na\u0161 zahtjev kao odgovor na bilo koji zahtjev upu\u0107en nama. Drugim rije\u010dima, kao u Odessi \u2014 odgovaramo pitanjem na pitanje. Stoga <i>Telegram API<\/i> ne\u0107e biti u na\u0161em kodu.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<b class=\"spoiler_title\">Odricanje<\/b><i>Nazivi dr\u017eavnih organizacija spomenutih u ovom \u010dlanku su izmi\u0161ljeni, a svaka podudarnost s nazivima stvarnih organizacija slu\u010dajna je. <\/i> <\/p>\n<p>Dakle, napravit \u0107emo bota koji \u0107e nas opskrbiti pametnim mislima. To\u010dno takvog kakav je na slici:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/SmartThoughtsBot\"><img decoding=\"async\" alt=\"Gradimo Telegram-bota u Yandex.Cloudu\" 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>. Primijetili ste gumb <i>\u201eVje\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>vje\u0161tine Alise<\/i>, tj. obavlja iste funkcije kao i <i>vje\u0161tina Alise<\/i> i, mogu\u0107e je da \u0107e oni mo\u0107i mirno koegzistirati promoviraju\u0107i jedan drugoga. O tome kako izraditi <i>vje\u0161tinu Pametne Misli<\/i> govori se u \u010dlanku <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/465275\/\"><b><i>Alisa stje\u010de vje\u0161tinu<\/i><\/b><\/a><\/noindex>. Sada (nakon odre\u0111enih izmjena nakon objave gore spomenutog \u010dlanka) na pametnom telefonu ova <i>vje\u0161tina<\/i> izgledat \u0107e 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.Cloudu\" src=\"\/wp-content\/uploads\/2020\/02\/e92c340f8d947ba9252e0fcab0511ce6.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<h2>Izrada bota<\/h2>\n<p>\n\u017delio bih da ovaj tutorijal bude koristan svima, uklju\u010duju\u0107i i po\u010detnicima u 'gradnji botova'. Stoga \u0107u u ovom dijelu detaljno opisati kako uop\u0107e stvoriti b <i>Telegram<\/i>\u2018botova. Za one kojima ove informacije nisu potrebne \u2014 prije\u0111ite na sljede\u0107e odjeljke. <\/p>\n<p>Otvorite aplikaciju <i>Telegram<\/i>, pozivamo oca svih botova (kod njih je sve kao kod ljudi) \u2014 <b><i>@BotFather<\/i><\/b> \u2014 i za po\u010detak \u0107emo mu dati naredbu \/help, kako bismo osvje\u017eili sje\u0107anje na to \u0161to mo\u017eemo raditi. Sada nas zanima naredba <i>\/newbot<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram-bota u Yandex.Cloudu\" src=\"\/wp-content\/uploads\/2020\/02\/12a0e84dd712e0c74dee0463f1b44e74.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBudu\u0107i da je bot opisan ovdje ve\u0107 stvoren, u svrhu demonstracije stvorit \u0107u na kratko drugog bota (kasnije \u0107u ga obrisati). Nazvat \u0107u ga <i>DemoHabrBot<\/i>. Imena (<i>korisni\u010dko_ime<\/i>) svih Telegram-botova moraju zavr\u0161avati na rije\u010d <i>bot<\/i>, na primjer: <i>MyCoolBot<\/i> ili <i>my_cool_bot<\/i> \u2014 to je za botove. Ali prvo, dajemo botu ime (<i>ime<\/i>) \u2014 a ovo je za ljude. Ime mo\u017ee biti na bilo kojem jeziku, mo\u017ee sadr\u017eavati razmake, ne mora zavr\u0161avati na rije\u010d <i>bot<\/i>, i \u010dak ne mora biti jedinstveno. U ovom primjeru nazvao sam ovog bota <i>Demo Habr<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram-bota u Yandex.Cloudu\" src=\"\/wp-content\/uploads\/2020\/02\/682ecf64724cabcfef96639d6de87521.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSada biramo ime bota (<i>korisni\u010dko_ime<\/i>, ono koje je za botove). Nazovimo ga <i>DemoHabrBot<\/i>. Sve \u0161to se odnosi na naziv bota (<i>ime<\/i>) potpuno se ne odnosi na njegovo ime \u2014 <i>korisni\u010dko_ime<\/i> (ili se odnosi, ali s to\u010dno\u0161\u0107u do obratnog). Nakon uspje\u0161nog stvaranja jedinstvenog imena bota, moramo kopirati i sa\u010duvati (u strogoj tajnosti!) token prikazan na ekranu crvenom strelicom. S njegove pomo\u0107i \u0107emo malo kasnije postaviti izlazni <i>Telegram<\/i>\u2018webhook na na\u0161u <i>Yandex funkciju<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram-bota u Yandex.Cloudu\" src=\"\/wp-content\/uploads\/2020\/02\/78254946c9f763d212a1952bac6c706f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA sada dajemo naredbu ocu svih botova: <i>\/mybots<\/i>, i on \u0107e nam prikazati popis svih stvorenih bota. Za sada \u0107emo se zadr\u017eati na svje\u017ee izra\u0111enom botu <i>Demo Habr<\/i> (stvoren je da poka\u017ee kako se stvaraju botovi, ali \u0107emo ga i danas koristiti za druge demo svrhe), i razmotriti bota <i>Pametne Misli<\/i> (<i>@SmartThoughtsBot<\/i>). Kliknemo na dugme s njegovim imenom na popisu bota.<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram-bota u Yandex.Cloudu\" src=\"\/wp-content\/uploads\/2020\/02\/98434725cb0d7441ec5f2552b0b508a8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOvde mo\u017eemo postaviti na\u0161eg bota. Klikom na dugme <i>Uredi\u2026<\/i> pre\u0107i \u0107emo na ure\u0111ivanje odre\u0111enih opcija. Na primjer, klikom na dugme <i>Edit Name<\/i> mo\u017eemo promijeniti naziv bota, recimo umjesto <i>Pametne Misli<\/i>, napisati <i>Besmislene Ideje<\/i>. <i>Botpic<\/i> \u2014 to je avatar bota, treba biti najmanje <i>150 x 150 px<\/i>. <i>Opis<\/i> \u2014 to je kratki opis koji korisnik vidi prilikom prvog pokretanja bota, kao odgovor na pitanje: <i>\u0160to mo\u017ee raditi ovaj bot?<\/i> <i>O<\/i> \u2014 jo\u0161 kra\u0107i opis koji se \u0161alje s vezom na bota (<code>https:\/\/t.me\/SmartThoughtsBot<\/code>) ili prilikom pregleda informacija o njemu.<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram-bota u Yandex.Cloudu\" src=\"\/wp-content\/uploads\/2020\/02\/f15ba92be1bfea827273f79616bd2a3a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOstalo nam je samo postaviti komande. Za to kliknemo dugme <i>Edit Commands<\/i>. Za standardizaciju korisni\u010dke prakse <i>Telegram<\/i> preporu\u010duje da se uvijek koriste dvije komande: <i>\/start<\/i> i <i>\/help<\/i>, a ako su bota potrebne postavke \u2014 dodatna komanda \/settings. Na\u0161 bot je jednostavan kao lopta, stoga mu postavke za sada nisu potrebne. Unosimo prve dvije komande, koje \u0107emo zatim obraditi u kodu. Sada, ako korisnik u polju za unos unese kosu crtu (znak \/: \/), pojavit \u0107e se popis komandi za brzi odabir. Sve kao na slici: lijevo \u2014 postavljamo komande preko oca bota; desno su te komande ve\u0107 dostupne korisnicima u na\u0161em botu.<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram-bota u Yandex.Cloudu\" src=\"\/wp-content\/uploads\/2020\/02\/b536b5fe7b8aad3d68877a7693ea0e6f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Yandex funkcija<\/h2>\n<p>\nSada, kada je na\u0161 bot stvoren, prelazimo na <i>Yandex.Cloud<\/i>, da bismo stvorili funkciju koja \u0107e izvr\u0161avati kod na\u0161eg bota. Ako jo\u0161 niste radili s <i>Yandex.Cloud<\/i> , pro\u010ditajte materijal <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/464739\/\"><b><i>Alisa u zemlji Bitrix<\/i><\/b><\/a><\/noindex>, a zatim \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/440374\/\"><b><i>Yandex funkcije \u0161alju e-po\u0161tu<\/i><\/b><\/a><\/noindex>. Gotovo sam siguran da \u0107e vam ove dvije relativno kratke \u010dlanke biti dovoljni za osnovno razumijevanje teme.<\/p>\n<p>Dakle, u konzoli <i>Yandex.Cloud<\/i> u lijevom navigacijskom izborniku odabiremo stavku <i>Cloud Functions<\/i>, a zatim pritisnite gumb <i>Kreirati funkciju<\/i>. Dajte joj ime, a za sebe \u2014 kratak opis.<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram-bota u Yandex.Cloudu\" src=\"\/wp-content\/uploads\/2020\/02\/67f313c60481c5ef84af8a28b4934621.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNakon pritiska na gumb <i>Stvori<\/i> i nakon nekoliko sekundi, nova funkcija \u0107e se pojaviti na popisu svih funkcija. Pritisnite njeno ime \u2014 to \u0107e nas odvesti na stranicu <i>Pregled<\/i> na\u0161e funkcije. Ovdje treba uklju\u010diti (<i>On<\/i>) prekida\u010d <i>Javna funkcija<\/i>, da bi bila dostupna iz vanjskog (za <i>Yandex.Cloud<\/i>) svijeta, a vrijednosti polja <i>Link za poziv<\/i> i <i>Identifikator<\/i> \u2014 \u010duvati u dubokoj tajni od svih osim sebe i Telegrama, kako va\u0161u funkciju ne bi mogli pozvati razni prevaranti.<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram-bota u Yandex.Cloudu\" src=\"\/wp-content\/uploads\/2020\/02\/3ba45d357965d567ba33ab0ee65d2eb4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSada s lijevog izbornika odlazimo u <i>Urednik<\/i> funkcije. Odlo\u017eimo za sada na\u0161e <i>Pametne Misli<\/i>, i stvorimo minimalnu funkciju-sablon za provjeru funkcionalnosti na\u0161eg bota\u2026 U svakom slu\u010daju, u ovom kontekstu ova funkcija je na\u0161 bot\u2026 Ukratko, sada i ovdje \u0107emo napraviti najjednostavnijeg bota koji \u0107e \u201ezrcaliti\u201c (tj. vra\u0107ati) zahtjeve korisnika. Ova sablona mo\u017ee se koristiti uvijek pri kreiranju novih telegram-bota, da se uvjerimo da veza s <i>Telegram<\/i>radi normalno. Kliknite <i>Kreiraj datoteku<\/i>, nazovite je <i>index.js<\/i>, i u online <i>uredniku koda<\/i> zalijepite u ovu datoteku sljede\u0107i kod:<\/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>\nU konzoli Yandex.Cloud to bi trebalo izgledati otprilike ovako:<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram-bota u Yandex.Cloudu\" src=\"\/wp-content\/uploads\/2020\/02\/f0204be84468c9ae7ec1b9e4ca0dfdd9.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDalje, malo ni\u017ee, navodimo <i>Ulaznu ta\u010dku<\/i> \u2014 <i>index.bot<\/i>, gdje <i>index<\/i> to je ime datoteke (<i>index.js<\/i>), a <i>bot<\/i> \u2014 ime funkcije (<i>module.exports.bot<\/i>). Sva ostala polja ostavljamo \u201ekako jesu\u201c, a u gornjem desnom kutu pritisnite gumb <i>Kreiraj verziju<\/i>. Za nekoliko sekundi ova verzija funkcije \u0107e biti stvorena. Ubrzo, nakon testiranja <i>webhook-a<\/i>, stvorit \u0107emo novu verziju \u2014 <i>Pametne Misli<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram-bota u Yandex.Cloudu\" 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>\nSada, kada imamo stvorenu <i>Yandex funkcija<\/i>, hajde, dok smo jo\u0161 u konzoli <i>Yandex.Cloud<\/i>, napravit \u0107emo tzv. bucket (<i>bucket<\/i>, tj. kanta na hrvatskom, a ne buket) za pohranu slikovnih datoteka koje \u0107e se koristiti u na\u0161em botu <i>Pametne Misli<\/i>. U lijevom navigacijskom izborniku odabiremo stavku <i>Object Storage<\/i>, kliknemo na gumb <i>Izradi bucket<\/i>, odabiremo naziv, na primjer, <i>img-bucket<\/i>, i, najva\u017enije, <i>Pristup za \u010ditanje objekata<\/i> \u010dinimo javnim \u2014 ina\u010de Telegramu na\u0161ih slika nema. Sva ostala polja ostavljamo nepromijenjena. Kliknite na gumb <i>Izradi bucket<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram-bota u Yandex.Cloudu\" src=\"\/wp-content\/uploads\/2020\/02\/c890a42f7d043e03300434b2c4a0258b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNakon toga, popis svih bucketa mo\u017ee izgledati otprilike ovako (ako je to va\u0161 jedini bucket):<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram-bota u Yandex.Cloudu\" src=\"\/wp-content\/uploads\/2020\/02\/34701231536742a7889b200ff49b08b1.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSada predla\u017eem da kliknete na naziv bucketa 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 naziva <i>tg-bot-smart-thoughts<\/i> ((ni\u0161ta, razumjet \u0107u tu \u0161ifru). Napravite i vi neku.<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram-bota u Yandex.Cloudu\" src=\"\/wp-content\/uploads\/2020\/02\/c5707b5ba54fea5b548d62e097328650.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSada mo\u017eete kliknuti na naziv mape, u\u0107i u nju i u\u010ditati datoteke:<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram-bota u Yandex.Cloudu\" src=\"\/wp-content\/uploads\/2020\/02\/ead320e587e1d161e2cd54a94b4ea0d4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA ako kliknete na naziv datoteke - dobit \u0107ete je <i>URL<\/i> za kori\u0161tenje u na\u0161em boku, i uop\u0107e - bilo gdje (ali, ne objavljujte tu <i>URL<\/i> bez potrebe, jer se promet s <i>Objektnog spremi\u0161ta<\/i> napla\u0107uje).<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram-bota u Yandex.Cloudu\" src=\"\/wp-content\/uploads\/2020\/02\/07a833430b0584161423f363f6685306.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEvo, to je to 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> tj. kada bot primi a\u017euriranje (na primjer, poruku od korisnika), s poslu\u017eitelja <i>Telegram<\/i> bit \u0107e poslan zahtjev ( <i>Yandex funkciju<\/i> ) s podacima. Evo linije koju mo\u017eete jednostavno zalijepiti u adresnu traku preglednika, a zatim osvje\u017eiti stranicu (to treba u\u010diniti samo jednom):<i>request<\/i>Samo \u0107emo zamijeniti <code>https:\/\/api.telegram.org\/bot{bot_token}\/setWebHook?url={webhook_url}<\/code><br \/>\n{bot_token} <i>sa tokenom koji smo dobili od bota-oca prilikom izrade na\u0161eg bota, a<\/i> {webhook_url} <i>sa<\/i> na\u0161om <i>URL<\/i> . \u010cekajte! Ali zar <i>Yandex-funkcije<\/i>ne dopu\u0161ta pru\u017eateljima usluga u RF da opslu\u017euju adresu <i>RosKomCenzor<\/i> . Da, to\u010dno. Ali smislite ne\u0161to. Mo\u017eete, na primjer, zamoliti svoju baku u Ukrajini, Izraelu ili Kanadi - nema tamo nikakve 'ruske cenzure', a samo Bog zna kako ljudi \u017eive bez toga. Na kraju, zahtjev-odgovor pri postavljanju webhooka trebao bi izgledati ovako: <code>https:\/\/api.telegram.org<\/code>Testiramo. Trebalo bi 'odra\u017eavati'.<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram-bota u Yandex.Cloudu\" src=\"\/wp-content\/uploads\/2020\/02\/713834a1665520d3e471cd3d1831ac06.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTako je. \u010cestitamo - sada<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram-bota u Yandex.Cloudu\" src=\"\/wp-content\/uploads\/2020\/02\/3ab0e97f9b0ca06295fe7f5f793aab2c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n-bot! <i>Yandex funkcija<\/i> postao je <i>Telegram<\/i>A sada radimo Pametne Misli. Kod je otvoren i nalazi se na<\/p>\n<h2>Pametne Misli<\/h2>\n<p>\n. Dobar je i dobro je komentiran, u njemu ima svega stotinjak redova. \u010citajte ga kao operna diva libreto! <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/stmike\/tg-bot-smart-thoughts\"><b><i>GitHub<\/i><\/b><\/a><\/noindex>Kloni projekt i instaliraj ovisnosti: <\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram-bota u Yandex.Cloudu\" src=\"\/wp-content\/uploads\/2020\/02\/2ad0e96a2169d0859ccec836f151d3ea.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKlonirajte projekt i instalirajte zavisnosti:<\/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>\nUnesite potrebne izmjene u datoteku <i>index.js<\/i> (opcionalno; mo\u017eete ni\u0161ta ne mijenjati). Stvorite <i>zip<\/i>-zip arhivu s datotekom <i>index.js<\/i> i mapom <i>node_modules<\/i> unutar, na primjer, pod nazivom <i>smart.zip<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram-bota u Yandex.Cloudu\" src=\"\/wp-content\/uploads\/2020\/02\/c8c97707515338a01f8b8ed7f743c4a5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSada se prebacite u konzolu do na\u0161ih <i>Yandex-funkcije<\/i>, odaberite karticu <i>ZIP arhiva<\/i>, pritisnite gumb <i>Odaberi datoteku<\/i>, i u\u010ditajte na\u0161u arhivu <i>smart.zip<\/i>. Na kraju, u gornjem desnom kutu pritisnite gumb <i>Kreiraj verziju<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram-bota u Yandex.Cloudu\" src=\"\/wp-content\/uploads\/2020\/02\/96634c132848278ecc00a509e61b13f0.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZa nekoliko sekundi, kada se funkcija a\u017eurira, ponovo testiramo na\u0161eg bota. Sada vi\u0161e ne 'zrcali', ve\u0107 isporu\u010duje pametne misli!<\/p>\n<p><img decoding=\"async\" alt=\"Gradimo Telegram-bota u Yandex.Cloudu\" src=\"\/wp-content\/uploads\/2020\/02\/0c683826b5ef2bdbbd0253de4691900a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTo je to za danas. Drugi \u010dlanci slijede. Onima kojima je ovo zanimljivo \u2013 pretplatite se na obavijesti o novim \u010dlancima. Mo\u017eete se pretplatiti ovdje ili na <i>Telegram<\/i>-kanal <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/it_tutorial_zahar\"><i>IT Tutorial Zahar<\/i><\/a><\/noindex>, ili <i>Twitter<\/i> <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/mikezaharov\"><i>@mikezaharov<\/i><\/a><\/noindex>.<\/p>\n<h2>Linkovi<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/stmike\/tg-bot-smart-thoughts\"><b><i>Kod 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.Cloudu\" 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.5 - 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\/hr\/blog\/stroim-telegram-bot-v-yandeks-oblake\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"hr_HR\" \/>\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\/hr\/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\udd47Gradimo Telegram-bota u Yandex.oblaku | ProHoster","description":"Danas \u0107emo skupiti koriste\u0107i dostupne materijale.","canonical_url":"https:\/\/prohoster.info\/hr\/blog\/stroim-telegram-bot-v-yandeks-oblake","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hr_HR","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\/hr\/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\/hr\/wp-json\/wp\/v2\/posts\/41315","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/comments?post=41315"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts\/41315\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media\/41316"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media?parent=41315"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/categories?post=41315"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/tags?post=41315"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}