Construyendo un bot de Telegram en Yandex.Cloud

Construyendo un bot de Telegram en Yandex.Cloud

Hoy, a partir de materiales improvisados, recogeremos en Yandex.Cloud Telegram bot utilizando Funciones de la nube de Yandex (o Funciones Yandex por brevedad) y Almacenamiento de objetos Yandex (o Almacenamiento de objetos - para mayor claridad). El código estará encendido Node.js. Sin embargo, hay una circunstancia picante: cierta organización llamada, digamos, RossKomCensura (la censura está prohibida por el artículo 29 de la Constitución de la Federación Rusa), no permite que los proveedores de Internet en Rusia transfieran solicitudes a API de telegramas por dirección: https://api.telegram.org/. Bueno, no lo haremos - no, no. De hecho, en nuestra bolsa hay los llamados. webhooks - con su ayuda, no hacemos solicitudes a una dirección específica, sino que solo enviamos nuestra solicitud como respuesta a cualquier solicitud que se nos haga. Es decir, como en Odessa, respondemos una pregunta con una pregunta. Es por eso API de telegramas no aparecerá en nuestro código.

Descargo de responsabilidadLos nombres de las organizaciones estatales mencionadas en este artículo son ficticios y las posibles coincidencias con los nombres de organizaciones de la vida real son accidentales.

Entonces, haremos un bot que nos proporcione pensamientos inteligentes. Exactamente como en la imagen:

Construyendo un bot de Telegram en Yandex.Cloud

Puedes probarlo en acción - aquí está el nombre: @SmartThoughtsBot. Fíjate en el botón "La habilidad de Alicia"? Esto se debe a que el bot es una especie de "compañero" del epónimo la habilidad de alicia, es decir. cumple las mismas funciones que la habilidad de alicia y, quizás, que puedan convivir pacíficamente anunciándose unos a otros. Acerca de cómo crear Habilidad de pensamiento inteligente descrito en el artículo Alice obtiene la habilidad. Ahora (después de hacer algunos cambios después de la publicación del artículo anterior) en un teléfono inteligente este habilidad se verá algo como esto:

Construyendo un bot de Telegram en Yandex.Cloud

creación de bots

Me gustaría que este tutorial sea útil para todos, incl. y principiantes "constructores de bots". Por lo tanto, en esta sección describiré con cierto detalle cómo crear en general en TelegramLos robots. Para aquellos que no necesitan esta información, continúe con las siguientes secciones.

Abre la aplicacion Telegaram, llamamos al padre de todos los bots (tienen todo como personas) - @BotFather - y para empezar le daremos el comando /help para refrescarnos la memoria de lo que podemos hacer. Ahora nos interesa el equipo. / newbot.

Construyendo un bot de Telegram en Yandex.Cloud

Dado que el bot descrito aquí ya se ha creado, con fines de demostración crearé otro bot por un breve período de tiempo (luego lo eliminaré). lo llamaré DemostraciónHabrBot. nombres (nombre de usuario) todos los bots de Telegram deben terminar con una palabra bot, Por ejemplo: micoolbot o mi_cool_bot Esto es para bots. Pero primero, dale un nombre al bot (nombre ) es para personas. El nombre puede estar en cualquier idioma, contener espacios, no tiene que terminar con una palabra bot, y ni siquiera tiene que ser único. En este ejemplo, llamé a este bot Hablar de demostración.

Construyendo un bot de Telegram en Yandex.Cloud

Ahora elige un nombre para el bot (nombre de usuario, el de los bots). llamémoslo DemostraciónHabrBot. Todo lo relacionado con el nombre del bot (nombre ) no está relacionado con su nombre en absoluto - nombre de usuario (o aplica, pero exactamente lo contrario). Después de crear con éxito un nombre de bot único, debemos copiar y guardar (¡con la más estricta confidencialidad!) el token que se muestra en la captura de pantalla con una flecha roja. Con su ayuda, luego instalaremos el saliente. Telegram'un webhook para nuestro Función Yandex.

Construyendo un bot de Telegram en Yandex.Cloud

Y ahora le daremos la orden al padre de todos los bots: / mybotsy nos mostrará una lista de todos los bots que hemos creado. Dejemos el bot recién horneado solo por ahora Hablar de demostración (fue creado para mostrar cómo crear bots, pero lo usaremos hoy para otros propósitos de demostración), y considere el bot pensamientos inteligentes (@SmartThoughtsBot). Haga clic en el botón con su nombre en la lista de bots.

