From c85f18c1ee6d928534a381a34636083bb2064c2a Mon Sep 17 00:00:00 2001 From: Josef Date: Sun, 9 Nov 2025 11:51:40 +0100 Subject: [PATCH] feat: optimize role manager cache getter (#11239) Co-authored-by: Almeida --- .../src/managers/GuildEmojiRoleManager.js | 10 +++++++++- .../src/managers/GuildMemberRoleManager.js | 13 +++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/packages/discord.js/src/managers/GuildEmojiRoleManager.js b/packages/discord.js/src/managers/GuildEmojiRoleManager.js index c0791bb22..8039adb9f 100644 --- a/packages/discord.js/src/managers/GuildEmojiRoleManager.js +++ b/packages/discord.js/src/managers/GuildEmojiRoleManager.js @@ -35,7 +35,15 @@ class GuildEmojiRoleManager extends DataManager { * @readonly */ get cache() { - return this.guild.roles.cache.filter(role => this.emoji._roles.includes(role.id)); + const cache = new Collection(); + for (const roleId of this.emoji._roles) { + const role = this.guild.roles.cache.get(roleId); + if (role !== undefined) { + cache.set(roleId, role); + } + } + + return cache; } /** diff --git a/packages/discord.js/src/managers/GuildMemberRoleManager.js b/packages/discord.js/src/managers/GuildMemberRoleManager.js index 609ed43ed..34c0fd10b 100644 --- a/packages/discord.js/src/managers/GuildMemberRoleManager.js +++ b/packages/discord.js/src/managers/GuildMemberRoleManager.js @@ -37,8 +37,17 @@ class GuildMemberRoleManager extends DataManager { * @readonly */ get cache() { - const everyone = this.guild.roles.everyone; - return this.guild.roles.cache.filter(role => this.member._roles.includes(role.id)).set(everyone.id, everyone); + const cache = new Collection(); + cache.set(this.guild.id, this.guild.roles.everyone); + + for (const roleId of this.member._roles) { + const role = this.guild.roles.cache.get(roleId); + if (role !== undefined) { + cache.set(roleId, role); + } + } + + return cache; } /**