Assign single role from a list based on emoji reaction. Will remove other roles in the list if present first. For custom emojis, use the name instead.
// authenticates you with the API standard library
const lib = require('lib')({token: process.env.STDLIB_SECRET_TOKEN});
let validMessage = 'MESSAGE_TO_WATCH'; //Change this to match the message ID you want to track
let validRoles = {
'π€': 'ROLE_ID_1',
'π§ββοΈ': 'ROLE_ID_2',
'customEmojiName': '333333333333333333',
};
let validRole = validRoles[context.params.event.emoji.name];
let roleIds = Object.keys(validRoles).map((emoji) => validRoles[emoji]);
let matchingRoles = context.params.event.member.roles.filter((roleId) => roleIds.includes(roleId));
if (context.params.event.message_id === validMessage && validRole) {
for (let i = 0; i < matchingRoles.length; i++) {
await lib.discord.guilds['@0.1.0'].members.roles.destroy({
role_id: matchingRoles[i],
user_id: `${context.params.event.user_id}`,
guild_id: `${context.params.event.guild_id}`
});
}
await lib.discord.guilds['@0.1.0'].members.roles.update({
role_id: `${validRole}`,
user_id: `${context.params.event.user_id}`,
guild_id: `${context.params.event.guild_id}`
});
}