Construyendo un bot de Telegram en Yandex.Cloud

Telegram bot creacion

Hoy, a partir de los materiales disponibles, ensamblaremos un bot de Telegram en Yandex.Cloud usando Yandex Cloud Functions (o Yandex para abreviar) y Yandex Object Storage (o Object Storage para mayor claridad). El código estará en Node.js . Sin embargo, hay una circunstancia picante - una especie de organización llamada, por ejemplo, RossKomTsenzur (la censura está prohibida por el artículo 29 de la Constitución), no permite a los proveedores de servicios de Internet para enviar peticiones a Rusia API Telegrama en: https://api.telegram.org/. Bueno, no lo haremos, no, no, no. De hecho, en nuestra bolsa hay los llamados webhooks- con su ayuda, no realizamos solicitudes a una dirección específica, solo enviamos su solicitud como respuesta a cualquier solicitud que recibamos. Es decir, como en Odessa, respondemos la pregunta con una pregunta. Por lo tanto, la API de Telegram no aparecerá en nuestro código.

Descargo de responsabilidad
- , — .

Entonces, haremos un bot que nos proporcionará pensamientos inteligentes. Al igual que en la imagen: puede probarlo en acción: aquí está el nombre: @SmartThoughtsBot . ¿Has notado el botón Alice Skill ? Esto se debe a que el bot es una especie de "compañero" para la habilidad de Alice del mismo nombre , es decir, realiza las mismas funciones que la habilidad de Alice y es posible que puedan coexistir pacíficamente publicitándose entre sí. Cómo crear la habilidad Pensamientos inteligentes se describe en el artículo Alice adquiere la habilidad . Ahora (después de hacer algunos cambios después de la publicación del artículo anterior) en un teléfono inteligente, esta habilidad se verá así:

Telegram bot Pensamientos inteligentes



La habilidad de Alicia Pensamientos inteligentes

Creación de bot


Me gustaría que este tutorial sea útil para todos, incluidos y principiantes "botánicos". Por lo tanto, en esta sección describiré con bastante detalle cómo crear bots en Telegram . Para aquellos que no necesitan esta información, vaya a las siguientes secciones.

Abrimos la aplicación Telegaram , llamamos al padre de todos los bots (tienen todo lo que la gente tiene) - @BotFather - y primero le damos el comando / help para actualizar lo que podemos hacer. Ahora nos interesará el comando / newbot .

Crea un nuevo bot

Dado que el bot descrito aquí ya se ha creado, para fines de demostración crearé otro bot por un corto tiempo (luego lo eliminaré). Lo llamaré DemoHabrBot . Nombres ( nombre de usuario) todos los bots de telegramas deben terminar con la palabra bot , por ejemplo: MyCoolBot o my_cool_bot , esto es para bots. Pero primero, dale un nombre al bot ( nombre ), y esto es para las personas. El nombre puede estar en cualquier idioma, contener espacios, no tiene que terminar con la palabra bot y ni siquiera tiene que ser único. En este ejemplo, llamé a este bot Demo Habr .

Nombre del bot

Ahora seleccione el nombre del bot (nombre de usuario , el de los bots). Vamos llaman DemoHabrBot . Todo lo relacionado con el nombre del bot ( nombre ) no se aplica a su nombre en absoluto: nombre de usuario(o se aplica, pero exactamente lo contrario). Después de crear con éxito un nombre de bot único, necesitamos copiar y guardar (¡con la más estricta confidencialidad!) El token que se muestra en la captura de pantalla con una flecha roja. Con él, un poco más tarde instalaremos el webhook proveniente de Telegram en nuestra función Yandex .

Nombre del bot

Ahora demos el comando al padre de todos los bots: / mybots , y él nos mostrará una lista de todos los bots que creamos. Dejemos solo el bot Demo Habr recién horneado (fue creado para mostrar cómo crear bots, pero lo usaremos hoy para otros fines de demostración) y consideremos el bot Smart Thoughts ( @SmartThoughtsBot ). Presione el botón con su nombre en la lista de bots.

Configuraciones de bot

