HERO, telegram bot

HERO, telegram bot

Mirando uno de mis youtubers hispano de tecnología preferido ( pelado nerd ), comentaba una forma de tener a alguien disponible para resolver problemas cuando las cosas van mal (se cae un servidor, o algo falla) en este sentido, surge el papel de hero, y de las guardias, cosas que son formas de trabajar a dia de hoy que agilizan las operaciones normales de una empresa de tecnología.

¿Que son guardias? y ¿Que es un Hero?

Las guardias son una forma de dar soporte por parte del equipo de desarrollo ante inconvenientes en un servicio. El hero es quien está de guardia, y para evitar tener que recordar quién es el hero de la semana para poder solicitarle ayuda se automatiza este proceso. En slack tenemos una forma de poder hacer esto más sencillo, pero teniendo en cuenta que no todos los programadores tenemos acceso a poder pagar slack, he decidido desarrollar workflow como este en telegram con bots.

Consiguiendo el token del Bot de Telegram y token de GitHub

Estos token sirven para contectar los servicios de telegram y github para poder automatizar esto.

Github

para poder conseguir este token vamos a la sección de settings > Developer settings > Personal access tokens, y generamos el token que usaremos para poder crear issues que serán las historias de fallo del sistema.

Telegram

Para conseguir y configurar un bot en telegram te dejo el siguiente artículo, para que vayas viendo cómo obtener tu token el cual usaras para poder conectar la logica con el bot en si.

Funciones básicas

Para mi primera incursión voy a tratar de crear un issue con mi bot en un repositorio indicado. Más adelante tendrá la opción de mandar un mensaje a quien sea el Hero de la semana, este sistema de alertas servirá para poder realizar las rotaciones semanales. Para comenzar integramos las características del bot de telegram, y la api de github, haciendo posible que dado un mensaje de telegram podemos crear un issue con el problema determinado. Con el comando /hero -u usuarioGithub -t titulo issue -m mensaje del issue de forma que se cree un issue con el usuario de github, el título y el cuerpo del mensaje. El codigo que usaremos es el siguiente:

var github = require('octonode');
const { Telegraf } = require('telegraf')

const token = require('../configuracion.json');
const bot = new Telegraf(token.telegram);

bot.start((contexto) => {
   console.log()
   contexto.reply("Hola soy el bot HERO es un placer");
});

bot.command('hero', (ctx)=>{
   const client = github.client(token.github);
   var repo = client.repo('francoZuniga32/hero-bot');

   var reply = "El comando ingresado no esta completo \n el formato es: /hero -u usuario-github -t titulo -m mensaje";
   var mensaje = ctx.message.text;
   var comandosSeparados = mensaje.split('-');
   if(comandosSeparados.length >= 4){
       var user = comandosSeparados[1].slice(2);
       var titulo = comandosSeparados[2].slice(2);
       var body = comandosSeparados[3].slice(2);
       console.log(titulo);
       repo.createIssue({
           owner: user,
           title: titulo,
           body: body
       }, (ctx)=>{
           console.log(ctx);
       });
       mensaje = "issue completado!!";
   }
   ctx.reply(mensaje);
});

bot.launch();

De esta manera con el comando descrito anteriormente creamos un issue de github en el repositorio indicado. Haciendo uso de telgraf podemos conectar la lógica del bot con node, y con el módulo de octanode, hacemos uso de la api de github.

Conclusiones

Concluimos pudiendo crear un issue con un bot de telegram en un futuro veremos como poder mandar mensajes privados o mandandolos a un canal de alertas. Les comentaré cual de las dos opciones usaremos.

Referencias


Espero que este post te sea de ayuda, puedas apoyarme invitándome un cafe , o puedes seguirme en instagram y ver mi dia como programador, y estudiante.

GitHub followers Instagram cafesito