Construindo um bot de Telegram no Yandex.Cloud

Criação de bot de telegrama

Hoje, a partir dos materiais disponíveis, montaremos um bot do Telegram no Yandex.Cloud usando as Funções da Nuvem Yandex (ou funções do Yandex para abreviar) e o Armazenamento de Objetos Yandex (ou Armazenamento de Objetos para maior clareza). O código será em Node.js . No entanto, há um picante circunstância - uma espécie de organização chamada, digamos, RossKomTsenzur (censura é proibido pelo artigo 29 da Constituição), não permite que provedores de serviços de Internet para enviar solicitações para a Rússia Telegram API em: https://api.telegram.org/. Bem, não vamos - não, não, não. De fato, em nossa bolsa existem os chamados webhooks- com a ajuda deles, não fazemos solicitações para um endereço específico, apenas enviamos sua solicitação como resposta a qualquer solicitação para nós. Ou seja, como em Odessa - respondemos à pergunta com uma pergunta. Portanto, a API do Telegram não aparecerá em nosso código.

aviso Legal
- , — .

Então, criaremos um bot que nos fornecerá pensamentos inteligentes. Assim como na imagem: você pode experimentá-lo em ação - eis o nome: @SmartThoughtsBot . Você já reparou no botão Alice Skill ? Isso ocorre porque o bot é um tipo de "companheiro" para a habilidade de Alice com o mesmo nome , ou seja, ele desempenha as mesmas funções que a habilidade de Alice e é possível que eles possam coexistir pacificamente anunciando um ao outro. Como criar a habilidade Pensamentos inteligentes é descrito no artigo Alice ganha a habilidade . Agora (depois de fazer algumas alterações após a publicação do artigo acima) em um smartphone, essa habilidade será mais ou menos assim:

Telegram bot Pensamentos inteligentes



Habilidade de Alice Pensamentos inteligentes

Criação de bot


Gostaria que este tutorial fosse útil para todos, incluindo e iniciantes "botânicos". Portanto, nesta seção, descreverei com bastante detalhes como criar bots no Telegram . Para quem não precisa dessas informações - vá para as próximas seções.

Abrimos o aplicativo Telegaram , chamamos o pai de todos os bots (eles têm tudo o que as pessoas têm) - @BotFather - e primeiro damos a ele o comando / help para atualizar na memória o que podemos fazer. Agora estaremos interessados ​​no comando / newbot .

Crie um novo bot

Como o bot descrito aqui já foi criado, para fins de demonstração, criarei outro bot por um curto período de tempo (então o excluirei). Vou chamá-lo de DemoHabrBot . Nomes ( nome de usuário) todos os bots de telegrama devem terminar com a palavra bot , por exemplo: MyCoolBot ou my_cool_bot - isto é para bots. Mas primeiro, dê ao bot um nome ( nome ) - e isso é para as pessoas. O nome pode estar em qualquer idioma, conter espaços, não precisa terminar com a palavra bot e nem precisa ser único. Neste exemplo, chamei esse bot de Demo Habr .

Nome do bot

Agora selecione o nome do bot (nome de usuário , aquele para bots). Vamos chamá-lo de DemoHabrBot . Tudo o que está relacionado ao nome do bot ( nome ) não se aplica 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 isso, um pouco mais tarde instalaremos o webhook vindo do Telegram em nossa função Yandex .

Nome do bot

Agora vamos dar o comando ao pai de todos os bots: / mybots , e ele nos mostrará uma lista de todos os bots que criamos. Vamos deixar o bot Demo Habr recém-assado em paz (ele foi criado para mostrar como criar bots, mas vamos usá-lo hoje para outros fins de demonstração) e considerar o bot do Smart Thoughts ( @SmartThoughtsBot ). Pressione o botão com o nome dele na lista de bots.

Configurações de bot

Aqui podemos configurar nosso bot. Ao clicar no botão Editar ... continuaremos editando esta ou aquela opção. Por exemplo, clicando no botão Editar nome , podemos alterar o nome do bot, digamos, em vez de Pensamentos inteligentes , escreva Idéias ilusórias . Botpic é um avatar de bot, deve ter pelo menos 150 x 150 px . Descrição é uma descrição curta que o usuário vê quando inicia o bot 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 exibir informações sobre ele.

Bot: descrição e informações breves

Nós só precisamos configurar a equipe. Para fazer isso, clique no botão Editar comandos . Para padronizar a prática do usuário, o Telegram recomenda sempre o uso de dois comandos: / start e / help , e se o bot precisar de configurações, um comando / configurações adicionais. Nosso bot é simples como uma bola, por isso ainda não precisa de configurações. Escrevemos os dois primeiros comandos, que depois processamos no código. Agora, se o usuário digitar uma barra (barra: /) no campo de entrada, uma lista de comandos para sua seleção rápida será exibida. Tudo está como na figura: à esquerda - definimos os comandos através do pai-bot; à direita, esses comandos já estão disponíveis para os usuários em nosso bot.

Instalação e uso no comando bot

Função Yandex


Agora que nosso bot foi criado, vá para Yandex. Cloud para criar uma função que executará o código do bot. Se você ainda não trabalhou com o Yandex.Cloud , leia o material de Alice no país do Bitrix e, em seguida, as funções do Yandex enviam e-mails . Tenho certeza de que esses dois artigos relativamente pequenos serão suficientes para que você tenha uma compreensão básica do assunto.

Portanto, no console Yandex.Cloud no menu de navegação esquerdo, selecione Funções da nuvem e clique no botão Criar função . Nós lhe damos um nome e, para ela, uma breve descrição.

Criando uma função Yandex