Aquí podemos configurar nuestro bot. Al hacer clic en el botón Editar ... continuaremos editando esta o aquella opción. Por ejemplo, al hacer clic en el botón Editar nombre podemos cambiar el nombre del bot, por ejemplo, en lugar de Pensamientos inteligentes , escribir Ideas delirantes . Botpic es un avatar bot, debe tener al menos 150 x 150 px . Descripción es una breve descripción que el usuario ve cuando inicia el bot por primera vez, como respuesta a la pregunta: ¿Qué puede hacer este bot? Acerca de : una descripción aún más corta que se transmite con un enlace al bot ( https://t.me/SmartThoughtsBot) o cuando se visualiza información al respecto.

Bot: descripción e información breve

Solo necesitamos configurar el equipo. Para hacer esto, haga clic en el botón Editar comandos . Para estandarizar la práctica del usuario, Telegram recomienda usar siempre dos comandos: / start y / help , y si el bot necesita configuraciones, un comando / configuraciones adicionales. Nuestro bot es simple como una pelota, por lo que aún no necesita configuraciones. Escribimos los dos primeros comandos, que luego procesamos en el código. Ahora, si el usuario ingresa una barra (barra: /) en el campo de entrada, aparecerá una lista de comandos para su selección rápida. Todo está como en la imagen: a la izquierda, configuramos los comandos a través del bot-father; a la derecha, estos comandos ya están disponibles para los usuarios en nuestro bot.

Instalación y uso en el comando bot

Función Yandex


Ahora que nuestro bot está creado, vaya a Yandex. Cloud para crear una función que ejecute el código de nuestro bot. Si aún no ha trabajado con Yandex.Cloud , lea el material de Alice en el país de Bitrix , y luego las funciones de Yandex envían correo . Estoy bastante seguro de que estos dos artículos relativamente pequeños serán suficientes para que usted tenga una comprensión básica del tema.

Entonces, en la consola Yandex.Cloud en el menú de navegación izquierdo, seleccione Funciones de nube y luego haga clic en el botón Crear función . Le damos un nombre y una breve descripción para ella.

Crear una función Yandex

Después de hacer clic en Creary después de un par de segundos, aparecerá una nueva función en la lista de todas las funciones. Haga clic en su nombre; esto nos llevará a la página Descripción general de nuestra función. Aquí debe habilitar ( Activar ) el interruptor de función Pública para que esté disponible desde el mundo exterior (para Yandex.Cloud ), y el valor de los campos Enlace e Identificador se mantiene en secreto para todos excepto para usted y Telegram para que su función varios estafadores no pudieron llamar.

Propiedades de la característica Yandex

Ahora, usando el menú de la izquierda, vaya al Editor de funciones. Dejemos a un lado nuestros pensamientos inteligentes por un corto tiempo., y crear una función de plantilla mínima para probar el rendimiento de nuestro bot ... Sin embargo, en este contexto, esta función es nuestro bot ... En resumen, ahora y aquí haremos un bot simple que se "reflejará" (es decir, enviará de vuelta ) solicitudes de usuarios. Esta plantilla siempre se puede utilizar al crear nuevos bots de telegram para asegurarse de que la comunicación con Telegram funciona correctamente. Haga clic en Crear un archivo , llámelo index.js y, en el Editor de código en línea , pegue el siguiente código en este archivo:

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
  };
};

En la consola de Yandex.Cloud, debería verse así:

El código del bot más simple en las funciones de Yandex

A continuación, justo debajo, especificamos el Punto de entrada - index.bot , donde index es el nombre del archivo ( index.js ) y bot es el nombre de la función ( module.exports.bot ). Dejamos todos los demás campos "tal cual", y en la esquina superior derecha, haga clic en el botón Crear versión . Después de unos segundos, se creará esta versión de la función. Pronto, después de probar el webhook , crearemos una nueva versión: Pensamientos inteligentes .

Punto de entrada de la función Yandex

Almacenamiento de objetos


Ahora que hemos establecido la función Yandex , déjenos mientras estamos en la consola Yandeks.Oblaka , cree una llamada un cubo ( cubo , es decir, un cubo en ruso, de ninguna manera un ramo) para almacenar archivos de imagen que se utilizarán en nuestro bot de Pensamientos inteligentes . En el menú de navegación de la izquierda, seleccione el elemento Almacenamiento de objetos , haga clic en el botón Crear depósito , póngale un nombre, por ejemplo, img-bucket y, lo más importante, hacemos público el acceso a los objetos leídos ; de lo contrario, Telegram no puede ver nuestras imágenes. Todos los demás campos se dejan sin cambios. Haz clic en el botón Crear cubo .

