{"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\/lv\/blog\/stroim-telegram-bot-v-yandeks-oblake","title":{"rendered":"Veidojam Telegram robotu Yandex.M\u0101ko\u0146os","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Veidojam Telegram robotu Yandex.M\u0101ko\u0146os\" src=\"\/wp-content\/uploads\/2020\/02\/4a758744e4fc6bc797d270fa1bc42ef3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u0160odien m\u0113s no pieejamajiem materi\u0101liem sav\u0101ksim <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.ru\/\"><i>Yandex.M\u0101kon\u012b<\/i><\/a><\/noindex> <i>Telegram-botu<\/i> izmantojot <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.ru\/services\/functions\"><i>Yandex Cloud Functions<\/i><\/a><\/noindex> (vai <i>Yandex funkcijas<\/i> \u2014 \u012bsum\u0101) un <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.ru\/services\/storage\"><i>Yandex Object Storage<\/i><\/a><\/noindex> (vai <i>Objektu glab\u0101tuve<\/i> \u2014 skaidr\u012bbas labad). Kods b\u016bs uz <i>Node.js<\/i>. Tom\u0113r ir viens sakar\u012bgs apst\u0101klis \u2014 k\u0101da organiz\u0101cija, kuru nosauksim par <i>Roskomcenz\u016bra<\/i> (cenz\u016bra ir aizliegta ar Krievijas Feder\u0101cijas Satversmes 29. pantu), ne\u013cauj Krievijas interneta pakalpojumu sniedz\u0113jiem p\u0101rs\u016bt\u012bt piepras\u012bjumus uz <i>Telegram API<\/i> adres\u0113: <code>https:\/\/api.telegram.org\/<\/code>. Nu, m\u0113s to nedar\u012bsim \u2014 ja nav, tad nav. Galu gal\u0101 m\u016bsu braucien\u0101 ir t\u0101 sauktie <i>webhooki<\/i> \u2014 ar to pal\u012bdz\u012bbu m\u0113s neveicam piepras\u012bjumus uz konkr\u0113tu adresi, bet vienk\u0101r\u0161i s\u016bt\u0101m savu piepras\u012bjumu k\u0101 atbildi uz jebkuru piepras\u012bjumu uz mums. Tas noz\u012bm\u0113, k\u0101 Odess\u0101 \u2014 atbildam ar jaut\u0101jumu uz jaut\u0101jumu. T\u0101p\u0113c <i>Telegram API<\/i> m\u016bsu kod\u0101 tas neb\u016bs.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<b class=\"spoiler_title\">Atskaite<\/b><i>\u0160aj\u0101 rakst\u0101 min\u0113t\u0101s valstisk\u0101s organiz\u0101cijas nosaukumi ir izdom\u0101ti, un iesp\u0113jamie sakrit\u012bbas ar re\u0101li eso\u0161u organiz\u0101ciju nosaukumiem ir nejau\u0161i. <\/i> <\/p>\n<p>T\u0101tad, m\u0113s izveidosim botu, kas m\u016bs apg\u0101d\u0101s ar gudr\u0101m dom\u0101m. Tie\u0161i t\u0101du, k\u0101 att\u0113l\u0101:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/SmartThoughtsBot\"><img decoding=\"async\" alt=\"Veidojam Telegram robotu Yandex.M\u0101ko\u0146os\" src=\"\/wp-content\/uploads\/2020\/02\/6b7aca248999621a20f8a0ec29e75c75.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Varat to izm\u0113\u0123in\u0101t darb\u012bb\u0101 \u2014 l\u016bk, v\u0101rds: <b><i>@SmartThoughtsBot<\/i><\/b>. Paman\u012bj\u0101t pogu <i>\u00abAlises prasme\u00bb<\/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>Alises prasmes<\/i>, t.i., tas veic t\u0101s pa\u0161as funkcijas, ko <i>Alises prasme<\/i> un, iesp\u0113jams, vi\u0146i var\u0113s m\u012bl\u012bgi l\u012bdzpast\u0101v\u0113t, reklam\u0113jot viens otru. Par to, k\u0101 izveidot <i>prasmju Gudr\u0101s Domas<\/i> st\u0101st\u012bts rakst\u0101 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/465275\/\"><b><i>Alise apg\u016bst prasmi<\/i><\/b><\/a><\/noindex>. Tagad (p\u0113c da\u017e\u0101m izmai\u0146\u0101m, kas veiktas p\u0113c min\u0113t\u0101 raksta public\u0113\u0161anas) \u0161\u012b <i>prasme<\/i> izskat\u012bsies aptuveni t\u0101:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/alice.ya.ru\/s\/f785af07-4578-4a6b-95ae-485bd803ae20\"><img decoding=\"async\" alt=\"Veidojam Telegram robotu Yandex.M\u0101ko\u0146os\" src=\"\/wp-content\/uploads\/2020\/02\/e92c340f8d947ba9252e0fcab0511ce6.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<h2>Bota izveido\u0161ana<\/h2>\n<p>\nEs v\u0113los, lai \u0161is nor\u0101d\u012bjums b\u016btu noder\u012bgs visiem, tostarp ar\u012b ies\u0101c\u0113jiem 'botu veidot\u0101jiem'. T\u0101p\u0113c \u0161aj\u0101 noda\u013c\u0101 es diezgan detaliz\u0113ti aprakst\u012b\u0161u, k\u0101 visp\u0101r izveidot <i>Telegram<\/i>'e botus. \u012apa\u0161i tiem, kam \u0161\u012b inform\u0101cija nav nepiecie\u0161ama \u2014 p\u0101rejiet uz n\u0101kamaj\u0101m noda\u013c\u0101m. <\/p>\n<p>Atveram lietotni <i>Telegaram<\/i>, izsaucam visu botu t\u0113vu (vi\u0146iem viss k\u0101 cilv\u0113kiem) \u2014 <b><i>@BotFather<\/i><\/b> \u2014 un vispirms dodam vi\u0146am komandu \/help, lai atsvaidzin\u0101tu atmi\u0146\u0101, ko m\u0113s varam dar\u012bt. Tagad m\u016bs interes\u0113s komanda <i>\/newbot<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Veidojam Telegram robotu Yandex.M\u0101ko\u0146os\" src=\"\/wp-content\/uploads\/2020\/02\/12a0e84dd712e0c74dee0463f1b44e74.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJo \u0161eit aprakst\u012btais bots jau ir izveidots, demonstr\u0101cijas nol\u016bkos es uz \u012bsu laiku izveido\u0161u citu botu (p\u0113c tam to dz\u0113s\u012b\u0161u). Nosauk\u0161u to par <i>DemoHabrBot<\/i>. V\u0101rdi (<i>username<\/i>) visiem Telegram botiem j\u0101pabeidz ar v\u0101rdu <i>bot<\/i>, piem\u0113ram: <i>MyCoolBot<\/i> vai <i>my_cool_bot<\/i> \u2014 tas ir priek\u0161 botiem. Bet vispirms dodam botam nosaukumu (<i>name<\/i>) \u2014 un tas ir cilv\u0113kiem. Nosaukums var b\u016bt jebkur\u0101 valod\u0101, satur\u0113t atstarpi, nav j\u0101beidzas ar v\u0101rdu <i>bot<\/i>, un pat nav j\u0101b\u016bt unik\u0101lam. \u0160aj\u0101 piem\u0113r\u0101 es nosaucu \u0161o robotu <i>Demo Habr<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Veidojam Telegram robotu Yandex.M\u0101ko\u0146os\" src=\"\/wp-content\/uploads\/2020\/02\/682ecf64724cabcfef96639d6de87521.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTagad izv\u0113lamies robotam v\u0101rdu (<i>username<\/i>, t\u0101du, kas ir robotiem). Nosauksim to par <i>DemoHabrBot<\/i>. Viss, kas attiec\u0101s uz robota nosaukumu (<i>name<\/i>) visp\u0101r nepieder pie t\u0101 v\u0101rda \u2014 <i>username<\/i> (vai attiecas, bet ar precizit\u0101ti l\u012bdz pret\u0113jai pusi). P\u0113c tam, kad esam veiksm\u012bgi izveidoju\u0161i unik\u0101lo robota v\u0101rdu, mums ir j\u0101kop\u0113 un j\u0101saglab\u0101 (stingr\u0101 slepen\u012bb\u0101!) tokens, kas par\u0101d\u012bts ekr\u0101nuz\u0146\u0113mum\u0101 ar sarkano bultu. Ar t\u0101 pal\u012bdz\u012bbu m\u0113s dr\u012bzum\u0101 iestat\u012bsim ieb\u016bv\u0113to <i>Telegram<\/i>'a webhuku uz m\u016bsu <i>Yandex funkciju<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Veidojam Telegram robotu Yandex.M\u0101ko\u0146os\" src=\"\/wp-content\/uploads\/2020\/02\/78254946c9f763d212a1952bac6c706f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUn tagad dosim komandu visu robotu t\u0113vam: <i>\/mybots<\/i>, un vi\u0146\u0161 par\u0101d\u012bs mums visu m\u016bsu izveidoto robotu sarakstu. Atst\u0101sim pagaid\u0101m nov\u0101rt\u0101 neseno robotu <i>Demo Habr<\/i> (tas tika izveidots, lai par\u0101d\u012btu, k\u0101 izveidot robotus, bet m\u0113s to v\u0113l izmantosim \u0161odien cit\u0101m demonstr\u0101cijas vajadz\u012bb\u0101m), un apskat\u012bsim robotu <i>Gudr\u0101s Domas<\/i> (<i>@SmartThoughtsBot<\/i>). Noklik\u0161\u0137in\u0101m sarakst\u0101 uz robota v\u0101rda pogas.<\/p>\n<p><img decoding=\"async\" alt=\"Veidojam Telegram robotu Yandex.M\u0101ko\u0146os\" src=\"\/wp-content\/uploads\/2020\/02\/98434725cb0d7441ec5f2552b0b508a8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u0160eit m\u0113s varam konfigur\u0113t m\u016bsu robotu. Nospie\u017eot pogu <i>Edit\u2026<\/i> m\u0113s p\u0101riesim uz k\u0101das opcijas redi\u0123\u0113\u0161anu. Piem\u0113ram, noklik\u0161\u0137inot uz pogas <i>Edit Name<\/i> m\u0113s varam main\u012bt robota nosaukumu, sakot, viet\u0101 <i>Gudr\u0101s Domas<\/i>, uzrakst\u012bt <i>Trak\u0101s Idejas<\/i>. <i>Botpic<\/i> \u2014 tas ir robota avatar, tam j\u0101b\u016bt ne maz\u0101k k\u0101 <i>150 x 150 px<\/i>. <i>Apraksts<\/i> \u2014 tas ir \u012bss apraksts, ko lietot\u0101js redz, kad pirmo reizi palai\u017e robotu, k\u0101 atbildi uz jaut\u0101jumu: <i>Ko \u0161is robots var dar\u012bt?<\/i> <i>Par<\/i> \u2014 v\u0113l \u012bs\u0101ks apraksts, kas tiek nos\u016bt\u012bts kop\u0101 ar saiti uz robotu (<code>https:\/\/t.me\/SmartThoughtsBot<\/code>) vai skatoties inform\u0101ciju par to.<\/p>\n<p><img decoding=\"async\" alt=\"Veidojam Telegram robotu Yandex.M\u0101ko\u0146os\" src=\"\/wp-content\/uploads\/2020\/02\/f15ba92be1bfea827273f79616bd2a3a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMums paliku\u0161i tikai j\u0101sak\u0101rto komandas. T\u0101p\u0113c nospie\u017eam pogu <i>Edit Commands<\/i>. Lai standartiz\u0113tu lietot\u0101ju praksi <i>Telegram<\/i> ieteicams vienm\u0113r izmantot divas komandas: <i>\/start<\/i> un <i>\/help<\/i>, bet ja robotam ir nepiecie\u0161ami iestat\u012bjumi \u2014 papildu komandu \/settings. M\u016bsu robots ir vienk\u0101r\u0161s k\u0101 bumba, t\u0101p\u0113c vi\u0146am pagaid\u0101m iestat\u012bjumi nav nepiecie\u0161ami. Ierakst\u0101m divas pirm\u0101s komandas, kuras m\u0113s v\u0113l\u0101k apstr\u0101d\u0101sim kod\u0101. Tagad, ja ievades lauk\u0101 lietot\u0101js ievad\u012bs sl\u012bpsv\u012btru (sl\u012bpos simbolu: \/), par\u0101d\u012bsies komandu saraksts \u0101trai izv\u0113lei. Viss k\u0101 att\u0113l\u0101: pa kreisi \u2014 iestat\u0101m komandas caur robotu t\u0113vu; pa labi \u0161\u012bs komandas jau ir pieejamas lietot\u0101jiem m\u016bsu robot\u0101.<\/p>\n<p><img decoding=\"async\" alt=\"Veidojam Telegram robotu Yandex.M\u0101ko\u0146os\" src=\"\/wp-content\/uploads\/2020\/02\/b536b5fe7b8aad3d68877a7693ea0e6f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Yandex funkcija<\/h2>\n<p>\nTagad, kad m\u016bsu robots izveidots, p\u0101rejam uz <i>Yandex. M\u0101ko\u0146i<\/i>, lai izveidotu funkciju, kas izpild\u012bs m\u016bsu bota kodu. Ja v\u0113l neesat str\u0101d\u0101jis ar <i>Yandex.Cloud<\/i> , iepaz\u012bstieties ar materi\u0101lu <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/464739\/\"><b><i>Alisa Bitrix zem\u0113<\/i><\/b><\/a><\/noindex>, tad \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/440374\/\"><b><i>Yandex funkcijas s\u016bta e-pastu<\/i><\/b><\/a><\/noindex>. Es esmu gandr\u012bz dro\u0161s, ka \u0161ie divi relativi \u012bsie raksti jums piln\u012bgi pietiks, lai pamatos izprastu t\u0113mu.<\/p>\n<p>T\u0101tad, konsol\u0113 <i>Yandex.Cloud<\/i> kreisaj\u0101 navig\u0101cijas izv\u0113ln\u0113 izv\u0113lamies punktu <i>Cloud Functions<\/i>, un p\u0113c tam nospie\u017eam pogu <i>Izveidot funkciju<\/i>. Pie\u0161\u0137iram tam nosaukumu un sev \u2013 \u012bsu aprakstu.<\/p>\n<p><img decoding=\"async\" alt=\"Veidojam Telegram robotu Yandex.M\u0101ko\u0146os\" src=\"\/wp-content\/uploads\/2020\/02\/67f313c60481c5ef84af8a28b4934621.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP\u0113c pogas nospie\u0161anas <i>Izveidot<\/i> un p\u0113c da\u017e\u0101m sekund\u0113m, jaun\u0101 funkcija par\u0101d\u012bsies visu funkciju sarakst\u0101. Nospiediet uz t\u0101s nosaukuma \u2013 tas m\u016bs aizved\u012bs uz <i>P\u0101rskats<\/i> m\u016bsu funkcijas lapu. \u0160eit j\u0101iesl\u0113dz (<i>Iesl\u0113gts<\/i>) p\u0101rsl\u0113gs <i>Publisk\u0101 funkcija<\/i>, lai t\u0101 b\u016btu pieejama no \u0101r\u0113j\u0101 (no <i>Yandex.Cloud<\/i>) pasaules, un lauku v\u0113rt\u012bbas <i>Aicin\u0101juma saite<\/i> un <i>Identifikators<\/i> \u2014 j\u0101glab\u0101 dzi\u013c\u0101 nosl\u0113pum\u0101 no visiem, iz\u0146emot sevi un Telegram&#8217;u, lai j\u016bsu funkciju nevar\u0113tu izsaukt da\u017e\u0101di kr\u0101pnieki.<\/p>\n<p><img decoding=\"async\" alt=\"Veidojam Telegram robotu Yandex.M\u0101ko\u0146os\" src=\"\/wp-content\/uploads\/2020\/02\/3ba45d357965d567ba33ab0ee65d2eb4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTagad, izmantojot kreiso izv\u0113lni, p\u0101rejam uz <i>Redaktors<\/i> funkcij\u0101m. Lai pagaid\u0101m atliekam mal\u0101 m\u016bsu <i>Gudr\u0101s Domas<\/i>, un izveidosim minim\u0101lu \u0161ablona funkciju, lai p\u0101rbaud\u012btu m\u016bsu bota darb\u012bbu... Tom\u0113r \u0161aj\u0101 kontekst\u0101 \u0161\u012b funkcija ir m\u016bsu bots... \u012as\u0101k sakot, tagad un tie\u0161i \u0161eit m\u0113s izveidosim vienk\u0101r\u0161\u0101ko botu, kas \"atspogu\u013cos\" (t.i., atgriez\u012bs) lietot\u0101ju piepras\u012bjumus. \u0160o \u0161ablonu var izmantot vienm\u0113r, izveidojot jaunus Telegram botus, lai p\u0101rliecin\u0101tos, ka savienojums ar <i>Telegram&#8217;<\/i>darbojas norm\u0101li. Nospiediet <i>Izveidot failu<\/i>, nosaucam to par <i>index.js<\/i>, un tie\u0161saistes <i>Koda redaktor\u0101<\/i> iel\u012bm\u0113jam \u0161aj\u0101 fail\u0101 sekojo\u0161o kodu:<\/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>\nKonsole Yandex.Cloud tas izskat\u012bsies aptuveni t\u0101:<\/p>\n<p><img decoding=\"async\" alt=\"Veidojam Telegram robotu Yandex.M\u0101ko\u0146os\" src=\"\/wp-content\/uploads\/2020\/02\/f0204be84468c9ae7ec1b9e4ca0dfdd9.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nT\u0101l\u0101k nedaudz zem\u0101k nor\u0101d\u0101m <i>Ieie\u0161anas punkts<\/i> \u2014 <i>index.bot<\/i>, kur <i>index<\/i> tas ir faila nosaukums (<i>index.js<\/i>), un <i>bot<\/i> \u2014 funkcijas nosaukums (<i>module.exports.bot<\/i>). Visas p\u0101r\u0113j\u0101s jomas atst\u0101jam \u00abk\u0101 ir\u00bb, un labaj\u0101 aug\u0161\u0113j\u0101 st\u016br\u012b nospie\u017eam pogu <i>Izveidot versiju<\/i>. P\u0113c da\u017e\u0101m sekund\u0113m \u0161\u012b funkcija versija tiks izveidota. Dr\u012bz, p\u0113c t\u012bmek\u013ca atgriezenisk\u0101s saites test\u0113\u0161anas <i>, m\u0113s izveidosim jaunu versiju \u2014<\/i>Tagad, kad mums ir izveidota <i>Gudr\u0101s Domas<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Veidojam Telegram robotu Yandex.M\u0101ko\u0146os\" src=\"\/wp-content\/uploads\/2020\/02\/48cd898f83bdc29d124600828bf2143f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Objektu glab\u0101tuve<\/h2>\n<p>\n, \u013caujiet, kam\u0113r m\u0113s esam konsol\u0113 <i>Yandex funkcija<\/i>, izveidot t\u0101 d\u0113v\u0113to ba\u0137et ( <i>Yandex.Cloud<\/i>, izveidosim t.s. bucket (<i>bucket<\/i>, proti tam, kur iem\u0113ram, nav pu\u0161\u0137is) att\u0113lu failu glab\u0101\u0161anai, kas tiks izmantoti m\u016bsu bot\u0101 <i>Gudr\u0101s Domas<\/i>. Kreisaj\u0101 navig\u0101cijas izv\u0113ln\u0113 izv\u0113lamies punktu <i>Object Storage<\/i>, nospie\u017eam pogu <i>Izveidot tvertni<\/i>, izdom\u0101jam nosaukumu, piem\u0113ram, <i>att\u0113lu-tvertne<\/i>, un, galvenais, <i>Piek\u013cuve objektu las\u012b\u0161anai<\/i> j\u0101dara publiska \u2014 cit\u0101di Telegram nesaskat\u012bs m\u016bsu att\u0113lus. Visus p\u0101r\u0113jos laukus atst\u0101jam bez izmai\u0146\u0101m. Nospie\u017eam pogu <i>Izveidot tvertni<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Veidojam Telegram robotu Yandex.M\u0101ko\u0146os\" src=\"\/wp-content\/uploads\/2020\/02\/c890a42f7d043e03300434b2c4a0258b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP\u0113c tam visu tvert\u0146u saraksts var izskat\u012bties apm\u0113ram t\u0101 (ja t\u0101 ir j\u016bsu vien\u012bg\u0101 tvertne):<\/p>\n<p><img decoding=\"async\" alt=\"Veidojam Telegram robotu Yandex.M\u0101ko\u0146os\" src=\"\/wp-content\/uploads\/2020\/02\/34701231536742a7889b200ff49b08b1.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTagad es pied\u0101v\u0101ju nospiest uz tvertnes nosaukuma un iek\u0161\u0101 izveidot map\u012bti, lai k\u0101rtotu att\u0113lu glab\u0101\u0161anu da\u017e\u0101diem saviem lietojumiem. Piem\u0113ram, Telegram botam <i>Gudr\u0101s Domas<\/i> es izveidoju map\u012bti ar nosaukumu <i>tg-bot-izspert\u0101s-domas<\/i> (nerun\u0101jiet, es saprat\u012b\u0161u \u0161o \u0161ifru). Izveidojiet ar\u012b k\u0101du.<\/p>\n<p><img decoding=\"async\" alt=\"Veidojam Telegram robotu Yandex.M\u0101ko\u0146os\" src=\"\/wp-content\/uploads\/2020\/02\/c5707b5ba54fea5b548d62e097328650.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTagad var nospiest uz mapes nosaukuma, ieiet taj\u0101 un aug\u0161upiel\u0101d\u0113t failus:<\/p>\n<p><img decoding=\"async\" alt=\"Veidojam Telegram robotu Yandex.M\u0101ko\u0146os\" src=\"\/wp-content\/uploads\/2020\/02\/ead320e587e1d161e2cd54a94b4ea0d4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUn nospie\u017eot uz faila nosaukuma \u2014 ieg\u016bt to <i>URL<\/i> lieto\u0161anai m\u016bsu bot\u0101 un visp\u0101r \u2014 kaut kur citur (bet, nep\u0101rpublic\u0113jiet \u0161o <i>URL<\/i> pavisam lieki, jo datpl\u016bsma no <i>Objektu kr\u0101tuves<\/i> tiek maks\u0101ta).<\/p>\n<p><img decoding=\"async\" alt=\"Veidojam Telegram robotu Yandex.M\u0101ko\u0146os\" src=\"\/wp-content\/uploads\/2020\/02\/07a833430b0584161423f363f6685306.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nT\u0101tad, tas ar\u012b viss par <i>Objektu kr\u0101tuvi<\/i>. Tagad j\u016bs zin\u0101siet, ko dar\u012bt, kad redz\u0113siet aicin\u0101jumu aug\u0161upiel\u0101d\u0113t tur failus.<\/p>\n<h2>Webhooks<\/h2>\n<p>\nTagad m\u0113s uzst\u0101d\u012bsim <i>webhook<\/i> \u2014 t.i., kad bots sa\u0146ems atjaunin\u0101jumu (piem\u0113ram, zi\u0146ojumu no lietot\u0101ja), no servera <i>Telegram<\/i> m\u016bsu <i>Yandex funkciju<\/i> tiks nos\u016bt\u012bta piepras\u012bjuma (<i>request<\/i>) ar datiem. \u0160\u012b ir rindi\u0146a, ko var vienk\u0101r\u0161i ielikt p\u0101rl\u016bkprogrammas adreses lauk\u0101 un p\u0113c tam atjaunin\u0101t lapu (to j\u0101dara tikai vienu reizi): <code>https:\/\/api.telegram.org\/bot{bot_token}\/setWebHook?url={webhook_url}<\/code><br \/>\nVien\u012bgais, ko nomain\u0101m <i>{bot_token}<\/i> uz tokenu, ko sa\u0146\u0113m\u0101m no bota-vec\u0101ka, izveidojot m\u016bsu botu, bet <i>{webhook_url}<\/i> uz <i>URL<\/i> m\u016bsu <i>Yandex funkcijas<\/i>. Min\u016bti! Bet vai <i>Roskomcenz\u016bra<\/i> aizliedz pakalpojumu sniedz\u0113jiem Krievij\u0101 apkalpot adresi <code>https:\/\/api.telegram.org<\/code>. J\u0101, tas ir taisn\u012bba. Bet izdom\u0101jiet kaut ko. Galu gal\u0101 varb\u016bt l\u016bgt savam vecmammai Ukrain\u0101, Izra\u0113l\u0101 vai Kan\u0101d\u0101 \u2014 tur nav nek\u0101du \u00abkrievu cenzoru\u00bb, un viens Dievs zina, k\u0101 cilv\u0113ki dz\u012bvo bez t\u0101. Galu gal\u0101, piepras\u012bjuma-atbildes proces\u0101 instal\u0113jot webhook, tam j\u0101izskat\u0101s t\u0101:<\/p>\n<p><img decoding=\"async\" alt=\"Veidojam Telegram robotu Yandex.M\u0101ko\u0146os\" src=\"\/wp-content\/uploads\/2020\/02\/713834a1665520d3e471cd3d1831ac06.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTest\u0113jam. Tam j\u0101b\u016bt \u00abspogu\u013cojamiem\u00bb.<\/p>\n<p><img decoding=\"async\" alt=\"Veidojam Telegram robotu Yandex.M\u0101ko\u0146os\" src=\"\/wp-content\/uploads\/2020\/02\/3ab0e97f9b0ca06295fe7f5f793aab2c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nT\u0101 ar\u012b ir. M\u016bsu apsveikumi \u2014 tagad <i>Yandex funkcija<\/i> ir k\u013cuvis <i>Telegram<\/i>-botu!<\/p>\n<h2>Gudr\u0101s Domas<\/h2>\n<p>\nTagad dar\u0101m Gudr\u0101s Domas. Kods ir atv\u0113rts un atrodas <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/stmike\/tg-bot-smart-thoughts\"><b><i>GitHub<\/i><\/b><\/a><\/noindex>. Tas ir labi koment\u0113ts, un tam ir tikai simts rindi\u0146u. Lasiet to k\u0101 operas di\u017einieces libreto! <\/p>\n<p><img decoding=\"async\" alt=\"Veidojam Telegram robotu Yandex.M\u0101ko\u0146os\" src=\"\/wp-content\/uploads\/2020\/02\/2ad0e96a2169d0859ccec836f151d3ea.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKlon\u0113jiet projektu un instal\u0113jiet atkar\u012bbas:<\/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>\nVeiciet nepiecie\u0161am\u0101s izmai\u0146as fail\u0101 <i>index.js<\/i> (p\u0113c izv\u0113les; varat neko nemain\u012bt). Izveidojiet <i>zip<\/i>-arh\u012bvu ar failu <i>index.js<\/i> un mapi <i>node_modules<\/i> iek\u0161pus\u0113, piem\u0113ram, ar nosaukumu <i>smart.zip<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Veidojam Telegram robotu Yandex.M\u0101ko\u0146os\" src=\"\/wp-content\/uploads\/2020\/02\/c8c97707515338a01f8b8ed7f743c4a5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTagad p\u0101rejiet uz m\u016bsu <i>Yandex funkcijas<\/i>, izv\u0113lieties cilni <i>ZIP-arh\u012bvs<\/i>, nospiediet pogu <i>Izv\u0113l\u0113ties failu<\/i>, un aug\u0161upiel\u0101d\u0113jiet m\u016bsu arh\u012bvu <i>smart.zip<\/i>. Beig\u0101s, aug\u0161\u0113j\u0101 labaj\u0101 st\u016br\u012b nospiediet pogu <i>Izveidot versiju<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Veidojam Telegram robotu Yandex.M\u0101ko\u0146os\" src=\"\/wp-content\/uploads\/2020\/02\/96634c132848278ecc00a509e61b13f0.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP\u0113c da\u017e\u0101m sekund\u0113m, kad funkcija tiks atjaunin\u0101ta, p\u0101rbaud\u012bsim m\u016bsu robotu v\u0113lreiz. Tagad tas jau neliekas k\u0101 \"spogulis\", bet sniedz gudras domas!<\/p>\n<p><img decoding=\"async\" alt=\"Veidojam Telegram robotu Yandex.M\u0101ko\u0146os\" src=\"\/wp-content\/uploads\/2020\/02\/0c683826b5ef2bdbbd0253de4691900a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUz \u0161o br\u012bdi viss. Citas raksti sekos. Kam l\u012bdz\u012bgs ir interesants \u2014 pierakstieties jaunumu pazi\u0146ojumiem. Pierakst\u012bties var \u0161eit, vai uz <i>Telegram<\/i>-kan\u0101lu <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/it_tutorial_zahar\"><i>IT Tutorial Zahars<\/i><\/a><\/noindex>, vai <i>Twitter<\/i> <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/mikezaharov\"><i>@mikezaharov<\/i><\/a><\/noindex>.<\/p>\n<h2>Saites<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/stmike\/tg-bot-smart-thoughts\"><b><i>Kods GitHub<\/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: Ievads izstr\u0101d\u0101t\u0101jiem<\/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>Ziedojumi<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/yasobe.ru\/na\/vui\"><img decoding=\"async\" alt=\"Veidojam Telegram robotu Yandex.M\u0101ko\u0146os\" src=\"\/wp-content\/uploads\/2020\/02\/250f8765713080fcbbdaf56c04dc882f.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<br \/>Avots: <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\/lv\/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=\"lv_LV\" \/>\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\/lv\/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\udd47Veidojam Telegram robotu Yandex.M\u0101ko\u0146os | ProHoster","description":"\u0160odien no pieejamajiem materi\u0101liem m\u0113s saliksim.","canonical_url":"https:\/\/prohoster.info\/lv\/blog\/stroim-telegram-bot-v-yandeks-oblake","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"lv_LV","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\/lv\/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\/lv\/wp-json\/wp\/v2\/posts\/41315","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/comments?post=41315"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts\/41315\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/media\/41316"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/media?parent=41315"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/categories?post=41315"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/tags?post=41315"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}