So I'm making a roblox/discord command that updates the users roles depending on their rank int he group. I'm having 2 issues currently. 1. removing the proper roles. 2. Shows the removed roles twice.
update.js command:
Reg.findOne({
discorduserID: member.id,
}, async (err, database) => {
if (err) console.log(err)
if (database == null) {
//user not found embed part.
} else if (database.Robloxuser != null) {
let UserId = parseInt(database.Robloxid)
let group = 10180496
rbx.getRankNameInGroup(group, UserId).then(async function (rankName) {
let groupRank = `${rankName}`
console.log(groupRank)
let addedRoles = ['None'];
let removedRoles = ['None'];
let roles = [
'Verified',
'Full Permissions',
'Guest',
'Player',
'Administrator',
'Developer',
'Head Developer',
'High Command',
'Co-Owner',
'Owner',
'Group Holder'
];
let color = chalk.hex('#85c3cf').bold
for (let i = 0; i < roles.length; i++) {
//finders
let grouprole = guild.roles.cache.find(role => role.name === groupRank);
let fullpermsrole = guild.roles.cache.find(role => role.name === 'Full Permissions');
let playerrole = guild.roles.cache.find(role => role.name === 'Player');
let adminro = guild.roles.cache.find(role => role.name === 'Administrator');
let devro = guild.roles.cache.find(role => role.name === 'Developer');
let headro = guild.roles.cache.find(role => role.name === 'Head Of Staff');
let headdevro = guild.roles.cache.find(role => role.name === 'Head Developer');
let coowner = guild.roles.cache.find(role => role.name === 'Co Owner');
//checkers
let checkcoowner = member.roles.cache.some(role => role.name === 'Co Owner');
let checkheaddevro = member.roles.cache.some(role => role.name === 'Head Developer');
let checkheadro = member.roles.cache.some(role => role.name === 'Head Of Staff');
let checkfull = member.roles.cache.some(role => role.name === 'Full Permissions');
let checkplayer = member.roles.cache.some(role => role.name === 'Player');
let checkadminro = member.roles.cache.some(role => role.name === 'Administrator');
let checkdevro = member.roles.cache.some(role => role.name === 'Developer');
let checkhas = member.roles.cache.some(role => role.name === groupRank);
let checkroles = member.roles.cache.some(role => role.name === roles[i]);
if(!checkhas && groupRank === roles[i]) {
if (addedRoles.includes('None')) addedRoles.shift();
addedRoles.push(groupRank);
if (grouprole == headro && !checkadminro) {
addedRoles.push(adminro);
member.roles.add(adminro);
}
if (grouprole == headdevro && !checkdevro) {
addedRoles.push(devro);
member.roles.add(devro);
}
if (grouprole == devro && !checkadminro) {
addedRoles.push(adminro);
member.roles.add(adminro);
}
if (grouprole == adminro && !checkfull) {
addedRoles.push(fullpermsrole);
member.roles.add(fullpermsrole);
}
else member.roles.add(grouprole);
}
console.log("Group rank is:" + color(groupRank))
console.log("Current role is:" + color(roles[i]))
console.log("User Has role:" + color(checkroles))
console.log("Boolean:" + color(groupRank != roles[i] && checkroles))
if (groupRank != roles[i] && checkroles) {
if (removedRoles.includes('None')) removedRoles.shift();
if(checkheadro && grouprole != headro) {
if(checkdevro && grouprole != devro) removedRoles.push(devro), member.roles.remove(devro);
if(checkadminro && grouprole !== adminro) removedRoles.push(adminro), member.roles.remove(adminro);
if (checkfull && grouprole !== adminro) removedRoles.push(fullpermsrole), member.roles.remove(fullpermsrole);
removedRoles.push(headro)
member.roles.remove(headro);
}
if(checkheaddevro && grouprole != headdevro) {
if(checkdevro && grouprole != devro) removedRoles.push(devro), member.roles.remove(devro);
if(checkadminro && grouprole !== adminro) removedRoles.push(adminro), member.roles.remove(adminro);
if (checkfull && grouprole !== adminro) removedRoles.push(fullpermsrole), member.roles.remove(fullpermsrole);
removedRoles.push(headdevro)
member.roles.remove(headdevro);
}
if(checkdevro && grouprole != devro) {
if(checkadminro && grouprole !== adminro) removedRoles.push(adminro), member.roles.remove(adminro);
if (checkfull && grouprole !== adminro) removedRoles.push(fullpermsrole), member.roles.remove(fullpermsrole);
removedRoles.push(devro)
member.roles.remove(devro);
}
if(checkadminro && grouprole != adminro) {
if(checkfull && grouprole !== headro || headdevro || devro || adminro) removedRoles.push(fullpermsrole), member.roles.remove(fullpermsrole);
removedRoles.push(adminro)
member.roles.remove(adminro);
}
if(checkplayer && grouprole != playerrole) removedRoles.push(playerrole), member.roles.remove(playerrole);
}
}
console.log(chalk.green(`Roles added to ${member.username}.`), chalk.hex('#05a769').bold(`${addedRoles.join(', ')}`), chalk.hex('#05a769').bold(`${removedRoles.join(', ')}`))
//embed send part
}).catch(async function (err) {
console.log(chalk.red(err))
return;
})
No errors are showing up on the terminal. And sometimes it'll add a role and not show it on added roles field.

