diff --git a/src/discord/commands/updateCommand.js b/src/discord/commands/updateCommand.js index 02935ec7..96f69f4b 100644 --- a/src/discord/commands/updateCommand.js +++ b/src/discord/commands/updateCommand.js @@ -24,12 +24,7 @@ async function updateRoles({ discordId, uuid }) { const verificationRoles = config.verification.roles; const roles = [verificationRoles.guildMember.roleId, ...verificationRoles.custom.flatMap((r) => r.roleId)]; - for (const role of roles) { - if (member.roles.cache.has(role)) { - await member.roles.remove(role, "Updated Roles"); - // console.log(`Removed ${(await guild.roles.fetch(role)).name}`); - } - } + const addedRoles = []; if (!uuid) { member.setNickname(null, "Updated Roles"); @@ -43,6 +38,7 @@ async function updateRoles({ discordId, uuid }) { if (verificationRoles.verified.enabled) { await member.roles.add(verificationRoles.verified.roleId, "Updated Roles"); + addedRoles.push(verificationRoles.verified.roleId); // console.log("Added verified role"); } @@ -74,6 +70,7 @@ async function updateRoles({ discordId, uuid }) { if (guildMember) { if (verificationRoles.guildMember.enabled) { await member.roles.add(verificationRoles.guildMember.roleId, "Updated Roles"); + addedRoles.push(verificationRoles.guildMember.roleId); // console.log("Added guild member role"); } @@ -85,6 +82,8 @@ async function updateRoles({ discordId, uuid }) { ); if (guildRank && guildRank.enabled !== false) { await member.roles.add(guildRank.roleId, "Updated Roles"); + addedRoles.push(guildRank.roleId); + // console.log(`Added ${(await guild.roles.fetch(guildRank.roleId)).name}`); } } else { @@ -289,6 +288,7 @@ async function updateRoles({ discordId, uuid }) { const meetsRequirements = role.requirements.every((req) => req.value <= stats[req.type]); if (meetsRequirements) { await member.roles.add(role.roleId, "Updated Roles"); + addedRoles.push(role.roleId); // console.log( // `Added ${(await guild.roles.fetch(role.roleId)).name} cuz he meets the requirements for ${role.requirements.map((req) => `${req.type} >= ${req.value}`).join(" and ")}` // ); @@ -303,6 +303,14 @@ async function updateRoles({ discordId, uuid }) { ), "Updated Roles" ); + + for (const role of roles) { + if (addedRoles.includes(role)) return; + if (member.roles.cache.has(role)) { + await member.roles.remove(role, "Updated Roles"); + // console.log(`Removed ${(await guild.roles.fetch(role)).name}`); + } + } } module.exports = {