En este tutorial vamos a aprender a cómo crear y programar un bot para Telegram con una serie de sencillos pasos y tips a tener en cuenta a la hora de hacerlo.

Antes de nada tenemos que ponernos un poco en contexto. Por ello vamos a ver primero qué es Telegram.

¿Qué es Telegram?

Telegram se trata de una aplicación de mensajería móvil que fue desarrollada en sus inicios por los fundadores de VKontakte, es decir, la red social más popular en Rusia. A simple vista se puede comprobar que su aspecto es muy similar a WhatsApp, sin embargo, tiene peculiaridades que la hacen muy potente. Una de estas peculiaridades es que es una plataforma abierta y, por tanto, dispone de una API que permite a aplicaciones de terceros conectar con la red.

Aprende a hacer Bots en Telegram

Esto es lo que realmente nos interesa a la hora de crear los bots y ponerlos en funcionamiento. Una vez explicado esto, ya podemos entrar en materia.

¿Cómo crear un Bot en Telegram?

Lo primero que haremos es dirigirnos a la plataforma de Telegram y buscar @BotFather para poder crear nuestro bot. Es aquí cuando le daremos a iniciar y nos saldrán una lista de varios comandos para poder personalizarlo a nuestro gusto, pero lo que nos interesa es darle a /NewBot para crearlo.  Nos debería aparecer una pantalla como esta:

Paso 1 - Creación de un bot en Telegram con Python

Y simplemente debemos seguir los pasos que nos indica, como podemos ver en la imagen siguiente:

Paso 2 - Creación de un bot en Telegram con Python

Una vez tenemos esto, ya podemos seguir con la parte importante: La programación del bot. Pero antes hay que decir que, con los comandos de Edit Bots y Bot Settings, podemos personalizar nuestro bot como queramos: la foto, descripción, privacidad en los grupos, si podemos añadirlo a grupos e infinidad de cosas, que más adelante iremos explicando con calma.

El siguiente paso es preparar la zona de creación del bot. Este paso es lo más importante, ya que sin él, no tendríamos donde almacenar los datos del mismo. En cambio, dejaremos un poco a la elección de cada uno como hacerlo, ya que hay varias opciones disponibles.

Para programar el bot usaremos la API en Python que encontramos por internet, ya que es de las más cómodas y sencillas de usar, aunque los bots se pueden programar en cualquier lenguaje siempre y cuando se encuentre  la API.

Por otro lado, a la hora de almacenar los datos de nuestro bot, usaremos un servidor propio, pero de tal manera que todos podamos trabajar gratuitamente, existen varias páginas de host gratis como es el caso de C9.io en la cual podemos tener alojado nuestro bot y trabajar y editar con él sin ningún problema.

El sistema operativo con el que trabajaremos es Linux y deberemos instalar unos paquetes para que, a la hora de programar, no tengamos problema. Simplemente deberemos escribir:

sudo pip install pyTelegramBotAPI

Esperamos a que se realice el proceso y ya tendríamos listo nuestro entorno para realizar la programación.

Programación del BOT

Como bien dijimos antes, usaremos el lenguaje Python, y si no sabes programar en Python no pasa nada, no es complicado de aprender. Lo primero que haremos es crear un archivo “.py” al que llamaremos “bot.py” e introduciremos las primeras líneas de nuestro código:

En estas líneas estamos definiendo las librerías que vamos a usar, añadimos el Token del bot que nos hace falta para vincular este archivo con el bot en telegram y definimos una serie de parámetros para que en un “.txt” se registren todos los usuarios que van a usar nuestro bot ( Log), que se encuentra en el listener. Cada línea del código está comentada con la función que desempeña cada una.

El primer comando que pondremos es el /ayuda. Lo primmero es poner :

@bot.message_handler(commands=[‘ayuda’])

Con esto indicamos que vamos a controlar cuando pongamos /ayuda. En telegram hay dos tipos de lectura de los comandos, vía texto que lo leerá directamente cuando vayamos escribiendo en un grupo o chat individual ( Lo veremos mas adelante) o por barra inclinada ( ” / “). En este caso nos encontramos explicando lo segundo. Lo que pongamos entre los corchetes y comillas simples será la palabra que deberemos poner despues de la barra inclinada para que se ejecute, en este caso es /ayuda.

Posteriormente a esto definimos la función con def comand_ayuda(m), tambien definimos el cid = m.chat.id que lo usaremos lineas mas adelante para ahorrar espacio y dejarlo todo un poco mas estético. Por ultimo tenemos el bot.send-message( cid, AYUDA). Este comando lo que hará es enviar al cid, es decir al chat donde se ejecute, la ayuda que hemos definido encima del listener anteriormente. Si por ejemplo no quisiéramos hacer flood de mensajes en un grupo podemos cambiar el cid por:

