Crear comando baneo | desbaneo

Crear comando baneo | desbaneo

Como veíamos en artículos anteriores de la guía de creación de bots para Telegram, utilizamos la condición para restringir el uso de los comandos a solo administradores. En esta ocasión, haremos uso de esa condición, para crear los comandos de baneo y desbaneo. También añadiremos la función de la cual dependerá el tiempo de baneo.

Los métodos que utilizaremos en esta ocasión son:

Comando baneo

Empezaremos creando el comando de baneo haciendo uso de la condición que nos permitirá verificar si quien hace uso del comando es administrador o creador. Para crear el comando debemos escribir lo siguiente:

bot.onText(/^\/ban (.+)/, function(msg, match){

    var chatId = msg.chat.id;
    var userId = msg.from.id;
    var replyId = msg.reply_to_message.from.id;
    var replyName = msg.reply_to_message.from.first_name;
    var fromName = msg.from.first_name;
    var messageId = msg.message_id;
    var text = match[1];
    const ms = require("ms");

    if (msg.reply_to_message == undefined){
        return;
    }
    
    bot.getChatMember(chatId, userId).then(function(data){
        if((data.status == 'creator') || (data.status == 'administrator')){
        bot.kickChatMember(chatId, replyId, {until_date: Math.round((Date.now() + ms(text + " days"))/1000)}).then(function(result){
                bot.deleteMessage(chatId, messageId);
                bot.sendMessage(chatId, "El usuario " + replyName + " ha sido baneado durante " + text + " días.")
            })
        }
        else {
        bot.sendMessage(chatId, "Lo siento " + fromName + ", no eres administrador")
        }
    })
});

En este caso, hemos declarado una condición que se encarga de verificar si quien hace uso del comando es un creador o un administrador, si alguna de las dos es verdadera, el bot expulsará y añadirá a la persona a la lista de usuarios restringidos. Posteriormente, hemos añadido el tiempo de baneo con ms(text + " days"). La variable text se encargará de recoger el número que adjuntemos después de /ban, además de servirnos para establecer el tiempo de baneo. Obteniendo como resultado:

Telegram--700--15_06_2018-18_04_18

Comando desbaneo

Ahora que ya tenemos nuestro comando de baneo, es la hora de crear el comando inverso, es decir, el comando que permite retirar el baneo. Para ello utilizaremos de nuevo la misma condición que empleamos en el ejemplo anterior. Lo único que se diferencia es el método que permite retirar el baneo. Para crear el comando debemos escribir lo siguiente:

bot.onText(/^\/unban/, function(msg){
    
    var chatId = msg.chat.id;
    var replyId = msg.reply_to_message.from.id;
    var userId = msg.from.id;
    var replyName = msg.reply_to_message.from.first_name;
    var fromName = msg.from.first_name;
    var messageId = msg.message_id;
    
   if(msg.reply_to_message == undefined){
   return;
   }
   
  bot.getChatMember(chatId, userId).then(function(data){
       if((data.status == 'creator') || (data.status == 'administrator')){
            bot.unbanChatMember(chatId, replyId).then(function(result){
                bot.deleteMessage(chatId, messageId);
                bot.sendMessage(chatId, "El usuario " + replyName + " ha sido desbaneado");
            })
        }
        else {
            bot.sendMessage(chatId, "Lo siento " + fromName + ", no eres administrador");
        }
    })
});

Este comando no tiene mucha diferencia con el anterior, lo único que se diferencia es el método para retirar el baneo ademas de que no tenemos que recoger ningún dato, por lo demas es todo igual, obteniendo como resultado:

Telegram--688--15_06_2018-18_46_54

Si quieres colaborar aportando algún dato útil o necesitas ayuda para avanzar con tu bot, unete a nuestro grupo de Telegram