Telegram, contronlando tu servidor hablándole a un BOT

Telegram es un software de mensajería instantánea, similar a Whatsapp pero con muchísima más potencia, seguridad y aplicaciones potenciales. Una de las posibilidades que nos ofrece es la creación de bots, contactos virtuales. Además nos proporciona una API bien documentada a través de la que podemos crear programas que controlen esos bots, procesen sus mensajes y realicen ciertas acciones.

En esta entrada voy a explicar como crear un bot desde cero, y como hacer un pequeño programa en Python, capaz de realizar ciertas acciones sobre nuestro servidor dependiendo de lo que le digamos a través de nuestro móvil.

Creación del Bot BotIjo1

Antes de empezar, podemos visitar la web Bots: An introduction for developers donde se explica bastante detalladamente desde el punto de vista de un desarrollador, lo que son los bots y para que se pueden usar.

El primer paso es abrir Telegram, y en la ventana principal buscar al contacto global BotFather:

pScreenshot_2016-03-17-20-02-07

pScreenshot_2016-03-17-20-04-15

Una vez encontrado hacemos clic sobre él, y podremos mantener una conversación para que nos cree nuestro querido BotIjo1. Pulsamos sobre el botón INICIAR en la parte inferior de la pantalla y empezamos:

pScreenshot_2016-03-17-20-04-24

Lo primero que nos muestra es una lista con los comandos disponibles: crear bot, cambiarle el nombre, generar un token de autorización, cambiar la lista de comandos del bot, eliminarlo, …

pScreenshot_2016-03-17-20-06-07Para crear nuestro BotIjo1, debemos introducir el comando /newbot y BotFather nos pedirá el nombre público del bot y el nombre de usuario del bot (pueden ser iguales, aunque no todos los nombres están disponibles):

 pScreenshot1

El último mensaje que nos devuelve BotFather es extremadamente importante ya que nos indica el token de acceso a la API para programar nuestro bot. Lo necesitaremos cada vez que tengamos que hacer uso del bot, es el token interno de Telegram que identifica a nuestro bot.

Ya tenemos preparado nuestro bot, pero ¿cómo hacemos que un programa se se comunique con nosotros a través de ese bot? Vamos a ello.

Dando personalidad a nuestro bot

Existen varias librerías que nos permiten comunicarnos a través de bot con nuestro sistema. Yo he usado una muy sencilla, hecha en Python que se llama pyTelegramBotAPI. La instalamos desde su repositorio Git:

Una vez instalado, podemos abrir alguno de los ejemplos que tenemos en la carpeta examples  y vemos lo simple que es la estructura del programa. Basándome en el detailed_example tengo este código, que me perdonen los programadores de Python, pero es la primera vez que toco este lenguaje de programación:

El código es muy simple (lo podéis descargar desde mi repositorio en GitHub):

  • En la variable API_TOKEN ponemos el token de nuestro bot
  • En la variable commands tenemos los comandos entendibles por el bot
  • Creamos el bot con: bot = telebot.TeleBot(TOKEN)
  • Definimos las funciones que procesaran cada comando con bloques similares a:
  • Ponemos el bot a trabajar con bot.polling()

 

Ejecutamos nuestro programa en python con

 

y nos vamos a nuestro móvil, buscamos a BotIjo1 de forma similar a como buscamos a BotFather, y empezamos a hablar con él:

pScreenshot_2016-03-21-12-00-10

Si volvemos a nuestra linea de comandos, donde lanzamos el programa Python, veremos los comandos que se han introducido, a modo de log:

Como veis es muy fácil crear un bot, y tiene muchísima potencia, todo depende de la imaginación que tengamos: si tenemos alguna cámara web podemos enviar fotogramas, activar una electroválvula de nuestro jardín, encender luces…

¿Qué se puede mejorar? La seguridad. Para evitar que otros usuarios hablen con vuestro bot, podéis filtrar los mensajes e ignorar todos los que no lleguen con determinado chat ID (m.chat.id en el código, y en el log anterior 13443962), de esta forma evitareis sorpresas… 🙂

Además si quereis que el script se ejecute en cada inicio del sistema, lo podéis hacer con upstart creando el archivo botijo1.conf con este contenido en el directorio /etc/init:

Espero que os haya gustado y os animéis a programar vuestros propios bots, con sus comandos 🙂

 

Actualización 29/05/2016:

Si queréis verificar que solo ciertos usuarios pueden ejecutar comandos lo podéis hacer comprobando el m.chat.id, más o menos así, cambiando lo emborronado, por vuestro código:

chat.id

6 Comments

Responder a José María Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *