Bot de Telegram

Telegram y MySQL: conexión usando bot

En este post vamos a ver cómo realizar la conexión de Telegram con MySQL a través de un bot, de modo que podamos guardar y consultar datos de una base de datos de MySQL desde Telegram.

Telegram bot con MySQL – Listar e insertar registros a base de datos con comandos

Con lo que veremos vamos a poder insertar datos en una tabla de MySQL desde Telegram y cualquier chat (siempre y cuando nuestro bot pueda leer los mensajes).

También vamos a ver cómo guardar el nombre del usuario y la fecha de envío del mensaje. Será un CRUD (sin Update) básico pero puedes partir del mismo para hacer cosas más específicas.

Descripción del bot

Como lo dice el título, vamos a hacer un bot de Telegram que va a conectarse con MySQL. En este caso voy a programarlo con JavaScript del lado del servidor usando Node.

Recuerda que los bots de Telegram pueden ser programados en varios lenguajes de programación, pero esta vez he decidido usar JS.

Conexión con MySQL

Lo primero que vamos a ver es cómo conectar solo Node y MySQL.

Tenemos el archivo de conexión en donde leemos el host, usuario, nombre de la base de datos y contraseña de un archivo .env:

See the gist on github.

Nota importante: en donde sea que vayas a importar la conexión, antes debes invocar a require("dotenv").config(); para que las variables del entorno sean cargadas. Alternativamente puedes simplemente escribir los datos de la conexión directamente en el código.

Recuerda que la base de datos debe existir, así como las tablas que vamos a usar para insertar, obtener datos y eliminarlos. En mi caso el esquema queda así:

See the gist on github.

Va a ser un simple CRUD de Telegram con MySQL en donde vamos a trabajar con mascotas, guardando además el usuario que la ha registrado y la marca de tiempo del mensaje.

Controlador de MySQL

Ya tenemos la conexión, ahora falta algo que nos ayude a interactuar con la base de datos y realizar las operaciones. Yo he creado un controlador:

See the gist on github.

Como puedes ver, estoy importando la conexión en la parte superior. Estamos exponiendo 3 operaciones básicas, ahora solo vamos a invocarlas desde Telegram.

Telegram y MySQL

Finalmente en el index.js creamos el bot y escuchamos comandos. En este caso lo hice sin botones o cosas complejas para que todo quede simple y nos enfoquemos en la conexión entre la base de datos MySQL y Telegram.

Primero veamos cómo insertar (hacer insert) un dato:

See the gist on github.

Estamos usando expresiones regulares porque en este caso el usuario va a enviar un comando como /insertar Guayaba y tenemos que extraer el nombre de la mascota, por ello es que accedemos a las coincidencias o matches de la expresión regular.

Después de eso simplemente invocamos a insertar de nuestro controlador pasándole el nombre del usuario, la fecha y el nombre de la mascota.

Finalmente respondemos al usuario (aunque no es obligatorio responder, digamos que tu bot puede ser silencioso y registrar todos los mensajes, por ejemplo).

Nota: si tú quisieras simplemente registrar todos los mensajes entonces debes escuchar al evento message.

Listar y eliminar

Para el caso de listar (operación select) tenemos algo muy parecido. En este caso obtengo los registros como un arreglo y luego los convierto a cadena para enviarlos como un simple texto; te repito que hago esto por simplicidad:

See the gist on github.

Eliminar registro de base de datos con bot de Telegram, MySQL y JavaScript

Finalmente vemos el de eliminar que es muy parecido al de insertar pero ahora extraemos el id del registro que se va a eliminar:

See the gist on github.

Así es como podemos tener un bot que elimina, lee registros y los inserta en una base de datos de MySQL, aunque obviamente podemos cambiar el motor de base de datos y el lenguaje de programación.

Por cierto, no importa desde cuál chat se envíe el mensaje, pues todos quedarán registrados en la misma base de datos.

Vídeo de apoyo

Te dejo un vídeo que explica todo lo de este post:

Poniendo todo junto

Bot de Telegram con base de datos MySQL

Te he mostrado los detalles más importantes del código para conectar un bot de Telegram con MySQL. El código completo lo dejo en GitHub.

Una vez que lo hayas descargado instala las dependencias con npm install, luego crea la base de datos y las tablas.

El siguiente paso es crear el archivo .env basándote en el archivo .env.example y configurar tu token para el bot (obtenido con el BotFather), host, usuario, contraseña y nombre de la base de datos de MySQL.

Finalmente ejecuta node index.js, tu bot debería estar en línea y listo para recibir comandos.

Por aquí puedes ver más bots de Telegram que he creado.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Entradas recientes

Imprimir PDF con Bot de Telegram

La impresión de un PDF en cualquier impresora se puede automatizar con un bot de…

13 horas hace

Enviar mensaje con bot de Telegram usando JavaScript (lado del cliente)

Hoy te enseñaré cómo enviar un mensaje a un usuario desde un bot de Telegram…

1 día hace

PHP: incrustar imagen en base64

El día de hoy te enseñaré algo muy sencillo pero útil al programar con PHP:…

1 día hace

Plugin ESC POS – Actualización 3.4.0: imprimir HTML

El plugin para imprimir en impresoras térmicas alcanza hoy su versión 3.4.0 agregando soporte para…

2 días hace

JavaScript (lado del cliente): leer pixeles de imagen

En ocasiones es necesario leer los pixeles y colores de una imagen con JavaScript del…

1 semana hace

PHP y JavaScript: llenar select con AJAX

Siguiendo con los tutoriales de listas desplegables o select con JavaScript, vamos a ver cómo…

1 semana hace

Esta web usa cookies.