Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const yourID = "ACA TU ID";
- const setupCMD = "g!confirmar"
- const initialMessage = `**React to the messages below to receive the associated role. If you would like to remove the role, simply remove your
- reaction!**`;
- const embedMessage = `Para poder ver todo contenido debes reaccionar segun la que elijas se te dara uno de dos rangos user spain o user inglish
- selecciona solo 1!`;
- const embedFooter = "Role Reactions";
- const roles = ["AQUI EL NOMBRE DEL RANGO"];
- const reactions = ["AQUI UN EMOJI PARA QUE REACCIONEN LOS USUARIOS"];
- const embed = true;
- const embedColor = "#dd2423";
- const botToken = "ACA EL TOKEN DE TU BOT";
- const { Client, RichEmbed } = require('discord.js');
- //const client = new Client({ disableEveryone: true });
- client.login(botToken);
- // If there isn't a reaction for every role, scold the user!
- if (roles.length !== reactions.length) throw "Roles list and reactions list are not the same length!";
- function generateMessages() {
- let messages = [];
- for (let role of roles) messages.push(`React below to get the **"${role}"** role!`); //DONT CHANGE THIS
- return messages;
- }
- function generateEmbedFields() {
- return roles.map((r, e) => {
- return {
- emoji: reactions[e],
- role: r
- };
- });
- }
- client.on("ready", () => console.log("Bot is online!"));
- client.on('error', console.error);
- client.on("message", message => {
- if (message.author.id == yourID && message.content.toLowerCase() == setupCMD) {
- if (!embed) {
- message.channel.send(initialMessage);
- const toSend = generateMessages();
- toSend.forEach((role, react) => {
- message.channel.send(role).then(m => {
- m.react(reactions[react]);
- });
- });
- } else {
- const roleEmbed = new RichEmbed()
- .setDescription(embedMessage)
- .setFooter(embedFooter);
- if (embedColor) roleEmbed.setColor(embedColor);
- const fields = generateEmbedFields();
- for (const f of fields) roleEmbed.addField(f.emoji, f.role, true);
- message.channel.send(roleEmbed).then(async m => {
- for (let r of reactions) await m.react(r);
- });
- }
- }
- });
- const events = {
- MESSAGE_REACTION_ADD: 'messageReactionAdd',
- MESSAGE_REACTION_REMOVE: 'messageReactionRemove',
- };
- client.on('raw', async event => {
- if (!events.hasOwnProperty(event.t)) return;
- const { d: data } = event;
- const user = client.users.get(data.user_id);
- const channel = client.channels.get(data.channel_id);
- const message = await channel.fetchMessage(data.message_id);
- const member = message.guild.members.get(user.id);
- const emojiKey = (data.emoji.id) ? `${data.emoji.name}:${data.emoji.id}` : data.emoji.name;
- const reaction = message.reactions.get(emojiKey);
- let embedFooterText;
- if (message.embeds[0]) embedFooterText = message.embeds[0].footer.text;
- if (message.author.id === client.user.id && (message.content !== initialMessage || (message.embeds[0] && (embedFooterText !== embedFooter)))) {
- if (!embed) {
- const re = `\\*\\*"(.+)?(?="\\*\\*)`;
- const role = message.content.match(re)[1];
- if (member.id !== client.user.id) {
- const roleObj = message.guild.roles.find(r => r.name === role);
- if (event.t === "MESSAGE_REACTION_ADD") {
- member.addRole(roleObj.id);
- } else {
- member.removeRole(roleObj.id);
- }
- }
- } else {
- const fields = message.embeds[0].fields;
- for (let i = 0; i < fields.length; i++) {
- if (member.id !== client.user.id) {
- const role = message.guild.roles.find(r => r.name === fields[i].value);
- if (fields[i].name === reaction.emoji.name) {
- if (event.t === "MESSAGE_REACTION_ADD") {
- member.addRole(role.id);
- break;
- } else {
- member.removeRole(role.id);
- break;
- }
- }
- }
- }
- }
- }
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement