{"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\/pt\/blog\/stroim-telegram-bot-v-yandeks-oblake","title":{"rendered":"Construindo um bot do Telegram na Yandex.Cloud","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Construindo um bot do Telegram na Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/4a758744e4fc6bc797d270fa1bc42ef3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHoje, com materiais dispon\u00edveis, vamos montar em <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.ru\/\"><i>Yandex.Cloud<\/i><\/a><\/noindex> <i>bot do Telegram<\/i> usando <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.ru\/services\/functions\"><i>Yandex Cloud Functions<\/i><\/a><\/noindex> (ou <i>fun\u00e7\u00f5es Yandex<\/i> \u2014 para simplificar) e <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.ru\/services\/storage\"><i>Yandex Object Storage<\/i><\/a><\/noindex> (ou <i>armazenamento de objetos<\/i> \u2014 para clareza). O c\u00f3digo estar\u00e1 em <i>Node.js<\/i>. No entanto, h\u00e1 uma situa\u00e7\u00e3o peculiar - uma organiza\u00e7\u00e3o chamada, por assim dizer, <i>RosKomZenzura<\/i> (a censura \u00e9 proibida pelo artigo 29 da Constitui\u00e7\u00e3o da Federa\u00e7\u00e3o Russa), n\u00e3o permite que os provedores de internet na R\u00fassia fa\u00e7am solicita\u00e7\u00f5es ao <i>Telegram API<\/i> no endere\u00e7o: <code>https:\/\/api.telegram.org\/<\/code>. Bem, n\u00e3o vamos fazer isso \u2014 se n\u00e3o puder, n\u00e3o faremos. Afinal, temos em nossa bolsa os chamados <i>webhooks<\/i> \u2014 com a ajuda deles, n\u00e3o fazemos solicita\u00e7\u00f5es a um endere\u00e7o espec\u00edfico, apenas enviamos nossa solicita\u00e7\u00e3o como resposta a qualquer solicita\u00e7\u00e3o recebida. Ou seja, como em Odessa \u2014 respondemos a uma pergunta com outra pergunta. Portanto, <i>Telegram API<\/i> n\u00e3o constar\u00e1 em nosso c\u00f3digo.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<b class=\"spoiler_title\">Isen\u00e7\u00e3o de responsabilidade<\/b><i>Os nomes mencionados neste artigo de quaisquer organiza\u00e7\u00f5es governamentais s\u00e3o fict\u00edcios, e eventuais coincid\u00eancias com nomes de organiza\u00e7\u00f5es reais s\u00e3o aleat\u00f3rias. <\/i> <\/p>\n<p>Ent\u00e3o, vamos criar um bot que nos fornecer\u00e1 pensamentos inteligentes. Exatamente como na imagem:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/SmartThoughtsBot\"><img decoding=\"async\" alt=\"Construindo um bot do Telegram na Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/6b7aca248999621a20f8a0ec29e75c75.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Voc\u00ea pode test\u00e1-lo na pr\u00e1tica \u2014 aqui est\u00e1 o nome: <b><i>@SmartThoughtsBot<\/i><\/b>. Notou o bot\u00e3o <i>\"Habilidade da Alice\"<\/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>habilidade da Alice<\/i>, ou seja, ele executa as mesmas fun\u00e7\u00f5es que <i>habilidade da Alice<\/i> e, possivelmente, poder\u00e3o coexistir pacificamente promovendo um ao outro. Sobre como criar <i>a habilidade Pensamentos Inteligentes<\/i> \u00e9 discutido no artigo <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/465275\/\"><b><i>Alice adquire uma habilidade<\/i><\/b><\/a><\/noindex>. Agora (depois de algumas altera\u00e7\u00f5es feitas ap\u00f3s a publica\u00e7\u00e3o do artigo mencionado acima) no smartphone, essa <i>habilidade<\/i> parecer\u00e1 mais ou menos assim:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/alice.ya.ru\/s\/f785af07-4578-4a6b-95ae-485bd803ae20\"><img decoding=\"async\" alt=\"Construindo um bot do Telegram na Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/e92c340f8d947ba9252e0fcab0511ce6.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<h2>Criando um bot<\/h2>\n<p>\nGostaria que este tutorial fosse \u00fatil para todos, incluindo os iniciantes em \"bot constru\u00e7\u00e3o\". Portanto, nesta se\u00e7\u00e3o, descreverei em detalhes como criar bots em <i>Telegram<\/i>\u2018dos bots. Para aqueles que n\u00e3o precisam dessa informa\u00e7\u00e3o \u2014 sigam para as pr\u00f3ximas se\u00e7\u00f5es. <\/p>\n<p>Abrindo o aplicativo <i>Telegaram<\/i>, chamamos o pai de todos os bots (eles s\u00e3o como humanos) \u2014 <b><i>@BotFather<\/i><\/b> \u2014 e, para come\u00e7ar, vamos dar a ele o comando \/help, para relembrar o que podemos fazer. Agora, estaremos interessados no comando <i>\/newbot<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Construindo um bot do Telegram na Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/12a0e84dd712e0c74dee0463f1b44e74.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nComo o bot descrito aqui j\u00e1 foi criado, para fins de demonstra\u00e7\u00e3o, vou criar temporariamente outro bot (depois o apagarei). Vou cham\u00e1-lo de <i>DemoHabrBot<\/i>. Os nomes (<i>nome de usu\u00e1rio<\/i>) de todos os bots do Telegram devem terminar com a palavra <i>bot<\/i>, por exemplo: <i>MyCoolBot<\/i> ou <i>my_cool_bot<\/i> \u2014 isso \u00e9 para bots. Mas primeiro, vamos dar um nome ao bot (<i>nome<\/i>) \u2014 e isso \u00e9 para as pessoas. O nome pode ser em qualquer idioma, conter espa\u00e7os, e n\u00e3o precisa terminar com a palavra <i>bot<\/i>, e tamb\u00e9m n\u00e3o precisa ser \u00fanico. Neste exemplo, eu nomeei este bot <i>Demo Habr<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Construindo um bot do Telegram na Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/682ecf64724cabcfef96639d6de87521.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAgora vamos escolher um nome para o bot (<i>nome de usu\u00e1rio<\/i>, aquele que \u00e9 para bots). Vamos cham\u00e1-lo de <i>DemoHabrBot<\/i>. Tudo que diz respeito ao nome do bot (<i>nome<\/i>) n\u00e3o se relaciona de forma alguma ao seu nome \u2014 <i>nome de usu\u00e1rio<\/i> (ou se relaciona, mas de forma inversa). Ap\u00f3s a cria\u00e7\u00e3o bem-sucedida de um nome \u00fanico para o bot, precisamos copiar e guardar (em total segredo!) o token que aparece na captura de tela com a seta vermelha. Com ele, mais tarde, configuraremos o webhooks para <i>Telegram<\/i>\u2018um webhook para a nossa <i>Fun\u00e7\u00e3o Yandex<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Construindo um bot do Telegram na Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/78254946c9f763d212a1952bac6c706f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAgora vamos dar um comando ao pai de todos os bots: <i>\/mybots<\/i>, e ele nos mostrar\u00e1 a lista de todos os bots que criamos. Por enquanto, vamos deixar o bot rec\u00e9m-criado em paz <i>Demo Habr<\/i> (ele foi criado para mostrar como criar bots, mas ainda usaremos ele hoje para outros fins de demonstra\u00e7\u00e3o), e vamos olhar o bot <i>Pensamentos Inteligentes<\/i> (<i>@SmartThoughtsBot<\/i>). Clicamos no nome do bot na lista.<\/p>\n<p><img decoding=\"async\" alt=\"Construindo um bot do Telegram na Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/98434725cb0d7441ec5f2552b0b508a8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAqui podemos configurar nosso bot. Ao clicar no bot\u00e3o <i>Editar\u2026<\/i> vamos para a edi\u00e7\u00e3o de uma op\u00e7\u00e3o espec\u00edfica. Por exemplo, ao clicar no bot\u00e3o <i>Editar Nome<\/i> podemos mudar o nome do bot, digamos, ao inv\u00e9s de <i>Pensamentos Inteligentes<\/i>, escrever <i>Ideias Absurdo<\/i>. <i>Botpic<\/i> \u2014 este \u00e9 o avatar do bot, deve ter pelo menos <i>150 x 150 px<\/i>. <i>Descri\u00e7\u00e3o<\/i> \u2014 esta \u00e9 uma breve descri\u00e7\u00e3o que o usu\u00e1rio v\u00ea ao iniciar o bot pela primeira vez, como resposta \u00e0 pergunta: <i>O que este bot pode fazer?<\/i> <i>Sobre<\/i> \u2014 uma descri\u00e7\u00e3o ainda mais curta que \u00e9 enviada com o link para o bot (<code>https:\/\/t.me\/SmartThoughtsBot<\/code>) ou ao visualizar informa\u00e7\u00f5es sobre ele.<\/p>\n<p><img decoding=\"async\" alt=\"Construindo um bot do Telegram na Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/f15ba92be1bfea827273f79616bd2a3a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAgora s\u00f3 precisamos configurar os comandos. Para isso, clique no bot\u00e3o <i>Editar Comandos<\/i>. Para padronizar a pr\u00e1tica do usu\u00e1rio <i>Telegram<\/i> recomenda-se sempre usar dois comandos: <i>\/start<\/i> e <i>\/help<\/i>, e se o bot precisar de configura\u00e7\u00f5es \u2014 um comando adicional \/settings. Nosso bot \u00e9 simples, como uma bola, ent\u00e3o ele ainda n\u00e3o precisa de configura\u00e7\u00f5es. Vamos definir os dois primeiros comandos, que depois processaremos no c\u00f3digo. Agora, se no campo de entrada o usu\u00e1rio digitar uma barra (o sinal de barra: \/), aparecer\u00e1 uma lista de comandos para sele\u00e7\u00e3o r\u00e1pida. Tudo como na imagem: \u00e0 esquerda \u2014 configuramos os comandos atrav\u00e9s do bot-pai; \u00e0 direita, esses comandos j\u00e1 est\u00e3o dispon\u00edveis para os usu\u00e1rios em nosso bot.<\/p>\n<p><img decoding=\"async\" alt=\"Construindo um bot do Telegram na Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/b536b5fe7b8aad3d68877a7693ea0e6f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Fun\u00e7\u00e3o Yandex<\/h2>\n<p>\nAgora que nosso bot foi criado, vamos para <i>Yandex.Cloud<\/i>, para criar uma fun\u00e7\u00e3o que executar\u00e1 o c\u00f3digo do nosso bot. Se voc\u00ea ainda n\u00e3o trabalhou com <i>Yandex.Cloud<\/i> , leia o material <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/464739\/\"><b><i>Alice no Pa\u00eds do Bitrix<\/i><\/b><\/a><\/noindex>, e depois \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/440374\/\"><b><i>As fun\u00e7\u00f5es do Yandex enviam e-mails<\/i><\/b><\/a><\/noindex>. Estou quase certo de que esses dois artigos relativamente pequenos ser\u00e3o suficientes para voc\u00ea entender o assunto basicamente.<\/p>\n<p>Assim, no console <i>do Yandex.Cloud<\/i> , no menu de navega\u00e7\u00e3o \u00e0 esquerda, selecionamos a op\u00e7\u00e3o <i>Cloud Functions<\/i>, e em seguida clicamos no bot\u00e3o <i>Criar fun\u00e7\u00e3o<\/i>. Damos um nome a ela, e para n\u00f3s mesmos \u2014 uma breve descri\u00e7\u00e3o.<\/p>\n<p><img decoding=\"async\" alt=\"Construindo um bot do Telegram na Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/67f313c60481c5ef84af8a28b4934621.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAp\u00f3s clicar no bot\u00e3o <i>Criar<\/i> , e ap\u00f3s alguns segundos, a nova fun\u00e7\u00e3o aparecer\u00e1 na lista de todas as fun\u00e7\u00f5es. Clique no seu nome \u2014 isso nos levar\u00e1 \u00e0 p\u00e1gina <i>Vis\u00e3o geral<\/i> da nossa fun\u00e7\u00e3o. Aqui, precisamos ativar (<i>Ativar<\/i>) o alternador <i>Fun\u00e7\u00e3o p\u00fablica<\/i>, para que ela fique acess\u00edvel do mundo externo (para <i>do Yandex.Cloud<\/i>) o mundo, e o valor dos campos <i>Link para chamada<\/i> e <i>Identificador<\/i> \u2014 mantenha em profundo segredo de todos, exceto de si mesmo e do Telegram, para que sua fun\u00e7\u00e3o n\u00e3o possa ser chamada por v\u00e1rios golpistas.<\/p>\n<p><img decoding=\"async\" alt=\"Construindo um bot do Telegram na Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/3ba45d357965d567ba33ab0ee65d2eb4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAgora, usando o menu \u00e0 esquerda, vamos para o <i>Editor<\/i> da fun\u00e7\u00e3o. Por ora, vamos deixar de lado nossos <i>Pensamentos Inteligentes<\/i>, e criar uma fun\u00e7\u00e3o-template m\u00ednima para verificar o funcionamento do nosso bot\u2026 No entanto, neste contexto, essa fun\u00e7\u00e3o \u00e9 nosso bot\u2026 Em poucas palavras, agora mesmo, aqui e agora, n\u00f3s faremos um bot muito simples que 'espelhar\u00e1' (ou seja, enviar\u00e1 de volta) as solicita\u00e7\u00f5es dos usu\u00e1rios. Este template pode ser usado sempre que criamos novos bots do Telegram, para garantir que a conex\u00e3o com <i>Telegram<\/i>est\u00e1 funcionando corretamente. Clicamos em <i>Criar arquivo<\/i>, chamamos de <i>index.js<\/i>, e no <i>Editor de c\u00f3digo online<\/i> , colamos o seguinte c\u00f3digo neste arquivo:<\/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>\nNo console do Yandex.Cloud, isso deve parecer aproximadamente assim:<\/p>\n<p><img decoding=\"async\" alt=\"Construindo um bot do Telegram na Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/f0204be84468c9ae7ec1b9e4ca0dfdd9.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEm seguida, um pouco mais abaixo, indicamos <i>Ponto de entrada<\/i> \u2014 <i>index.bot<\/i>, onde <i>index<\/i> \u00e9 o nome do arquivo (<i>index.js<\/i>), e <i>bot<\/i> \u2014 nome da fun\u00e7\u00e3o (<i>module.exports.bot<\/i>). Todos os outros campos deixamos 'como est\u00e3o', e no canto superior direito clicamos no bot\u00e3o <i>Criar vers\u00e3o<\/i>. Ap\u00f3s alguns segundos, esta vers\u00e3o da fun\u00e7\u00e3o ser\u00e1 criada. Em breve, ap\u00f3s o teste <i>do webhook<\/i>, criaremos uma nova vers\u00e3o \u2014 <i>Pensamentos Inteligentes<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Construindo um bot do Telegram na Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/48cd898f83bdc29d124600828bf2143f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>armazenamento de objetos<\/h2>\n<p>\nAgora que temos criado <i>Fun\u00e7\u00e3o Yandex<\/i>, vamos, enquanto estamos no console <i>do Yandex.Cloud<\/i>, criar um chamado bucket (<i>bucket<\/i>, ou seja, um balde em russo, de forma alguma um buqu\u00ea) para armazenar arquivos de imagem que ser\u00e3o usados em nosso bot <i>Pensamentos Inteligentes<\/i>. No menu de navega\u00e7\u00e3o \u00e0 esquerda, selecionamos a op\u00e7\u00e3o <i>Object Storage<\/i>, clicamos no bot\u00e3o <i>Criar bucket<\/i>, pensamos em um nome, por exemplo, <i>img-bucket<\/i>, e, o mais importante, <i>O acesso de leitura aos objetos<\/i> tornamos p\u00fablico \u2014 caso contr\u00e1rio, o Telegram n\u00e3o ver\u00e1 nossas imagens. Todos os outros campos permanecem inalterados. Clique no bot\u00e3o <i>Criar bucket<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Construindo um bot do Telegram na Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/c890a42f7d043e03300434b2c4a0258b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAp\u00f3s isso, a lista de todos os buckets pode parecer algo assim (se este for o seu \u00fanico bucket):<\/p>\n<p><img decoding=\"async\" alt=\"Construindo um bot do Telegram na Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/34701231536742a7889b200ff49b08b1.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAgora sugiro clicar no nome do bucket e dentro dele criar uma pasta para organizar o armazenamento de imagens para diferentes aplica\u00e7\u00f5es suas. Por exemplo, para o bot do Telegram <i>Pensamentos Inteligentes<\/i> eu criei uma pasta chamada <i>tg-bot-smart-thoughts<\/i> (n\u00e3o se preocupe, eu entenderei essa cifra). Crie tamb\u00e9m alguma.<\/p>\n<p><img decoding=\"async\" alt=\"Construindo um bot do Telegram na Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/c5707b5ba54fea5b548d62e097328650.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAgora voc\u00ea pode clicar no nome da pasta, entrar nela e fazer o upload de arquivos:<\/p>\n<p><img decoding=\"async\" alt=\"Construindo um bot do Telegram na Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/ead320e587e1d161e2cd54a94b4ea0d4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nE ao clicar no nome do arquivo \u2014 obter seu <i>URL<\/i> para uso em nosso bot, e, de fato, \u2014 em qualquer lugar (mas, n\u00e3o publique esse <i>URL<\/i> desnecessariamente, pois o tr\u00e1fego do <i>Object Storage<\/i> \u00e9 cobrado).<\/p>\n<p><img decoding=\"async\" alt=\"Construindo um bot do Telegram na Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/07a833430b0584161423f363f6685306.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nE isso \u00e9 tudo sobre <i>Object Storage<\/i>. Agora voc\u00ea saber\u00e1 o que fazer quando vir um chamado para enviar arquivos l\u00e1.<\/p>\n<h2>Webhook<\/h2>\n<p>\nAgora vamos configurar um <i>webhook<\/i> \u2014 ou seja, quando o bot receber uma atualiza\u00e7\u00e3o (como uma mensagem de um usu\u00e1rio), ser\u00e1 enviado do servidor <i>Telegram<\/i> para o nosso <i>Fun\u00e7\u00e3o Yandex<\/i> uma solicita\u00e7\u00e3o (<i>request<\/i>) com os dados. Aqui est\u00e1 a linha que voc\u00ea pode simplesmente colar na barra de endere\u00e7os do navegador e depois atualizar a p\u00e1gina (isso deve ser feito apenas uma vez): <code>https:\/\/api.telegram.org\/bot{bot_token}\/setWebHook?url={webhook_url}<\/code><br \/>\nBasta substituir <i>{bot_token}<\/i> pelo token que recebemos do bot pai ao criar nosso bot, e <i>{webhook_url}<\/i> \u2014 por <i>URL<\/i> o nosso <i>fun\u00e7\u00f5es Yandex<\/i>. Um momento! Mas <i>RosKomZenzura<\/i> pro\u00edbe provedores na R\u00fassia de atender o endere\u00e7o <code>https:\/\/api.telegram.org<\/code>. Sim, est\u00e1 certo. Mas voc\u00ea pode pensar em algo. Afinal, pode-se, por exemplo, pedir \u00e0 sua av\u00f3 na Ucr\u00e2nia, Israel ou Canad\u00e1 \u2014 l\u00e1 n\u00e3o existem 'censuras russas', e s\u00f3 Deus sabe como as pessoas vivem sem isso. No final, a solicita\u00e7\u00e3o-resposta ao configurar o webhook deve parecer assim:<\/p>\n<p><img decoding=\"async\" alt=\"Construindo um bot do Telegram na Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/713834a1665520d3e471cd3d1831ac06.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTestando. Deve \"espelhar\".<\/p>\n<p><img decoding=\"async\" alt=\"Construindo um bot do Telegram na Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/3ab0e97f9b0ca06295fe7f5f793aab2c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nE \u00e9 verdade. Nossas congratula\u00e7\u00f5es \u2014 agora <i>Fun\u00e7\u00e3o Yandex<\/i> se tornou <i>Telegram<\/i>-bot!<\/p>\n<h2>Pensamentos Inteligentes<\/h2>\n<p>\nE agora vamos fazer Pensamentos Inteligentes. O c\u00f3digo est\u00e1 aberto e dispon\u00edvel em <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/stmike\/tg-bot-smart-thoughts\"><b><i>GitHub<\/i><\/b><\/a><\/noindex>. Ele est\u00e1 bem comentado e tem apenas cerca de cem linhas. Leia-o como uma diva de \u00f3pera l\u00ea um libreto! <\/p>\n<p><img decoding=\"async\" alt=\"Construindo um bot do Telegram na Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/2ad0e96a2169d0859ccec836f151d3ea.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nClone o projeto e instale as depend\u00eancias:<\/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>\nFa\u00e7a as altera\u00e7\u00f5es necess\u00e1rias no arquivo <i>index.js<\/i> (opcional; voc\u00ea pode n\u00e3o precisar alterar nada). Crie um <i>zip<\/i>-arquivo, com o arquivo <i>index.js<\/i> e a pasta <i>node_modules<\/i> dentro, por exemplo, com o nome <i>smart.zip<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Construindo um bot do Telegram na Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/c8c97707515338a01f8b8ed7f743c4a5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAgora, v\u00e1 para o nosso console <i>fun\u00e7\u00f5es Yandex<\/i>, selecione a guia <i>Arquivo ZIP<\/i>, clique no bot\u00e3o <i>Selecionar arquivo<\/i>, e fa\u00e7a o upload do nosso arquivo zip <i>smart.zip<\/i>. Finalmente, no canto superior direito, clique no bot\u00e3o <i>Criar vers\u00e3o<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Construindo um bot do Telegram na Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/96634c132848278ecc00a509e61b13f0.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAp\u00f3s alguns segundos, quando a fun\u00e7\u00e3o for atualizada, vamos testar novamente nosso bot. Agora ele n\u00e3o est\u00e1 mais \"espelhando\", mas entrega pensamentos inteligentes!<\/p>\n<p><img decoding=\"async\" alt=\"Construindo um bot do Telegram na Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/0c683826b5ef2bdbbd0253de4691900a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPor hoje \u00e9 isso. Outros artigos vir\u00e3o. Para quem acha interessante ler isso, inscreva-se para notifica\u00e7\u00f5es sobre novos artigos. Voc\u00ea pode se inscrever aqui ou no <i>Telegram<\/i>-canal <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/it_tutorial_zahar\"><i>IT Tutorial Zakhar<\/i><\/a><\/noindex>, ou <i>Twitter<\/i> <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/mikezaharov\"><i>@mikezaharov<\/i><\/a><\/noindex>.<\/p>\n<h2>Links<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/stmike\/tg-bot-smart-thoughts\"><b><i>C\u00f3digo no 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: uma introdu\u00e7\u00e3o para desenvolvedores<\/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>Doa\u00e7\u00f5es<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/yasobe.ru\/na\/vui\"><img decoding=\"async\" alt=\"Construindo um bot do Telegram na Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/250f8765713080fcbbdaf56c04dc882f.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<br \/>Fonte: <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.3 - 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\/pt\/blog\/stroim-telegram-bot-v-yandeks-oblake\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\/pt\/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\udd47Construindo um bot do Telegram na Yandex.Cloud | ProHoster","description":"Hoje, com materiais dispon\u00edveis, vamos construir um.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/stroim-telegram-bot-v-yandeks-oblake","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/41315","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=41315"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/41315\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/41316"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=41315"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=41315"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=41315"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}