Construindo um bot do Telegram no Yandex.Cloud

Construindo um bot do Telegram no Yandex.Cloud

Hoje, a partir de materiais improvisados, vamos recolher em Yandex.Cloud Bot de telegrama usando Funções da Nuvem Yandex (ou Funções do Yandex para abreviar) e Armazenamento de objetos Yandex (ou Armazenamento de objetos - para maior clareza). O código estará ativado Node.js. No entanto, há uma circunstância picante - uma certa organização chamada, digamos, RossKomTsenzur (a censura é proibida pelo artigo 29 da Constituição da Federação Russa), não permite que provedores de Internet na Rússia transfiram solicitações para API Telegram по адресу: https://api.telegram.org/. Bem, não vamos - não, não. De fato, em nossa bolsa existem os chamados. webhooks - com a ajuda deles, não fazemos pedidos para um endereço específico, mas apenas enviamos o nosso pedido como resposta a qualquer pedido que nos seja feito. Ou seja, como em Odessa - respondemos a uma pergunta com uma pergunta. É por isso API Telegram não aparecerá em nosso código.

Isenção de responsabilidadeOs nomes de quaisquer organizações governamentais mencionadas neste artigo são fictícios e possíveis correspondências com os nomes de organizações da vida real são mera coincidência.

Então, faremos um bot que nos fornecerá pensamentos inteligentes. Exatamente como na foto:

Construindo um bot do Telegram no Yandex.Cloud

Você pode experimentá-lo em ação - aqui está o nome: @SmartThoughtsBot. Observe o botão "Habilidade de Alice"? Isso porque o bot é uma espécie de "companheiro" do homônimo habilidade de Alice, ou seja ele executa as mesmas funções que habilidade de Alice e, talvez, que possam coexistir pacificamente, anunciando-se mutuamente. Sobre como criar Habilidade de Pensamento Inteligente descrito no artigo Alice obtém a habilidade. Agora (depois de fazer algumas alterações após a publicação do artigo acima) em um smartphone este habilidade ficará mais ou menos assim:

Construindo um bot do Telegram no Yandex.Cloud

criação de bot

Eu gostaria que este tutorial fosse útil para todos, incl. e "construtores de bots" iniciantes. Portanto, nesta seção, descreverei com alguns detalhes como criar em geral em Telegram'e bots. Para aqueles que não precisam dessas informações, prossiga para as próximas seções.

Abra o aplicativo telegaram, vamos chamar o pai de todos os bots (eles têm tudo como gente) - @BotFather - e para começar, daremos a ele o comando / help para refrescar nossa memória do que podemos fazer. Agora estamos interessados ​​na equipe / newbot.

Construindo um bot do Telegram no Yandex.Cloud

Como o bot descrito aqui já foi criado, para fins de demonstração, criarei outro bot por um curto período de tempo (depois irei excluí-lo). eu vou ligar pra ele DemoHabrBot. Nomes (nome de usuário) de todos os bots de telegrama devem terminar com a palavra focinho, Por exemplo: MeuCoolBot ou meu_cool_bot - isto é para bots. Mas primeiro damos um nome ao bot (nome) é para pessoas. O nome pode estar em qualquer idioma, conter espaços, não precisa terminar com uma palavra focinho, e nem precisa ser único. Neste exemplo, chamei este bot Demonstração Habr.

Construindo um bot do Telegram no Yandex.Cloud

Agora escolha um nome para o bot (nome de usuário, aquele para bots). vamos chamá-lo DemoHabrBot. Tudo relacionado ao nome do bot (nome) não está relacionado ao seu nome - nome de usuário (ou se aplica, mas exatamente o oposto). Depois de criar com sucesso um nome de bot exclusivo, precisamos copiar e salvar (com a maior confidencialidade!) O token mostrado na captura de tela com uma seta vermelha. Com sua ajuda, instalaremos posteriormente a saída Telegram'um webhook para o nosso Função Yandex.

Construindo um bot do Telegram no Yandex.Cloud

E agora daremos o comando ao pai de todos os bots: /meusbots, e nos mostrará uma lista de todos os bots que criamos. Vamos deixar o bot recém-assado em paz por enquanto Demonstração Habr (foi criado para mostrar como criar bots, mas vamos usá-lo hoje para outros propósitos de demonstração), e considere o bot Pensamentos Inteligentes (@SmartThoughtsBot). Clique no botão com seu nome na lista de bots.

Construindo um bot do Telegram no Yandex.Cloud