Cubo de construcción.

Después de eso, la lista de todos los depósitos puede verse así (si este es su único depósito):

Lista de cubos

ahora sugiero hacer clic en el nombre del depósito y crear una carpeta dentro de él para organizar el almacenamiento de imágenes para diferentes aplicaciones. Por ejemplo, para los pensamientos inteligentes del robot de telegramas , creé una carpeta llamada tg-bot-smart-thoughts (nada, entiendo este cifrado). Crea algunos de ustedes también.

Crear una carpeta dentro de un cubo

Ahora puede hacer clic en el nombre de la carpeta, ingresar y cargar archivos:

Subir un archivo a una carpeta en un cubo

y al hacer clic en el nombre del archivo, obtenga su URL para usar en nuestro bot y, en general, en algún lugar (pero no publique esta URL innecesariamente, ya que el tráfico del almacenamiento de objetos se cobra )

Obtención de una dirección de archivo en el almacenamiento de objetos

Eso, de hecho, es todo conAlmacenamiento de objetos . Ahora sabrá qué hacer cuando vea una llamada para cargar archivos allí.

Webhook


Ahora instalaremos un webhook , es decir cuando el bot recibe una actualización (por ejemplo, un mensaje del usuario), se enviará una solicitud con datos desde nuestro servidor Telegram a nuestra función Yandex . Aquí hay una línea que puede simplemente insertar en el campo de dirección del navegador y luego actualizar la página (esto debe hacerse solo una vez): simplemente reemplace {bot_token} con el token que recibimos del padre bot al crear nuestro bot, y {webhook_url} con la URL Nuestra función Yandex . ¡Sólo un momento! Pero RossKomTsensur prohíbe que los proveedores de la Federación de Rusia presten servicio a la direcciónhttps://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
https://api.telegram.org. Si, eso es correcto. Pero se te ocurre algo. Después de todo, puede, por ejemplo, preguntarle a su abuela al respecto en Ucrania, Israel o Canadá: no hay "comentarios rusos" allí, y un dios sabe cómo vive la gente sin él. Como resultado, la solicitud-respuesta al instalar un enlace web debería verse así:

Instalación de webhook

Prueba. Debería "reflejar".

Primera prueba de bot

Y ahí está. ¡Felicitaciones, ahora la función Yandex se ha convertido en un bot de Telegram !

Pensamientos inteligentes


Y ahora hacemos pensamientos inteligentes. El código está abierto y se encuentra en GitHub . Está bastante bien comentado y solo contiene cien líneas. ¡Léelo como un libreto de diva de ópera!

Código inteligente pensamientos inteligentes

Clone el proyecto e instale las dependencias:

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

Realice los cambios necesarios en el archivo index.js (opcional; no puede cambiar nada). Cree zip - Secundario, el archivo index.js y la carpeta node_modules en, por ejemplo, bajo el nombre smart.zip .

Archivo ZIP del bot Pensamientos inteligentes

Ahora vaya a nuestras funciones Yandex en la consola , seleccione la pestaña Archivo ZIP , haga clic en el botón Seleccionar archivo y descargue nuestro archivo smart.zip . Finalmente, en la esquina superior derecha, haga clic en el botón Crear versión .

Crear una versión funcional del bot

Después de unos segundos, cuando se actualice la función, volveremos a probar nuestro bot. ¡Ahora ya no se "refleja", sino que ofrece pensamientos inteligentes!

Finalización del bot Pensamientos inteligentes

Referencias


GitHub
Yandex Cloud Functions
Yandex Object Storage
Bots: una introducción para desarrolladores Código
API Telegram Bot

Conclusión


Eso es todo por hoy. Otros materiales siguen. Para quienes es interesante leer, suscríbase a las notificaciones de nuevas publicaciones. Puede suscribirse en este sitio (el botón Suscribirse a continuación), o en el tutorial de TI del canal Telegram Zakhar , o en la comunidad del mismo nombre en VK , o Twitter @mikezaharov .

Rosquillas


Rosquilla

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


All Articles