Depois de clicar em Criare após alguns segundos, uma nova função aparecerá na lista de todas as funções. Clique no nome dela - isso nos levará à página Visão geral de nossa função. Aqui você precisa habilitar ( On ) a opção de função Pública para que ela fique disponível no mundo externo (para Yandex.Cloud ), e o valor dos campos Link e Identificador seja mantido em segredo por todos, exceto você e o Telegram, para que sua função vários vigaristas não puderam ligar.

Propriedades do recurso Yandex

Agora, usando o menu esquerdo, vá para o Editor de funções. Vamos deixar de lado nossos Pensamentos Inteligentes por um curto período de tempo., e crie uma função de modelo mínima para testar o desempenho do nosso bot ... No entanto, neste contexto, essa função é nosso bot ... Em suma, agora e aqui mesmo, faremos um bot simples que será "espelhado" (ou seja, envie de volta ) solicitações de usuário. Esse modelo sempre pode ser usado ao criar novos bots de telegrama para garantir que a comunicação com o telegrama esteja funcionando corretamente. Clique em Criar um arquivo , chame-o de index.js e, no Editor de Código online , 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 do Yandex.Cloud, ele deve se parecer com o seguinte:

O código do bot mais simples das funções Yandex

Em seguida, logo abaixo, especificamos o Ponto de entrada - index.bot , em que index é o nome do arquivo ( index.js ) e bot é o nome da função ( module.exports.bot ). Deixamos 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. Em breve, após testar o webhook , criaremos uma nova versão - Smart Thoughts .

Ponto de entrada da função Yandex

Armazenamento de objetos


Agora que estabelecemos a função Yandex , vamos enquanto estamos no console Yandeks.Oblaka , crie um chamado um balde ( balde , ou seja, um balde em russo, de modo algum um buquê) para armazenar arquivos de imagem que serão usados ​​no bot do Smart Thoughts . No menu de navegação esquerdo, selecione o item Armazenamento de Objetos , clique no botão Criar Balde , crie um nome para ele, por exemplo, img-bucket e, o mais importante, tornemos público o acesso a objetos de leitura - caso contrário, o Telegram não poderá ver nossas fotos. Todos os outros campos permanecem inalterados. Clique no botão Create Bucket .

Construção de caçamba.

Depois disso, a lista de todos os buckets pode ser algo assim (se esse for o único):

Lista de baldes

Agora, sugiro clicar no nome do bucket e criar uma pasta dentro dele para organizar o armazenamento de imagens para diferentes aplicativos. Por exemplo, para o bot de telegrama Smart Thoughts, criei uma pasta chamada tg-bot-smart-thoughts (nada, eu entendo essa cifra). Crie alguns de vocês também.

Criando uma pasta dentro de um balde

Agora você pode clicar no nome da pasta, acessá-la e fazer o upload de arquivos:

Fazendo upload de um arquivo para uma pasta em um balde

e clicando no nome do arquivo - obtenha seu URL para uso em nosso bot e geralmente em algum lugar (mas não publique esse URL desnecessariamente, pois o tráfego do armazenamento de objetos é cobrado )

Obtendo um Endereço de Arquivo no Armazenamento de Objetos

Isso, de fato, é tudo comArmazenamento de objetos . Agora você saberá o que fazer quando vir uma chamada para enviar arquivos para lá.

Webhook


Agora vamos instalar um webhook - ou seja, quando o bot recebe uma atualização (por exemplo, uma mensagem do usuário), uma solicitação com dados será enviada do nosso servidor Telegram para nossa função Yandex . Aqui está uma linha que você pode simplesmente inserir no campo de endereço do navegador e atualizar a página (isso precisa ser feito apenas uma vez): Apenas substitua {bot_token} pelo token que recebemos do pai bot ao criar nosso bot e {webhook_url} com o URL nossa função Yandex . Um momento! Mas a RossKomTsensur proíbe que provedores da Federação Russa sirvam o endereçohttps://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
https://api.telegram.org. Sim está certo. Mas você cria alguma coisa. Afinal, você pode, por exemplo, perguntar à sua avó sobre isso na Ucrânia, Israel ou Canadá - não há "comentários russos" lá, e um deus sabe como as pessoas vivem sem ele. Como resultado, a resposta da solicitação ao instalar um gancho da Web deve ter a seguinte aparência:

Instalação do Webhook

Teste. Deveria "espelhar".

Primeiro teste bot

E aqui está. Parabéns - agora a função Yandex se tornou um bot do Telegram !

Pensamentos inteligentes


E agora fazemos Pensamentos Inteligentes. O código está aberto e está no GitHub . É muito bem comentado, e existem apenas cem linhas. Leia como um libreto de diva de ópera!

Bot Code Smart Thoughts

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 alterar nada). Crie zip --Sondary, o arquivo index.js e a pasta node_modules em, por exemplo, sob o nome smart.zip .

Arquivo ZIP do bot Smart Thoughts

Agora, acesse nossas funções Yandex no console , selecione a guia Arquivo ZIP , clique no botão Selecionar arquivo e faça o download do nosso arquivo smart.zip . Por fim, no canto superior direito, clique no botão Criar versão .

Criando uma versão funcional do bot

Após alguns segundos, quando a função for atualizada, testaremos nosso bot novamente. Agora ele não mais "espelha", mas oferece pensamentos inteligentes!

Conclusão do bot Smart Thoughts

Referências



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

Conclusão


Isso é tudo por hoje. Outros materiais seguem. Para quem é interessante ler, assine as notificações de novas publicações. Você pode se inscrever neste site (o botão Inscrever-se abaixo), no Tutorial de TI Zakhar do canal Telegram , ou na comunidade com o mesmo nome em VK ou no Twitter @mikezaharov .

Donuts


Rosquinha

Source: https://habr.com/ru/post/undefined/


All Articles