MyBot Guía

Inicio/Bienvenida

Instalación y uso de un editor de código

Creación de su cuenta App y de Bot

Instalación de Discord.js y Node.js

En marcha su primer Bot

Usando un prefix

Usando mensajes Embeds

Usando Argumentos

Ejemplos

Usando Eventos

Usando Colecciones

Usando Roles ◄

Introducción a un Bot de musica/audio


Comprensión de roles

Los roles son una característica poderosa en Discord, este capitulo tiene como objetivo explicar cómo funcionan los roles y los permisos. También exploraremos cómo utilizar roles para proteger sus comandos.


Jerarquía de roles

Antes de comenzar es necesario saber sobres las jerarquías de los roles en Discord: gestion de roles. Lee esto y vuelve aquí.



Obtener rol por nombre o ID

Esta parte es como obtener cualquier otro elemento de una colección tal como vimos anteriormente en Uso de Colecciones. Aqui unos ejemplos:



let mirol =  message.guild.roles.get("123456789987456321");
        


let mirol =  message.guild.roles.find("name", "Administrador");
        



Comprobando mis roles

Usando el controlador message podemos comprobar al autor del mensaje y odtener sus roles, veamos el ejemplo:

if(command === 'rol'){

    if(!args) return message.channel.send('Ingrese nombre del rol.');
    let mirol = message.guild.roles.find("name", args.join(" "));
    if(!mirol) return message.channel.send('Rol no encontrado en el servidor.');

    if(message.member.roles.has(mirol.id)) {
      message.channel.send('Si tienes el rol: `'+mirol.name+'`.');
    } else {
      message.channel.send('No tienes el rol: `'+mirol.name+'`.');
    }

  }


Obtener todos los miembros que tienen un rol

if(command === 'miembrosrol'){
        
    if(!args) return message.channel.send('Ingrese nombre del rol.');
    let rol = message.guild.roles.find("name", args.join(" "));
    if(!rol) return message.channel.send('Rol no encontrado en el servidor.');
    let miembroroles = message.guild.roles.get(rol.id).members;
    message.channel.send(`Tienes a **${miembroroles.size}** miembro(s) con el rol **${args}**.`);
    
  }


Agregando un rol a un miembro

Ahora que tienes los roles, probablemente desea agregar un rol a un miembro. Discord.js proporciona 2 metodos practicos para agregar y remover un rol.


Para agregar y eliminar un rol a un miembro usamos la clase message.mentions y protegeremos el comando usando los permisos de jerarquia.


Ejemplo, agregar rol:

if(command === 'addrol'){

    let miembro = message.mentions.members.first();
    let nombrerol = args.slice(1).join(' ');

    let role = message.guild.roles.find("name", nombrerol);
    let perms = message.member.hasPermission("MANAGE_ROLES_OR_PERMISSIONS");

    if(!perms) return message.channel.send("`Error` `|` No tienes Permisos para usar este comando.");
     
    if(message.mentions.users.size < 1) return message.reply('Debe mencionar a un miembro.').catch(console.error);
    if(!nombrerol) return message.channel.send('Escriba el nombre del rol a agregar, `-addrol @username [rol]`');
    if(!role) return message.channel.send('Rol no encontrado en el servidor.');
    
    miembro.addRole(role).catch(console.error);
    message.channel.send(`El rol **${role.name}** fue agregado correctamente a **${miembro.user.username}**.`);

  }

Modo de uso:

-addrol @miembro [rol]


Ejemplo, remover rol:

if(command === 'removerol'){

    let miembro = message.mentions.members.first();
    let nombrerol = args.slice(1).join(' ');

    let role = message.guild.roles.find("name", nombrerol);
    let perms = message.member.hasPermission("MANAGE_ROLES_OR_PERMISSIONS");

    if(!perms) return message.channel.send("`Error` `|` No tienes Permisos para usar este comando.");
     
    if(message.mentions.users.size < 1) return message.reply('Debe mencionar a un miembro.').catch(console.error);
    if(!nombrerol) return message.channel.send('Escriba el nombre del rol a remover, `-removerol @miembro [rol]`');
    if(!role) return message.channel.send('Rol no encontrado en el servidor.');
    
    miembro.removeRole(role).catch(console.error);
    message.channel.send(`El rol **${role.name}** del miembro **${miembro.user.username}** fue removido  correctamente.`);

  }

Modo de uso:

-removerol @miembro [rol]


Permisos

Los permisos son las caracteristicas de los roles, dando jerarquías a cada rol creado dentro de un servidor.

En los ejemplos anterios como el kick, utilizamos el permiso "KICK_MEMBERS" para darle una validacion o seguridad al comando, esto quiere decir que solo los miembros que tengan el permiso "KICK_MEMBERS" podran utilizar el kick. De igual manera para el ban, addrol y removerol.


¿Como obtener y utilizar los permisos?

La forma de usar:


let permiso = message.member.hasPermission("ADMINISTRATOR");

La variable permiso guarda y valida al autor del mensaje si tiene el permiso administrador dentro del servidor.



Lista de permisos

Esta es la lista de los nombres de los permisos que puedes usar para validar tus comandos usando .hasPermission("nombredelpermiso"):


  CREATE_INSTANT_INVITE,
  KICK_MEMBERS,
  BAN_MEMBERS,
  ADMINISTRATOR,
  MANAGE_CHANNELS,
  MANAGE_GUILD,
  ADD_REACTIONS,
  READ_MESSAGES,
  SEND_MESSAGES,
  SEND_TTS_MESSAGES,
  MANAGE_MESSAGES,
  EMBED_LINKS,
  ATTACH_FILES,
  READ_MESSAGE_HISTORY,
  MENTION_EVERYONE,
  EXTERNAL_EMOJIS,
  CONNECT,
  SPEAK,
  MUTE_MEMBERS,
  DEAFEN_MEMBERS,
  MOVE_MEMBERS,
  USE_VAD,
  CHANGE_NICKNAME,
  MANAGE_NICKNAMES,
  MANAGE_ROLES_OR_PERMISSIONS,
  MANAGE_WEBHOOKS,
  MANAGE_EMOJIS
        

Siguiente.



Si tiene alguna pregunta y/o duda después de leer esta guía, ingrese al servidor oficial de Discord: MyBOT - Server guía.

Sitio web github/Crater