Bot de telegramas sin servidor que usa Yandex Cloud

¡Hola! Mi nombre es Viktor Pavlov y soy profesor en prácticas de informática en una de las universidades de Rusia. Entonces, para los estudiantes, tratamos de introducir las últimas tecnologías en el proceso educativo, y los bots "sin servidor" son una de esas áreas.



Este artículo está inspirado en la popularidad del recurso entre los estudiantes-programadores, pero intentaré contarlo todo de la manera más simple posible para los programadores novatos. Como resultado, crearemos un bot Echo simple como plantilla para varias modificaciones.



PD Además, el artículo está inspirado en la falta de un tutorial en Python, hay un buen tutorial sobre Nodejs .



Enlace a la

documentación de Yandex Cloud Functions Enlace a la documentación de la API de Telegram .






Paso 1 : Registro e inicio de sesión en la plataforma en la nube de Yandex



Nota
. , Serverless VPS. «» .



Paso 2 : Ingrese las funciones. Aquí debe seleccionar "Funciones en la nube" en el panel izquierdo de la "Consola de administración".



imagen



Paso 3 : Haga clic en el botón imagen. Luego, establecemos un nombre y una descripción de función significativos.



Consejo
< >-<>-<>.



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



. language=python3.7, lib=telebot



Paso 4 : Seleccione la pestaña "Editor"



imagen



Luego de lo cual abriremos una ventana para administrar el código de nuestra función. Aquí podemos elegir:



1) "Runtime", en nuestro caso es python3.7



Acerca de las dependencias
preview , ( 02.10.2020 )



2) Los "métodos" son responsables de cómo se pasará el código a la función. En este artículo usaremos el sencillo editor de código como el ejemplo más simple.



3) El "punto de entrada" se encarga de qué función recibirá la solicitud y será el inicio de la acción de nuestra función, lo indicaremos un poco más adelante.



4) Luego vienen los "Parámetros", sugiero dejarlos como están.



Si desea utilizar autorizaciones
, , .



Paso 5 : Asegúrese de que tenemos el "Tiempo de ejecución" y el "Método" configurados correctamente.



imagen



Luego haga clic en "Crear archivo", llamémoslo main.py.



Paso 6 : Esto abrirá el editor de código donde podemos crear una función de manejo de solicitudes. Llamémoslo controlador e insertemos 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
    }


Analizar el código
«json», body json- python dict.



handler , , . .



body Python json.loads body .



, webhook telegram , body, json.dumps, .



¡¡¡ATENCIÓN!!!



En el "Punto de entrada" debe especificar esta función como el comienzo del script. Escribimos main.handler . Debería ser así:



imagen



Luego hacemos clic en "Crear versión" y esperamos hasta que seamos transferidos a la pestaña "Resumen".



Paso 7 : Aquí estamos interesados ​​en el "Enlace para llamar" y el interruptor "Función pública". Pulsamos el interruptor y recordamos dónde está el enlace para la llamada.



imagen



Paso 8 : crea un bot de telegramas y copia su token. Necesita crear una consulta como:



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


Donde bot_token es su token de bot de telegram, y webhook_url es el "Enlace de llamada" de las funciones (paso 7). Esta solicitud debe recopilarse e insertarse en la línea del navegador.



Ejemplo de solicitud
https://api.telegram.org/bot1234567:AAAAAAAAAAAAAAA/setWebHook?url=https://functions.yandexcloud.net/asdjaskjdasdjasd




Paso 9 : Envía "hola" al bot y mira lo que obtuvimos al final.



imagen



¡Gracias por su atención! Si ha leído este artículo, estaré encantado con varias sugerencias para mejorar / complementar / comentar este artículo.



All Articles