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,
                })
            }
image.png
Was this page helpful?