Profile Software Services

Cómo crear un Chatbot en Python

En este post enseñaremos paso a paso como crear un Chatbot para Telegram usando Python. Existen dos formas mediante las cuales el bot puede recibir mensajes de los servidores de Telegram: getUpdates y Webhooks. En este ejemplo, usaremos el método getUpdates.

Requisitos necesarios

Para instalar Python, dirígete a la web oficial y sigue las instrucciones: https://www.python.org/

Puedes usar el editor de código o el IDE que más te guste. Para este ejemplo utilizaremos Visual Studio Code.

Primeramente, debemos crear el bot en Telegram. Para ello debemos buscar en Telegram un bot que se llama Bot Father, que es el bot oficial de Telegram que permite administrar nuestros bots. 

Bot Father.

Lo primero es iniciar este bot. Notarás que automáticamente mostrará el comando /start, y luego una lista de comandos. 

A continuación, seleccionamos el comando /newbot.

El próximo paso es otorgar un nombre al bot. Y a continuación debemos seleccionar un nombre de usuario para el bot. Como se muestra en el patrón debe terminar en _bot. El nombre de usuario debe de ser único.

Lo más importante después de creado es conservar el token generado. Pues con este token podremos trabajar con la API. Por razones de seguridad, este token no se puede compartir, pues cualquier persona que conozca este token puede manipular el bot. El token puede anularse también a través del Bot Father y recibir uno nuevo.

Implementación del bot

Para organizar mejor el proyecto, creamos una carpeta y dentro de ella ubicamos los archivos del bot. Abrir esta carpeta con el editor de código que hayas seleccionado, y dentro de ella crea un archivo que se llame config.py. En este archivo definimos una variable para el token, y le asignamos el token que obtuvimos en Telegram.

A continuación, instalamos la librería de Telegram para poder desarrollar nuestro bot. Para ello abrimos una terminal y escribimos: pip install pytelegrambotapi

Una vez que tenemos instalada la librería, creamos un programa para utilizarla. Para ello, creamos un nuevo archivo en la carpeta al cual podemos llamar mibot.py
Lo primero que debemos hacer en este archivo es importar el token y a continuación importar la librería que hemos instalado. Es recomendable consultar la documentación de la librería. Notarás que para importar no se usa el mismo nombre que el que se emplea para instalar.

A continuación, debemos instanciar el bot. Para ellos, creamos una variable que llamaremos bot y usamos la librería telebot, y lo instanciamos usando la clase TeleBot(). A esta clase le pasamos como parámetro el token que hemos definido en config.py

Ahora veremos cómo programar nuestro bot. Básicamente, programamos cómo responderá el bot a los mensajes que recibe de los usuarios.

En este punto debemos considerar dos tipos de respuesta. La primera para determinar qué hará el bot si recibe un comando (los que comienzan con “/”), y el segundo tipo para el resto (texto, foto, audio, sticker, documento u otros)

Comenzamos por controlar qué hacer con los comandos. Para ello debemos usar los decoradores. Los decoradores comienzan por @ y a continuación el nombre de una función, ejemplo: @bot.message_handler()

Los decoradores son funciones que reciben como parámetro de entrada una función, y devuelve otra función.

Al decorador le pasaremos un argumento, en este caso una lista de comandos. Aquí pasaremos solo el comando “start”, pero podemos incluir otro comando si queremos que hagan exactamente lo mismo. Y a continuación definimos una función para este comando, por ejemplo: cmd_start. Esta función recibe un único argumento, en la documentación se le llama message. En esta función haremos que cite el mensaje que se ha enviado al bot y responda con un texto. Para ellos usamos la función reply_to.

A continuación, escribimos nuestro programa principal. Lo primero es mostrar en la consola un mensaje para saber si se está ejecutando el bot. Y a continuación, usamos un método del objeto bot (infinity_polling), para comprobar si se reciben mensajes nuevos. Este método es un bucle infinito.

Ahora programamos la reacción  del bot a los mensajes que no sean comandos. Esto lo hacemos de la misma forma que para los comandos, con el mismo decorador, pero con el parámetro “content_types”. El valor de este parámetro también es una lista, y en ella indicamos a qué tipo de contenido reaccionará la función que se define a continuación. En nuestro ejemplo usaremos “text”. Puedes consultar todos los tipos posibles en la documentación.

Anteriormente, usamos el método “reply_to”, para citar un mensaje. Ahora usaremos un método para enviar un mensaje sin citar. El método se llama “send_message”, el cual recibe como mínimo 2 parámetros:

  1. chatID: es el identificador único que tiene cada chat en Telegram. Este id es un número entero. Esta información la extraemos del objeto message, en el atributo chat.id
  2. Texto que vamos a enviar.

Hasta aquí tenemos la estructura básica para el funcionamiento de un bot de Telegram. Puedes definir más funciones y comandos para manejar qué hará tu bot. Para probar el bot, ejecutamos el archivo mibot.py en una terminal, y luego abrimos Telegram e iniciamos el bot.

Conclusiones

Hemos visto un ejemplo práctico sobre como crear un Chatbot para Telegram utilizando Python. Especificando las fases en las que el bot puede recibir mensajes de los servidores de Telegram: getUpdates y Webhooks. En el ejemplo presentado, se ha utilizado el método getUpdates. Con estos pasos, se puede crear un Chatbot para Telegram de manera fácil y rápida utilizando Python.

Referencias de interés:

https://core.telegram.org/bots/api

https://core.telegram.org/bots/api#updating-messages

 https://pypi.org/project/pyTelegramBotAPI/

Salir de la versión móvil