uid = m.from_user.id

Con esto lo que haremos es que cuando pongamos /ayuda se nos envié la información a nuestro chat privado. Hay que tener en cuenta que, para que funcione, hay que iniciar por privado primeramente el bot.

Por otro lado si eligiéramos esta ultima opción, recomiendo hacer lo siguiente en lo que respecta a las lineas de enviar el mensaje:

bot.send_message( uid, AYUDA)

bot.send_message( cid, “Se te ha enviado la información por privado”)

De esta manera aparte de enviar la información por privado, lo notificaríamos por el grupo.

Con “Grupo = – XXXX” definimos que la palabra grupo se vincule con el Id del grupo donde nos encontremos. Al meter el bot en un grupo, en la propia consola nos saldrán los mensajes del mismo de esta manera:

nombre del usuario( que ha puesto el mensaje) [ID GRUPO]: Mensaje

Aunque este comando es muy parecido a lo anterior, nos vamos a centrar en que podemos hacer uso del if/else de tal manera que si se ejecuta el comando y tenemos metido el bot en varios grupos o chats, podamos elegir que mensaje queremos poner en cada uno. En este caso tenemos que si el cid coincide con el del grupo, entonces enviaremos un mensaje solo a ese grupo, en cambio (Else) sino fuera asi poner otro mensaje. Por otro lado, en vez de jugar con el cid, podemos elegir que persona queremos que ejecute el comando. Esto lo conseguiremos sustituyendo donde tenemos cid por uid == XXX, esta vez el numero será positivo, ya que es el numero de identificación de usuario.

Para saber el número de usuario, simplemente tenemos que reenviar un mensaje de dicho usuario a este bot: @userinfobot y nos dará toda la información que necesitamos.

Continuamos con la programación de nuestro bot en Telegram mediante Python y es hora de enviar archivos multimedia:

La estructura a la hora de mandar contenido multimedia es muy parecida a lo que hemos visto antes. Aunque vamos directamente a lo que difiere del resto. Lo primero que haremos es darle un nombre al contenido que queremos enviar, en este caso a la imagen llamada piensa3D.jpg le asignaremos el nombre de Piensa3D y pondremos:

Piensa3D=open(‘piensa3D.jpg’, ‘rb’)

De esta manera lo que haremos es abrir el archivo piensa3D.jpg que tendremos guardado y subido previamente a nuestro servidor, donde se encuentra nuestro .py. Hay que respestar las mayusculas y minusculas a la hora de poner el nombre del archivo.

Una vez hecho esto haremos que el bot envié la imagen con:

bot.send_photo(cid, Piensa3D)

Esto quiere decir que, cuando pongamos el comando /piensa3D, el bot enviará en forma de foto nuestra imagen. Pero estas caracteristicas pueden varias, es decir, si por ejemplo en vez de photo, ponemos sticker, a pesar de que el formato de la imagen sea .jpg, telegram convertirá la foto en sticker. Esto es una ventaja a la hora del almacenamiento, ya que ahorraremos que se acumulen archivos en una conversacion.

Y para finalizar pondriamos esto, para cerrarlo:

Piensa3D.close() 

Por otro lado como podemos ver en la parte 4 de nuestro código, tambien podemos abrir archivos de audio, video etc y solo tendríamos que cambiar en el “bot.send_” por la palabra / tipo de archivo que queramos. Añadir tambien que en el formato video, si se envia como .mp4, Telegram lo detectará como un Gif.

Para acabar esta parte introduciremos la lectura por chat. Esto quiere decir que cuando pongamos una palabra concreta por el mismo, el bot tiene la función de leer todo lo que pongamos y una vez coincida la palabra o frase, ejecutará el comando. En este caso tenemos la palabra hola ( en minúscula),  por lo que una vez la lea, enviará la frase “Hola a ti también”.

¡Ya está casi todo!

Una vez tenemos todo programado solo nos haría falta subir el .py a nuestro servidor junto con nuestros archivos multimedia, si hemos añadido alguno. Solo tendríamos que ir a la consolaejecutar:

cd  {carpeta contenedora de nuestro bot}

screen python bot.py

Con esto lo que haríamos es crear una screen, de esta manera cuando cerremos la consola, se nos quedaría ejecutando en segundo plano el bot.

Y hasta aquí llegaría este tutorial sencillo para la creacion y programación de un bot para Telegram en Python. Si tienes cualquier duda al respecto puedes dejar un comentario al final de la página e intentaremos responder cuanto antes.

Tutorial Programación BOTs en Telegram con Python
5 (100%) 1 voto