Creación de bots para Telegram

← Fundamentos de Python ⌂ Home

Objetivos

Requisitos

Desarrollo

La creación de bots en telegram se puede realizar en cualquier lenguaje de programación únicamente se necesita acceder al API (Application Programming Interface) de Bots de Telegram.

Por fortuna existen varios wrappers que nos facilitan el acceso a dicho API, uno de los más populares para Python es python-telegram-bot. Así que en el siguiente tutorial haremos uso de él.

Instalación de los módulos necesarios

Lo primero es realizar la instalación mediante pip (pueden hacerlo dentro de algún entorno virtual).

pip install python-telegram-bot

Dar de alta el bot en Telegram

Posterior tenemos que dar de alta el Bot en Telegram, esto lo hacemos con ayuda de… pues un Bot de Telegram creado para eso, BotFather, entonces desde nuestra cuenta de telegram iniciamos una conversación con @BotFather

Le enviamos el siguiente mensaje

/start

O simplemente le damos en el botón de iniciar.

Y nos mostrará todo lo que puede hacer:

I can help you create and manage Telegram bots. If you are new to the Bot API, please see the manual (https://core.telegram.org/bots).

You can control me by sending these commands:

/newbot - create a new bot
/mybots - edit your bots [beta]
/mygames - edit your games (https://core.telegram.org/bots/games) [beta]

Edit Bots
/setname - change a bot's name
/setdescription - change bot description
/setabouttext - change bot about info
/setuserpic - change bot profile photo
/setcommands - change the list of commands
/deletebot - delete a bot

Bot Settings
/token - generate authorization token
/revoke - revoke bot access token
/setinline - toggle inline mode (https://core.telegram.org/bots/inline)
/setinlinegeo - toggle inline location requests (https://core.telegram.org/bots/inline#location-based-results)
/setinlinefeedback - change inline feedback (https://core.telegram.org/bots/inline#collecting-feedback) settings
/setjoingroups - can your bot be added to groups?
/setprivacy - toggle privacy mode (https://core.telegram.org/bots#privacy-mode) in groups

Games
/newgame - create a new game (https://core.telegram.org/bots/games)
/listgames - get a list of your games
/editgame - edit a game
/deletegame - delete an existing game

Lo que nos interesa es “crear un nuevo bot” así que le mandamos el mensaje

/newbot

Y nos pedirá cierta información como el nombre del bot (nombre que será visible) y el nombre de usuario el cual debe ser único (un nombre corto entre 5-32 caracteres y que debe acabar con la palabra bot).

Los datos que le envíe en mi caso fueron los siguientes:

Una vez dada la información nos felicitará y nos dará un código de acceso al bot para utilizar con la API. No pierdas de vista el código porque más adelante lo usaremos.

Si pulsamos sobre el link que nos ha dado podemos ver que efectivamente nuestro bot ya aparece en Telegram y que podemos utilizarlo. En mi caso me dio el siguiente link: https://t.me/tareas_escuela_bot

Asignando comandos al Bot

En esta parte tenemos que dar de alta los comandos a los cuales nuestro Bot va responder, en este tutorial queremos almacenar una lista de tareas pendientes por cada una de las materias de nuestra escuela. Entonces los comandos que ocuparé hasta ahorita (posiblemente se agregue más funcionalidad al bot mas adelante) son los siguientes:

Entonces el proceso para darlos de alta es mandarle a BotFather el siguiente comando:

/setcommands

Y nos preguntará a que Bot queremos cambiarle los comandos, elegimos el que acabamos de crear.

Y te pide que le mandes la lista de comandos en la siguiente forma:

command1 - Description
command2 - Another description

Entonces se la enviamos:

materia - Dar de alta una materia
tarea - Dar de alta una tarea de una materia
pendientes - Ver lista de tareas pendientes 
realizada - Marcar una tarea como realizada

Y nos mandará un mensaje que fue actualizado correctamente, para comprobarlo podemos ir a nuestro bot y ver los comandos disponibles al escribir en el chat una diagonal (/) y ver los comandos que aparecen.

Descripción, Acerca De y Foto de Perfil del Bot

También podemos cambiarle la foto de perfil a nuestro Bot y agregarle una pequeña descripción y un acerca de, y así es, lo hacemos a través de BotFather con los siguientes comandos:

/setdescription
/setabouttext
/setuserpic

Hasta ahorita solo cambiaré la descripción y el acerca de, así que le envío el siguiente comando a BotFather:

/setdescription

Y nos pedirá seleccionar el Bot al que queremos cambiarle la descripción y la descripción que vamos a enviar. Esta descripción saldrá en la pantalla cuando alguien abra el Bot.

Hola, te ayudo a recordar tus tareas pendientes.

Ahora cambiamos el acerca de con el siguiente comando:

/setabouttext

Nos pedirá seleccionar el Bot al que queremos cambiarle el acerca de y el texto que vamos a enviar. El texto saldrá en el detalle del Bot.

Hola, te ayudo a recordar tus tareas pendientes. Dudas o detalles de funcionamiento a: hola@alejandrozepeda.mx

Programación del Bot