É aqui que podemos configurar nosso bot. Apertando um botão Editar… passaremos à edição de uma ou outra opção. Por exemplo, clicando no botão Editar nome podemos mudar o nome do bot, digamos em vez de Pensamentos InteligentesEscreva ideias malucas. botpic - este é o avatar do bot, deve ser pelo menos 150 150 x px. Descrição é uma breve descrição que o usuário vê quando o bot é iniciado pela primeira vez, como resposta à pergunta: O que esse bot pode fazer? Sobre - uma descrição ainda mais curta, que é transmitida com um link para o bot (https://t.me/SmartThoughtsBot) ou ao visualizar informações sobre ele.

Construindo um bot do Telegram no Yandex.Cloud

Só precisamos configurar os comandos. Para isso, pressione o botão Comandos de edição. Para padronizar as práticas do usuário Telegram recomenda sempre usar dois comandos: / start и /Socorro, e se o bot precisar de configurações - um comando /settings adicional. Nosso bot é tão simples quanto uma bola, então não precisa de nenhuma configuração ainda. Escrevemos os dois primeiros comandos, que processaremos no código. Agora, se o usuário inserir uma barra (barra : /) no campo de entrada, uma lista de comandos aparecerá para sua seleção rápida. Tudo é como na foto: à esquerda - definimos comandos por meio do bot-pai; à direita, esses comandos já estão disponíveis para os usuários em nosso bot.

Construindo um bot do Telegram no Yandex.Cloud

Função Yandex

Agora que nosso bot foi criado, vamos para Yandex.Cloudpara criar uma função que executará nosso código de bot. Se você não trabalhou com Yandex.Cloud leia o material Alice na terra do Bitrix, e então - Funções Yandex enviar e-mail. Tenho quase certeza de que esses dois artigos relativamente pequenos serão suficientes para você ter um entendimento básico sobre o assunto.

Então no console Yandex.Clouds no menu de navegação à esquerda, selecione o item Funções de nuveme, em seguida, pressione o botão Criar uma função. Damos um nome a ele e, para nós mesmos, uma breve descrição.

Construindo um bot do Telegram no Yandex.Cloud

Depois de pressionar o botão criar e após alguns segundos, a nova função aparecerá na lista de todas as funções. Clique no nome dela - isso nos levará à página visão global nossa função. Aqui você precisa habilitarOn) trocar função públicapara que se torne acessível externamente (por Yandex.Clouds) do mundo, e o valor dos campos Link para ligar и ID - mantenha-o em profundo sigilo de todos, exceto de você e do Telegram, para que vários vigaristas não possam chamar sua função.

Construindo um bot do Telegram no Yandex.Cloud

