Bot de telegrama sem servidor usando nuvem Yandex

Olá! Meu nome é Viktor Pavlov e sou um estagiário-professor de ciência da computação em uma faculdade na Rússia. Portanto, para os alunos, tentamos introduzir as tecnologias mais recentes no processo educacional, e os bots "sem servidor" são uma dessas áreas.



Este artigo é inspirado pela popularidade do recurso entre os alunos programadores, mas tentarei contar tudo da forma mais simples possível para programadores novatos. Como resultado, criaremos um Echo bot simples como um modelo para várias modificações.



PS Além disso, o artigo é inspirado na falta de um tutorial em Python, existe um bom tutorial em Nodejs .



Link para a

documentação do Yandex Cloud Functions Link para a documentação da API do Telegram .






Etapa 1 : registro e login na plataforma em nuvem Yandex



Nota
. , Serverless VPS. «» .



Etapa 2 : inserir funções. Aqui você precisa selecionar "Cloud Functions" no painel esquerdo do "Console de gerenciamento"



imagem



Etapa 3 : Clique no botão imagem. Em seguida, definimos um nome e uma descrição de função significativos.



Adendo
< >-<>-<>.



telegram-study-bot, weather-get-api ..



. language=python3.7, lib=telebot



Passo 4 : Selecione a aba "Editor"



imagem



Após a qual abriremos uma janela para gerenciamento do código de nossa função. Aqui podemos escolher:



1) "Runtime", no nosso caso é python3.7



Sobre dependências
preview , ( 02.10.2020 )



2) "Métodos" são responsáveis ​​por como o código será passado para a função. Neste artigo, usaremos o Editor de código direto como o exemplo mais simples.



3) O “ponto de entrada” é o responsável por qual função receberá a solicitação e será o início da ação de nossa função, iremos indicá-lo um pouco mais tarde.



4) Em seguida, vêm os "Parâmetros", sugiro deixá-los como estão.



Se você quiser usar autorizações
, , .



Passo 5 : Certifique-se de que temos os conjuntos "Runtime" e "Método" corretos.



imagem



Em seguida, clique em "Criar arquivo", vamos chamá-lo de main.py.



Etapa 6 : Isso abrirá o editor de código, onde podemos criar uma função de manipulador de solicitação. Vamos chamá-lo de handler e inserir este código:



import json

def handler(event, context):
    body = json.loads(event['body'])
    return {
        'statusCode': 200,
        'headers': {
            'Content-Type': 'application/json'
        },
        'body': json.dumps({
            'method': 'sendMessage',
            'chat_id': body['message']['chat']['id'],
            'text':  body['message']['text']
        }),
        'isBase64Encoded': False
    }


Analise o código
«json», body json- python dict.



handler , , . .



body Python json.loads body .



, webhook telegram , body, json.dumps, .



ATENÇÃO!!!



No "Ponto de entrada", você precisa especificar esta função como o início do script. Escrevemos main.handler . Deveria ser assim:



imagem



Em seguida, clicamos em "Criar versão" e esperamos ser transferidos para a guia "Visão geral".



Passo 7 : Aqui estamos interessados ​​no "Link para ligar" e no switch "Função pública". Pressionamos o botão e lembramos onde está o link para a chamada.



imagem



Etapa 8 : Crie um bot de telegrama e copie seu token. Você precisa criar uma consulta como:



https://api.telegram.org/bot<bot_token>/setWebHook?url=<webhook_url>


Onde bot_token é o token do bot do telegrama e webhook_url é o "link de chamada" das funções (etapa 7). Esta solicitação deve ser coletada e inserida na linha do navegador.



Solicitar exemplo
https://api.telegram.org/bot1234567:AAAAAAAAAAAAAAA/setWebHook?url=https://functions.yandexcloud.net/asdjaskjdasdjasd




Passo 9 : Envie um "olá" ao bot e veja o que conseguimos no final.



imagem



Obrigado pela atenção! Se você leu este artigo, ficarei feliz com várias sugestões para melhorar / complementar / comentar este artigo.



All Articles