Construyendo un bot de Telegram en Yandex.Cloud

Aquí es donde podemos configurar nuestro bot. Presionando un botón Editar… pasaremos a editar una u otra opción. Por ejemplo, haciendo clic en el botón Editar nombre podemos cambiar el nombre del bot, digamos en lugar de pensamientos inteligentesescribir ideas locas. foto de fondo - este es el avatar del bot, debe ser al menos 150 150 px x. Descripción es una breve descripción que el usuario ve cuando se inicia el bot por primera vez, como respuesta a la pregunta: ¿Qué puede hacer este bot? Nuestra Empresa - una descripción aún más corta, que se transmite con un enlace al bot (https://t.me/SmartThoughtsBot) o al ver información al respecto.

Construyendo un bot de Telegram en Yandex.Cloud

Solo tenemos que configurar los comandos. Para hacer esto, presione el botón Editar comandos. Para estandarizar las prácticas de los usuarios Telegram recomienda utilizar siempre dos comandos: / inicio и /ayuda, y si el bot necesita configuración, un comando adicional /settings. Nuestro bot es tan simple como una pelota, por lo que aún no necesita ninguna configuración. Escribimos los dos primeros comandos, que luego procesaremos en el código. Ahora, si el usuario ingresa una barra inclinada (carácter de barra inclinada: /) en el campo de entrada, aparecerá una lista de comandos para su selección rápida. Todo es como en la imagen: a la izquierda, establecemos comandos a través del bot-padre; a la derecha, estos comandos ya están disponibles para los usuarios en nuestro bot.

Construyendo un bot de Telegram en Yandex.Cloud

Función Yandex

Ahora que nuestro bot ha sido creado, vamos a Yandex.Cloudpara crear una función que ejecutará nuestro código de bot. Si no has trabajado con Yandex.Cloud lee el material Alicia en la tierra de Bitrix, y entonces - Yandex funciones enviar correo. Estoy casi seguro de que estos dos artículos relativamente pequeños serán suficientes para que tenga una comprensión básica del tema.

Entonces en la consola Yandex.Nubes en el menú de navegación izquierdo, seleccione el elemento Funciones en la nube, y luego presione el botón Crear una función. Le damos un nombre, y para nosotros, una breve descripción.

Construyendo un bot de Telegram en Yandex.Cloud

Después de hacer clic en el botón crear y después de un par de segundos, la nueva función aparecerá en la lista de todas las funciones. Haga clic en su nombre - esto nos llevará a la página Descripción nuestra función. Aquí debe habilitarOn) cambiar funcion publicapara que esté disponible desde el exterior (por Yandex.Nubes) del mundo, y el valor de los campos Enlace para llamar и Идентификатор - manténgalo en secreto para todos, excepto para usted y Telegram, para que varios estafadores no puedan llamar a su función.

Construyendo un bot de Telegram en Yandex.Cloud

Ahora, usando el menú de la izquierda, vaya a editor funciones Dejemos de lado por un momento nuestra pensamientos inteligentes, y crear una función de plantilla mínima para comprobar el rendimiento de nuestro bot... Sin embargo, en este contexto, esta función es nuestro bot... En resumen, ahora y aquí mismo haremos el bot más simple que "reflejará" ( es decir, devolver) las solicitudes de los usuarios. Esta plantilla siempre se puede usar al crear nuevos bots de Telegram para asegurarse de que la comunicación con Telegrama'om funciona bien. Hacer clic Crea un archivo, llámalo index.jsy en línea editor de código 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í:

Construyendo un bot de Telegram en Yandex.Cloud

A continuación, indicamos punto de entrada - índice.botDonde índice este es el nombre del archivo (index.js), y bot - nombre de la función (módulo.exportaciones.bot). Deje 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. Poco después de la prueba webhook, crearemos una nueva versión − pensamientos inteligentes.

Construyendo un bot de Telegram en Yandex.Cloud

Almacenamiento de objetos

