Advertisement
Guest User

Untitled

a guest
Nov 17th, 2019
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // This makes the events used a bit more readable
  2. const events = {
  3.     MESSAGE_REACTION_ADD: 'messageReactionAdd',
  4.     MESSAGE_REACTION_REMOVE: 'messageReactionRemove',
  5. };
  6.  
  7. // This event handles adding/removing users from the role(s) they chose based on message reactions
  8. client.on('raw', async event => {
  9.     if (!events.hasOwnProperty(event.t)) return;
  10.  
  11.     const { d: data } = event;
  12.     const user = client.users.get(data.user_id);
  13.     const channel = client.channels.get(data.channel_id);
  14.  
  15.     const message = await channel.fetchMessage(data.message_id);
  16.     const member = message.guild.members.get(user.id);
  17.  
  18.     const emojiKey = (data.emoji.id) ? `${data.emoji.name}:${data.emoji.id}` : data.emoji.name;
  19.     let reaction = message.reactions.get(emojiKey);
  20.  
  21.     if (!reaction) {
  22.         // Create an object that can be passed through the event like normal
  23.         const emoji = new Emoji(client.guilds.get(data.guild_id), data.emoji);
  24.         reaction = new MessageReaction(message, emoji, 1, data.user_id === client.user.id);
  25.     }
  26.  
  27.     let embedFooterText;
  28.     if (message.embeds[0]) embedFooterText = message.embeds[0].footer.text;
  29.  
  30.     if (
  31.         (message.author.id === client.user.id) && (message.content !== CONFIG.initialMessage ||
  32.         (message.embeds[0] && (embedFooterText !== CONFIG.embedFooter)))
  33.     ) {
  34.  
  35.         if (!CONFIG.embed && (message.embeds.length < 1)) {
  36.             const re = `\\*\\*"(.+)?(?="\\*\\*)`;
  37.             const role = message.content.match(re)[1];
  38.  
  39.             if (member.id !== client.user.id) {
  40.                 const guildRole = message.guild.roles.find(r => r.name === role);
  41.                 if (event.t === "MESSAGE_REACTION_ADD") member.addRole(guildRole.id);
  42.                 else if (event.t === "MESSAGE_REACTION_REMOVE") member.removeRole(guildRole.id);
  43.             }
  44.         } else if (CONFIG.embed && (message.embeds.length >= 1)) {
  45.             const fields = message.embeds[0].fields;
  46.  
  47.             for (const { name, value } of fields) {
  48.                 if (member.id !== client.user.id) {
  49.                     const guildRole = message.guild.roles.find(r => r.name === value);
  50.                     if ((name === reaction.emoji.name) || (name === reaction.emoji.toString())) {
  51.                         if (event.t === "MESSAGE_REACTION_ADD") member.addRole(guildRole.id);
  52.                         else if (event.t === "MESSAGE_REACTION_REMOVE") member.removeRole(guildRole.id);
  53.                     }
  54.                 }
  55.             }
  56.         }
  57.     }
  58. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement