@@ -24,12 +24,7 @@ async function updateRoles({ discordId, uuid }) {
2424
2525 const verificationRoles = config . verification . roles ;
2626 const roles = [ verificationRoles . guildMember . roleId , ...verificationRoles . custom . flatMap ( ( r ) => r . roleId ) ] ;
27- for ( const role of roles ) {
28- if ( member . roles . cache . has ( role ) ) {
29- await member . roles . remove ( role , "Updated Roles" ) ;
30- // console.log(`Removed ${(await guild.roles.fetch(role)).name}`);
31- }
32- }
27+ const addedRoles = [ ] ;
3328
3429 if ( ! uuid ) {
3530 member . setNickname ( null , "Updated Roles" ) ;
@@ -43,6 +38,7 @@ async function updateRoles({ discordId, uuid }) {
4338
4439 if ( verificationRoles . verified . enabled ) {
4540 await member . roles . add ( verificationRoles . verified . roleId , "Updated Roles" ) ;
41+ addedRoles . push ( verificationRoles . verified . roleId ) ;
4642 // console.log("Added verified role");
4743 }
4844
@@ -74,6 +70,7 @@ async function updateRoles({ discordId, uuid }) {
7470 if ( guildMember ) {
7571 if ( verificationRoles . guildMember . enabled ) {
7672 await member . roles . add ( verificationRoles . guildMember . roleId , "Updated Roles" ) ;
73+ addedRoles . push ( verificationRoles . guildMember . roleId ) ;
7774 // console.log("Added guild member role");
7875 }
7976
@@ -85,6 +82,8 @@ async function updateRoles({ discordId, uuid }) {
8582 ) ;
8683 if ( guildRank && guildRank . enabled !== false ) {
8784 await member . roles . add ( guildRank . roleId , "Updated Roles" ) ;
85+ addedRoles . push ( guildRank . roleId ) ;
86+
8887 // console.log(`Added ${(await guild.roles.fetch(guildRank.roleId)).name}`);
8988 }
9089 } else {
@@ -289,6 +288,7 @@ async function updateRoles({ discordId, uuid }) {
289288 const meetsRequirements = role . requirements . every ( ( req ) => req . value <= stats [ req . type ] ) ;
290289 if ( meetsRequirements ) {
291290 await member . roles . add ( role . roleId , "Updated Roles" ) ;
291+ addedRoles . push ( role . roleId ) ;
292292 // console.log(
293293 // `Added ${(await guild.roles.fetch(role.roleId)).name} cuz he meets the requirements for ${role.requirements.map((req) => `${req.type} >= ${req.value}`).join(" and ")}`
294294 // );
@@ -303,6 +303,14 @@ async function updateRoles({ discordId, uuid }) {
303303 ) ,
304304 "Updated Roles"
305305 ) ;
306+
307+ for ( const role of roles ) {
308+ if ( addedRoles . includes ( role ) ) return ;
309+ if ( member . roles . cache . has ( role ) ) {
310+ await member . roles . remove ( role , "Updated Roles" ) ;
311+ // console.log(`Removed ${(await guild.roles.fetch(role)).name}`);
312+ }
313+ }
306314}
307315
308316module . exports = {
0 commit comments