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
Introducción a un Bot de musica/audio
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.
Antes de comenzar es necesario saber sobres las jerarquías de los roles en Discord: gestion de roles. Lee esto y vuelve aquí.
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");
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+'`.');
}
}
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}**.`);
}
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]
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.
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.
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
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