From 2da2fa01b2ef3135a22c024327270896297b07dd 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 d21f4dbd6..085fbfc74 100644 --- a/packages/discord.js/src/managers/GuildEmojiRoleManager.js +++ b/packages/discord.js/src/managers/GuildEmojiRoleManager.js @@ -31,7 +31,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 81c5a1fe7..f10c61375 100644 --- a/packages/discord.js/src/managers/GuildMemberRoleManager.js +++ b/packages/discord.js/src/managers/GuildMemberRoleManager.js @@ -33,8 +33,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; } /**