Ahora que hemos configurado Función Yandexvamos mientras estamos en la consola Yandex.Nubes, crear un supuesto. balde (cubo, es decir. cubo en ruso, de ninguna manera un ramo) para almacenar archivos de imagen que se utilizarán en nuestro bot pensamientos inteligentes. Seleccione del menú de navegación izquierdo Almacenamiento de objetos, presiona el botón Crear cubo, asígnele un nombre, por ejemplo, img-cubo, y más importante, Acceso de lectura a objetos hazlo público; de lo contrario, Telegram no verá nuestras imágenes. Todos los demás campos se dejan sin cambios. Presionamos el botón Crear cubo.

Construyendo un bot de Telegram en Yandex.Cloud

Después de eso, una lista de todos los cubos podría verse así (si este es su único cubo):

Construyendo un bot de Telegram en Yandex.Cloud

Ahora propongo hacer clic en el nombre del cubo y crear una carpeta dentro de él para organizar el almacenamiento de imágenes para diferentes aplicaciones. Por ejemplo, para un bot de Telegram pensamientos inteligentes creé una carpeta llamada tg-bot-pensamientos-inteligentes (Nada, entenderé este cifrado). Crea uno también.

Construyendo un bot de Telegram en Yandex.Cloud

Ahora puede hacer clic en el nombre de la carpeta, acceder a ella y cargar archivos:

Construyendo un bot de Telegram en Yandex.Cloud

Y haciendo clic en el nombre del archivo, obténgalo Enlance para usar en nuestro bot, y en general, en cualquier lugar (pero no publique esto Enlance innecesariamente, ya que el tráfico de almacenamiento de objetos cargado).

Construyendo un bot de Telegram en Yandex.Cloud

Aquí, de hecho, eso es todo. almacenamiento de objetos. Ahora sabrá qué hacer cuando vea el mensaje para cargar archivos allí.

Webhook

Ahora instalaremos webhook - es decir. cuando el bot recibe una actualización (por ejemplo, un mensaje del usuario), desde el servidor Telegram en nuestro Función Yandex la solicitud será enviadasolicita) con datos. Aquí hay una cadena que simplemente puede pegar en el campo de dirección del navegador y luego actualizar la página (esto solo debe hacerse una vez): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
solo reemplaza {bot_token} al token que recibimos del bot padre al crear nuestro bot, y {webhook_url} - en Enlance nuestro Funciones Yandex. ¡Espera un minuto! Pero RossKomCensura prohíbe a los proveedores en la Federación Rusa servir la dirección https://api.telegram.org. Sí, eso es correcto. Pero puedes pensar en algo. Después de todo, puede, por ejemplo, preguntarle a su abuela al respecto en Ucrania, Israel o Canadá; allí no hay "censura rusa", y solo Dios sabe cómo vive la gente sin ella. Como resultado, la solicitud-respuesta al instalar el webhook debería verse así:

Construyendo un bot de Telegram en Yandex.Cloud

Pruebas. Debería ser reflejado.

Construyendo un bot de Telegram en Yandex.Cloud

Esto es cierto. Nuestras felicitaciones - ahora Función Yandex se ha convertido Telegram-¡bot!

pensamientos inteligentes

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

Construyendo un bot de Telegram en Yandex.Cloud

Clona el proyecto e instala las dependencias:

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

Haz los cambios que necesites en el archivo index.js (opcional; no se puede cambiar nada). Crear Código Postal-archivo, con un archivo index.js y carpeta nodo_módulos dentro, por ejemplo, llamado inteligente.zip.

Construyendo un bot de Telegram en Yandex.Cloud

Ahora ve en la consola a nuestro Funciones Yandex, selecciona la pestaña archivo ZIP, presiona el botón Seleccionar archivoy descarga nuestro archivo inteligente.zip. Finalmente, en la esquina superior derecha, haga clic en el botón Crear versión.

Construyendo un bot de Telegram en Yandex.Cloud

En unos segundos, cuando se actualice la función, volveremos a probar nuestro bot. ¡Ahora ya no "refleja", sino que entrega pensamientos inteligentes!

Construyendo un bot de Telegram en Yandex.Cloud

Eso es todo por hoy. Siguen otros artículos. Si te interesa leer esto suscríbete a las notificaciones de nuevos artículos. Puedes suscribirte aquí o Telegram-canal Tutorial de TI ZakharO Twitter @mikezaharov.

referencias

Código en GitHub
Funciones de la nube de Yandex
Almacenamiento de objetos Yandex
Bots: una introducción para desarrolladores
API de Telegram Bot

Dona

Construyendo un bot de Telegram en Yandex.Cloud

Fuente: habr.com

Añadir un comentario