Problem with GuildMemberUpdate
For some reason, it happens that I add the highest (or no) role and it shows that all the roles that the participant already has have been added. How can this be fixed?
const oldRoles = Array.from(oldMember.roles.cache.values())
.filter(role => role.guild.id === oldMember.guild.id);
const newRoles = Array.from(newMember.roles.cache.values())
.filter(role => role.guild.id === newMember.guild.id);
const addedRoles = newRoles.filter(role => !oldRoles.some(oldRole => oldRole.id === role.id));
const removedRoles = oldRoles.filter(role => !newRoles.some(newRole => newRole.id === role.id));
...
if (addedRoles.length > 0) {
embedGuildMemberUpdate.fields.push({
name: 'Добавлены роли',
value: addedRoles.map(role => `${role.name} (${roleMention(role.id)})`).join(' '),
inline: addedRoles.length <= 4,
})
}
if (removedRoles.length > 0) {
embedGuildMemberUpdate.fields.push({
name: 'Сняты роли',
value: removedRoles.map(role => `${role.name} (${roleMention(role.id)})`).join(' '),
inline: removedRoles.length <= 4,
})
} const oldRoles = Array.from(oldMember.roles.cache.values())
.filter(role => role.guild.id === oldMember.guild.id);
const newRoles = Array.from(newMember.roles.cache.values())
.filter(role => role.guild.id === newMember.guild.id);
const addedRoles = newRoles.filter(role => !oldRoles.some(oldRole => oldRole.id === role.id));
const removedRoles = oldRoles.filter(role => !newRoles.some(newRole => newRole.id === role.id));
...
if (addedRoles.length > 0) {
embedGuildMemberUpdate.fields.push({
name: 'Добавлены роли',
value: addedRoles.map(role => `${role.name} (${roleMention(role.id)})`).join(' '),
inline: addedRoles.length <= 4,
})
}
if (removedRoles.length > 0) {
embedGuildMemberUpdate.fields.push({
name: 'Сняты роли',
value: removedRoles.map(role => `${role.name} (${roleMention(role.id)})`).join(' '),
inline: removedRoles.length <= 4,
})
}