Agora, usando o menu à esquerda, vá para editor funções. Deixemos de lado por um momento a nossa Pensamentos Inteligentes, e criar uma função de modelo mínimo para verificar o desempenho do nosso bot ... Porém, nesse contexto, essa função é o nosso bot ... Resumindo, agora e aqui faremos o bot mais simples que irá "espelhar" ( ou seja, enviar de volta as solicitações do usuário. Este modelo sempre pode ser usado ao criar novos bots de telegrama para garantir que a comunicação com Telegrama'om funciona bem. Clique Criar arquivo, vamos chamá-lo index.js, e on-line Editor de código cole o seguinte código neste arquivo:

module.exports.bot = async (event) => {
  
  const body = JSON.parse(event.body);

  const msg = {
    'method': 'sendMessage',
    'chat_id': body.message.chat.id,
    'text': body.message.text
  };

  return {
    'statusCode': 200,
    'headers': {
      'Content-Type': 'application/json'
    },
    'body': JSON.stringify(msg),
    'isBase64Encoded': false
  };
};

No console Yandex.Cloud, deve ser algo assim:

Construindo um bot do Telegram no Yandex.Cloud

Abaixo, indicamos ponto de entrada - index.botOnde índice este é o nome do arquivo (index.js) e focinho - nome da função (módulo.exportações.bot). Deixe todos os outros campos "como estão" e no canto superior direito clique no botão Criar versão. Após alguns segundos, esta versão da função será criada. Logo após o teste webhook, criaremos uma nova versão - Pensamentos Inteligentes.

Construindo um bot do Telegram no Yandex.Cloud

Armazenamento de objetos

Agora que configuramos Função Yandexvamos enquanto estamos no console Yandex.Clouds, vamos criar o chamado balde (balde, ou seja balde em russo, nem um buquê) para armazenar arquivos de imagem que serão usados ​​​​em nosso bot Pensamentos Inteligentes. Selecione no menu de navegação à esquerda Armazenamento de objetos, aperte o botão Criar balde, dê um nome, por exemplo, balde img, e, o mais importante, Acesso de leitura a objetos torná-lo público - caso contrário, o Telegram não verá nossas fotos. Todos os outros campos permanecem inalterados. Apertamos o botão Criar balde.

Construindo um bot do Telegram no Yandex.Cloud

Depois disso, uma lista de todos os baldes pode ser mais ou menos assim (se este for o seu único balde):

Construindo um bot do Telegram no Yandex.Cloud

Agora proponho clicar no nome do balde e criar uma pasta dentro dele para organizar o armazenamento de imagens para diferentes aplicativos. Por exemplo, para um bot de telegrama Pensamentos Inteligentes criei uma pasta chamada tg-bot-pensamentos inteligentes (nada, vou entender esse código). Crie um também.

Construindo um bot do Telegram no Yandex.Cloud

Agora você pode clicar no nome da pasta, entrar nela e fazer upload dos arquivos:

Construindo um bot do Telegram no Yandex.Cloud

E clicando no nome do arquivo - pegue URL para uso em nosso bot e, em geral - em qualquer lugar (mas, não publique isso URL desnecessariamente, uma vez que o tráfego de armazenamento de objetos carregada).

Construindo um bot do Telegram no Yandex.Cloud

Aqui, na verdade, isso é tudo Armazenamento de objetos. Agora você saberá o que fazer quando vir o prompt para fazer upload de arquivos lá.

Webhook

Agora vamos instalar webhook - ou seja quando o bot recebe uma atualização (por exemplo, uma mensagem do usuário), do servidor Telegram no nosso Função Yandex pedido será enviadosolicitar) com dados. Aqui está uma string que você pode simplesmente colar no campo de endereço do navegador e atualizar a página (isso só precisa ser feito uma vez): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Apenas substitua {bot_token} ao token que recebemos do bot pai ao criar nosso bot e {webhook_url} - em URL nossa Funções do Yandex. Espere um minuto! Mas RossKomTsenzur proíbe provedores na Federação Russa de atender o endereço https://api.telegram.org. Sim está certo. Mas você pode pensar em algo. Afinal, você pode, por exemplo, perguntar à sua avó sobre isso na Ucrânia, Israel ou Canadá - não há “censura russa” lá, e só Deus sabe como as pessoas vivem sem ela. Como resultado, a resposta de solicitação ao instalar o webhook deve ser semelhante a esta:

Construindo um bot do Telegram no Yandex.Cloud

Testando. Deve ser espelhado.

Construindo um bot do Telegram no Yandex.Cloud

Isto é verdade. Nossos parabéns - agora Função Yandex tornou Telegram-robô!

Pensamentos Inteligentes

E agora fazemos Smart Thoughts. O código é aberto e e encontra-se em GitHub. É muito bem comentado e tem apenas cem linhas. Leia como um libreto de diva de ópera!

Construindo um bot do Telegram no Yandex.Cloud

Clone o projeto e instale as dependências:

git clone https://github.com/stmike/tg-bot-smart-thoughts.git
cd tg-bot-smart-thoughts
npm i

Faça as alterações necessárias no arquivo index.js (opcional; você não pode mudar nada). Criar zip-arquivo, com arquivo index.js e pasta node_modules dentro, por exemplo, chamado inteligente.zip.

Construindo um bot do Telegram no Yandex.Cloud

Agora vá no console para o nosso Funções do Yandex, selecione a guia arquivo ZIP, aperte o botão Selecione um arquivoe baixe nosso arquivo inteligente.zip. Por fim, no canto superior direito, clique no botão Criar versão.

Construindo um bot do Telegram no Yandex.Cloud

Em alguns segundos, quando a função for atualizada, testaremos nosso bot novamente. Agora ele não “reflete”, mas entrega pensamentos inteligentes!

Construindo um bot do Telegram no Yandex.Cloud

Isso é tudo por hoje. Outros artigos seguem. Se você estiver interessado em ler isso, assine as notificações de novos artigos. Você pode se inscrever aqui ou Telegram-canal Tutorial de TI ZakharOu Twitter @mikezaharov.

referências

Código no GitHub
Funções da Nuvem Yandex
Armazenamento de objetos Yandex
Bots: uma introdução para desenvolvedores
API do Telegram Bot

Doa

Construindo um bot do Telegram no Yandex.Cloud

Fonte: habr.com

Adicionar um comentário