{"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\/no\/blog\/stroim-telegram-bot-v-yandeks-oblake","title":{"rendered":"Bygger en Telegram-bot i Yandex.Cloud","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Bygger en Telegram-bot i Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/4a758744e4fc6bc797d270fa1bc42ef3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI dag skal vi lage en i <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.ru\/\"><i>Yandex.Cloud<\/i><\/a><\/noindex> <i>Telegram-bot<\/i> med bruk av <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.ru\/services\/functions\"><i>Yandex Cloud Functions<\/i><\/a><\/noindex> (or <i>Yandex-funksjoner<\/i> \u2014 for korthets skyld) og <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.ru\/services\/storage\"><i>Yandex Object Storage<\/i><\/a><\/noindex> (or <i>Objektdatalager<\/i> \u2014 for tydelighet). Koden vil v\u00e6re p\u00e5 <i>Node.js<\/i>. Men det er en delikat situasjon \u2014 en organisasjon kalt, la oss si, <i>Roskomnadzor<\/i> (sensur er forbudt ved artikkel 29 i den russiske grunnloven), forbyr internettleverand\u00f8rer i Russland \u00e5 sende foresp\u00f8rselene til <i>Telegram API<\/i> p\u00e5 adressen: <code>https:\/\/api.telegram.org\/<\/code>. Vel, vi lar det v\u00e6re \u2014 ingen foresp\u00f8rsel, ingen foresp\u00f8rsel. For vi har s\u00e5kalte <i>webhooks<\/i> \u2014 med deres hjelp sender vi ikke foresp\u00f8rslene til en spesifikk adresse, men bare v\u00e5rt svar som respons p\u00e5 enhver foresp\u00f8rsel til oss. S\u00e5, som i Odessa \u2014 vi svarer med et sp\u00f8rsm\u00e5l p\u00e5 et sp\u00f8rsm\u00e5l. Derfor <i>Telegram API<\/i> vil ikke v\u00e6re i koden v\u00e5r.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<b class=\"spoiler_title\">Ansvarsfraskrivelse<\/b><i>Navnene p\u00e5 statlige organisasjoner nevnt i denne artikkelen er fiktive, og eventuelle likheter med eksisterende organisasjoner er tilfeldige. <\/i> <\/p>\n<p>S\u00e5 vi skal lage en bot som gir oss smarte tanker. N\u00f8yaktig som p\u00e5 bildet:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/SmartThoughtsBot\"><img decoding=\"async\" alt=\"Bygger en Telegram-bot i Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/6b7aca248999621a20f8a0ec29e75c75.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Du kan teste den i aksjon \u2014 her er navnet: <b><i>@SmartThoughtsBot<\/i><\/b>. La oss legge merke til knappen <i>\u00abAlisa-ferdighet\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>Alisa-ferdigheten<\/i>, det vil si at den utf\u00f8rer de samme funksjonene som <i>Alisa-ferdigheten<\/i> og muligens at de kan eksistere fredelig sammen og reklamere for hverandre. Hvordan lage <i>Ferdighet for Smarte Tanker<\/i> er forklart i artikkelen <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/465275\/\"><b><i>Alisa f\u00e5r en ferdighet<\/i><\/b><\/a><\/noindex>. N\u00e5 (etter \u00e5 ha gjort noen endringer etter publiseringen av den nevnte artikkelen) vil denne <i>ferdigheten<\/i> se omtrent slik ut p\u00e5 smarttelefonen:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/alice.ya.ru\/s\/f785af07-4578-4a6b-95ae-485bd803ae20\"><img decoding=\"async\" alt=\"Bygger en Telegram-bot i Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/e92c340f8d947ba9252e0fcab0511ce6.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<h2>Lager en bot<\/h2>\n<p>\nJeg h\u00e5per at denne veiledningen vil v\u00e6re nyttig for alle, inklusive nybegynnere i \u00abbot-bygging\u00bb. Derfor vil jeg i denne delen beskrive ganske detaljert hvordan man faktisk lager <i>Telegram<\/i>\u2018e b\u00e5tiv. For dei som ikkje treng denne informasjonen \u2014 g\u00e5 vidare til dei neste delane. <\/p>\n<p>\u00c5pne applikasjonen <i>Telegaram<\/i>, kaller faren til alle boter (de har alt som folk) \u2014 <b><i>@BotFather<\/i><\/b> \u2014 og f\u00f8rst gir vi ham kommandoen \/help for \u00e5 friske opp hukommelsen om hva vi kan gj\u00f8re. N\u00e5 er vi interessert i kommandoen <i>\/newbot<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Bygger en Telegram-bot i Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/12a0e84dd712e0c74dee0463f1b44e74.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSiden boten som beskrives her allerede er laget, for demonstrasjonsform\u00e5l vil jeg lage en annen bot for en kort tid (deretter vil jeg slette den). Jeg vil kalle den <i>DemoHabrBot<\/i>. Navnene (<i>username<\/i>) p\u00e5 alle telegram-boter m\u00e5 slutte med ordet <i>bot<\/i>, for eksempel: <i>MyCoolBot<\/i> eller <i>my_cool_bot<\/i> \u2014 det gjelder boter. Men f\u00f8rst gir vi boten et navn (<i>name<\/i>) \u2014 og dette er for folk. Navnet kan v\u00e6re p\u00e5 hvilket som helst spr\u00e5k, inneholde mellomrom, og trenger ikke \u00e5 slutte med et bestemt ord <i>bot<\/i>, og det trenger heller ikke \u00e5 v\u00e6re unikt. I dette eksemplet har jeg kalt denne boten <i>Demo Habr<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Bygger en Telegram-bot i Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/682ecf64724cabcfef96639d6de87521.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00e5 velger vi et navn for boten (<i>username<\/i>, det som er for botene). La oss kalle den <i>DemoHabrBot<\/i>. Alt som gjaldt botens navn (<i>name<\/i>) har ingenting \u00e5 gj\u00f8re med dens identitet \u2014 <i>username<\/i> (eller det har noe \u00e5 gj\u00f8re med det, men p\u00e5 en helt motsatt m\u00e5te). Etter at vi har opprettet et unikt navn for boten, m\u00e5 vi kopiere og oppbevare (i streng hemmelighet!) tokenet vist p\u00e5 skjermbildet med den r\u00f8de pilen. Med det vil vi senere sette opp en webhook fra <i>Telegram<\/i>\u2018en webhook til v\u00e5r <i>Yandex-funksjon<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Bygger en Telegram-bot i Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/78254946c9f763d212a1952bac6c706f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00e5 gir vi kommandoen til alle boters far: <i>\/mybots<\/i>, og han vil vise oss listen over alle botene vi har opprettet. La oss forel\u00f8pig la den nyopprettede boten v\u00e6re <i>Demo Habr<\/i> (den ble laget for \u00e5 vise hvordan man oppretter boboter, men vi vil bruke den senere til andre demonstrasjonsform\u00e5l), og se p\u00e5 boten <i>Smartere Tanker<\/i> (<i>@SmartThoughtsBot<\/i>). Vi klikker p\u00e5 knappen med navnet i listen over botene.<\/p>\n<p><img decoding=\"async\" alt=\"Bygger en Telegram-bot i Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/98434725cb0d7441ec5f2552b0b508a8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHer kan vi tilpasse boten v\u00e5r. Ved \u00e5 trykke p\u00e5 knappen <i>Rediger\u2026<\/i> g\u00e5r vi til redigering av en eller annen opsjon. For eksempel, ved \u00e5 klikke p\u00e5 knappen <i>Edit Name<\/i> kan vi endre navnet p\u00e5 boten, for eksempel fra <i>Smartere Tanker<\/i>, til <i>Rare Ideer<\/i>. <i>Botpic<\/i> \u2014 er botens avatar, og b\u00f8r v\u00e6re minst <i>150 x 150 px<\/i>. <i>Beskrivelse<\/i> \u2014 er en kort beskrivelse som brukeren ser ved f\u00f8rste oppstart av boten, som svar p\u00e5 sp\u00f8rsm\u00e5let: <i>Hva kan denne boten gj\u00f8re?<\/i> <i>Om<\/i> \u2014 er en enda mer kompakt beskrivelse som f\u00f8lger med en link til boten (<code>https:\/\/t.me\/SmartThoughtsBot<\/code>) eller n\u00e5r man ser informasjon om den.<\/p>\n<p><img decoding=\"async\" alt=\"Bygger en Telegram-bot i Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/f15ba92be1bfea827273f79616bd2a3a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVi m\u00e5 bare tilpasse kommandoene. For \u00e5 gj\u00f8re dette klikker vi p\u00e5 knappen <i>Edit Commands<\/i>. For \u00e5 standardisere brukerpraksis <i>Telegram<\/i> anbefaler alltid \u00e5 bruke to kommandoer: <i>\/start<\/i> og <i>\/help<\/i>, og hvis boten trenger innstillinger \u2014 en ekstra kommando \/settings. V\u00e5r bot er enkel som en ball, s\u00e5 den trenger forel\u00f8pig ingen innstillinger. Vi skriver inn de to f\u00f8rste kommandoene som vi deretter vil behandle i koden. N\u00e5, hvis brukeren skriver inn en skr\u00e5strek (\/) i inndatafeltet, vil det vises en liste med kommandoer for rask valg. Alt som p\u00e5 bildet: til venstre \u2014 vi setter opp kommandoene gjennom faderboten; til h\u00f8yre er disse kommandoene allerede tilgjengelige for brukerne i v\u00e5r bot.<\/p>\n<p><img decoding=\"async\" alt=\"Bygger en Telegram-bot i Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/b536b5fe7b8aad3d68877a7693ea0e6f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Yandex-funksjon<\/h2>\n<p>\nN\u00e5, n\u00e5r boten v\u00e5r er opprettet, g\u00e5r vi til <i>Yandex.Cloud<\/i>, for \u00e5 lage en funksjon som vil kj\u00f8re koden til boten v\u00e5r. Hvis du ikke har jobbet med <i>Yandex.Cloud<\/i> , les materialet <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/464739\/\"><b><i>Alice i Bitrix-land<\/i><\/b><\/a><\/noindex>, og deretter \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/440374\/\"><b><i>Yandex-funksjoner sender ut e-post<\/i><\/b><\/a><\/noindex>. Jeg er nesten sikker p\u00e5 at disse to relativt sm\u00e5 artiklene vil v\u00e6re mer enn tilstrekkelige for en grunnleggende forst\u00e5else av emnet.<\/p>\n<p>S\u00e5, i konsollen <i>Yandex.Cloud<\/i> , velger vi punktet <i>Cloud Functions<\/i>, og deretter trykker vi p\u00e5 knappen <i>Opprett funksjon<\/i>. Vi gir den et navn, og for oss selv \u2014 en kort beskrivelse.<\/p>\n<p><img decoding=\"async\" alt=\"Bygger en Telegram-bot i Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/67f313c60481c5ef84af8a28b4934621.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAfter clicking the button <i>Opprett<\/i> Og etter et par sekunder vil den nye funksjonen dukke opp i listen over alle funksjoner. Trykk p\u00e5 navnet \u2014 dette vil ta oss til siden <i>Oversikt<\/i> til v\u00e5r funksjon. Her m\u00e5 vi aktivere (<i>P\u00e5<\/i>) bryteren <i>Offentlig funksjon<\/i>, s\u00e5 den blir tilgjengelig fra det eksterne (for <i>Yandex.Cloud<\/i>) verden, og verdien av feltene <i>URL for anrop<\/i> og <i>Identifikator<\/i> \u2014 halde djupt hemmeleg for alle unntatt deg sj\u00f8lv og Telegram\u2019a, slik at funksjonen din ikkje kan bli kalla av ulike svindlarar.<\/p>\n<p><img decoding=\"async\" alt=\"Bygger en Telegram-bot i Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/3ba45d357965d567ba33ab0ee65d2eb4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00e5 g\u00e5r vi med venstremenyen til <i>Redakt\u00f8r<\/i> funksjoner. La oss midlertidig legge v\u00e5re <i>Smartere Tanker<\/i>, og lage en minimal mal-funksjon for \u00e5 teste botens funksjonalitet\u2026 For \u00f8vrig, i denne sammenhengen er denne funksjonen boten v\u00e5r\u2026 Kort sagt, n\u00e5, akkurat her, skal vi lage en enkel bot som vil \u201cspeile\u201d (dvs. sende tilbake) foresp\u00f8rslene fra brukerne. Denne malen kan alltid brukes n\u00e5r du lager nye Telegram-boter for \u00e5 bekrefte at forbindelsen til <i>Telegram\u2019<\/i>fungerer som den skal. Vi klikker p\u00e5 <i>Lag fil<\/i>, gir den navnet <i>index.js<\/i>, og i online <i>Kode-redigerer<\/i> limer vi inn f\u00f8lgende kode i denne filen:<\/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>\nI konsollen til Yandex.Cloud b\u00f8r det se omtrent slik ut:<\/p>\n<p><img decoding=\"async\" alt=\"Bygger en Telegram-bot i Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/f0204be84468c9ae7ec1b9e4ca0dfdd9.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDeretter angir vi lenger ned <i>Inngangspunkt<\/i> \u2014 <i>index.bot<\/i>, hvor <i>index<\/i> dette er navnet p\u00e5 filen (<i>index.js<\/i>), mens <i>bot<\/i> \u2014 navnet p\u00e5 funksjonen (<i>module.exports.bot<\/i>). Alle andre felter lar vi st\u00e5 som de er, og i \u00f8verste h\u00f8yre hj\u00f8rne klikker vi p\u00e5 knappen <i>Lag versjon<\/i>. Etter noen sekunder vil denne versjonen av funksjonen bli opprettet. Snart, etter testing <i>av webhook<\/i>, vil vi opprette en ny versjon \u2014 <i>Smartere Tanker<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Bygger en Telegram-bot i Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/48cd898f83bdc29d124600828bf2143f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Objektdatalager<\/h2>\n<p>\nN\u00e5 som vi har opprettet <i>Yandex-funksjon<\/i>, la oss, mens vi er i konsollen <i>Yandex.Cloud<\/i>, vi oppretter et s\u00e5kalt b\u00f8tte (<i>b\u00f8tten<\/i>, alts\u00e5 et \u00abbucket\u00bb p\u00e5 norsk, absolutt ikke en bukett) for lagring av bildefiler som skal brukes i boten v\u00e5r <i>Smartere Tanker<\/i>. I den venstre navigasjonsmenyen velger vi punktet <i>Object Storage<\/i>, trykker p\u00e5 knappen <i>Opprett b\u00f8tte<\/i>, finner et navn, for eksempel, <i>img-bucket<\/i>, og viktigst av alt, <i>Tilgang for lesing av objekter<\/i> gjer vi offentlig \u2014 elles f\u00e5r Telegram v\u00e5re bilete aldri sj\u00e5. Alle andre felt held vi uendra. Trykk p\u00e5 knappen <i>Opprett b\u00f8tte<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Bygger en Telegram-bot i Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/c890a42f7d043e03300434b2c4a0258b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEtter dette kan listen over alle b\u00f8tter se omtrent slik ut (hvis dette er din eneste b\u00f8tte):<\/p>\n<p><img decoding=\"async\" alt=\"Bygger en Telegram-bot i Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/34701231536742a7889b200ff49b08b1.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00e5 foresl\u00e5r jeg at vi trykker p\u00e5 navnet til b\u00f8tten, og inne i den oppretter vi en mappe for \u00e5 organisere lagringen av bilder for ulike applikasjoner. For eksempel for Telegram-boten <i>Smartere Tanker<\/i> har jeg opprettet en mappe med navnet <i>tg-bot-smart-thoughts<\/i> (jeg forst\u00e5r denne koden). Lag gjerne ogs\u00e5 en selv.<\/p>\n<p><img decoding=\"async\" alt=\"Bygger en Telegram-bot i Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/c5707b5ba54fea5b548d62e097328650.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00e5 kan vi trykke p\u00e5 navnet til mappen, g\u00e5 inn i den og laste opp filer:<\/p>\n<p><img decoding=\"async\" alt=\"Bygger en Telegram-bot i Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/ead320e587e1d161e2cd54a94b4ea0d4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOg ved \u00e5 klikke p\u00e5 filnavnet \u2014 f\u00e5 den <i>URL<\/i> til bruk i boten v\u00e5r, og generelt \u2014 hvor som helst (men, ikke publiser dette <i>URL<\/i> un\u00f8dvendig, siden trafikken fra <i>Objektlagring<\/i> takseres).<\/p>\n<p><img decoding=\"async\" alt=\"Bygger en Telegram-bot i Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/07a833430b0584161423f363f6685306.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet er i grunnen alt ang\u00e5ende <i>Objektlagring<\/i>. N\u00e5 vil du vite hva du skal gj\u00f8re n\u00e5r du ser en oppfordring om \u00e5 laste opp filer dit.<\/p>\n<h2>Webhook<\/h2>\n<p>\nN\u00e5 skal vi sette opp <i>webhook<\/i> \u2014 alts\u00e5 n\u00e5r boten f\u00e5r en oppdatering (for eksempel, en melding fra brukeren), vil det fra serveren <i>Telegram<\/i> sendes en foresp\u00f8rsel ( <i>Yandex-funksjon<\/i> ) med data. Her er strengen som du bare kan lime inn i nettleserens adressefelt, og s\u00e5 oppdatere siden (dette m\u00e5 gj\u00f8res bare \u00e9n gang):<i>request<\/i>Bare bytte ut <code>https:\/\/api.telegram.org\/bot{bot_token}\/setWebHook?url={webhook_url}<\/code><br \/>\n{bot_token} <i>med tokenet vi fikk fra bot-faren n\u00e5r vi opprettet boten v\u00e5r, mens<\/i> {webhook_url} <i>\u2014 med<\/i> v\u00e5r <i>URL<\/i> . Et \u00f8yeblikk! Men <i>Yandex-funksjoner<\/i>forbyr leverand\u00f8rer i Russland \u00e5 betjene adressen <i>Roskomnadzor<\/i> . Ja, det stemmer. Men du m\u00e5 finne p\u00e5 noe. Man kan for eksempel be bestemor sin i Ukraina, Israel eller Canada \u2014 der er det ingen \u00abroskomsvensurer\u00bb, og Gud vet hvordan mennesker lever uten det. S\u00e5, foresp\u00f8rsel-svar ved oppsett av webhook m\u00e5 se slik ut: <code>https:\/\/api.telegram.org<\/code>Vi tester. Det m\u00e5 \u00abspeile\u00bb.<\/p>\n<p><img decoding=\"async\" alt=\"Bygger en Telegram-bot i Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/713834a1665520d3e471cd3d1831ac06.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSlik er det. V\u00e5re gratulasjoner \u2014 n\u00e5 er du<\/p>\n<p><img decoding=\"async\" alt=\"Bygger en Telegram-bot i Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/3ab0e97f9b0ca06295fe7f5f793aab2c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n-bot! <i>Yandex-funksjon<\/i> er <i>Telegram<\/i>Og n\u00e5 lager vi Smarte Tanker. Koden er \u00e5pen og ligger p\u00e5<\/p>\n<h2>Smartere Tanker<\/h2>\n<p>\n. Den er ganske godt kommentert, og inneholder bare hundre linjer. Les den som en operasangeren leser librettoen! <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/stmike\/tg-bot-smart-thoughts\"><b><i>GitHub<\/i><\/b><\/a><\/noindex>Klon prosjektet og installer avhengigheter: <\/p>\n<p><img decoding=\"async\" alt=\"Bygger en Telegram-bot i Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/2ad0e96a2169d0859ccec836f151d3ea.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKlon prosjektet og installer avhengigheiter:<\/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>\nGj\u00f8r n\u00f8dvendige endringer i filen <i>index.js<\/i> (valgfritt; du kan la det v\u00e6re som det er). Lag <i>zip<\/i>-arkiv, med filen <i>index.js<\/i> og mappen <i>node_modules<\/i> inni, for eksempel kalt <i>smart.zip<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Bygger en Telegram-bot i Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/c8c97707515338a01f8b8ed7f743c4a5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00e5 g\u00e5r du til konsollen v\u00e5r <i>Yandex-funksjoner<\/i>, velg fanen <i>ZIP-arkiv<\/i>, klikk p\u00e5 knappen <i>Velg fil<\/i>, og last opp arkivet v\u00e5rt <i>smart.zip<\/i>. Til slutt, klikk p\u00e5 knappen i \u00f8verste h\u00f8yre hj\u00f8rne <i>Lag versjon<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Bygger en Telegram-bot i Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/96634c132848278ecc00a509e61b13f0.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEtter noen sekunder, n\u00e5r funksjonen blir oppdatert, test den igjen med boten v\u00e5r. N\u00e5 speiler den ikke lenger, men leverer smarte tanker!<\/p>\n<p><img decoding=\"async\" alt=\"Bygger en Telegram-bot i Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/0c683826b5ef2bdbbd0253de4691900a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet er alt for i dag. Flere artikler kommer. For de som er interessert i lignende emner \u2013 abonner p\u00e5 varsler om nye artikler. Du kan abonnere her, eller p\u00e5 <i>Telegram<\/i>-kanal <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/it_tutorial_zahar\"><i>IT Tutorial Zakhar<\/i><\/a><\/noindex>, eller <i>Twitter<\/i> <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/mikezaharov\"><i>@mikezaharov<\/i><\/a><\/noindex>.<\/p>\n<h2>Lenker<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/stmike\/tg-bot-smart-thoughts\"><b><i>Koden p\u00e5 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: En introduksjon for utviklere<\/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>Donasjoner<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/yasobe.ru\/na\/vui\"><img decoding=\"async\" alt=\"Bygger en Telegram-bot i Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/250f8765713080fcbbdaf56c04dc882f.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<br \/>Kilde: <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\/no\/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=\"nn_NO\" \/>\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\/no\/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\udd47Bygger Telegram-bot i Yandex.Cloud | ProHoster","description":"I dag skal vi sette sammen en bot av tilgjengelige materialer.","canonical_url":"https:\/\/prohoster.info\/no\/blog\/stroim-telegram-bot-v-yandeks-oblake","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nn_NO","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\/no\/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\/no\/wp-json\/wp\/v2\/posts\/41315","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/comments?post=41315"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts\/41315\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media\/41316"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media?parent=41315"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/categories?post=41315"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/tags?post=41315"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}