From ecef7bdf22cc3e7c1fc47d828a55f6139672b2a8 Mon Sep 17 00:00:00 2001 From: Souji Date: Fri, 22 Aug 2025 13:03:33 +0200 Subject: [PATCH] fix(GuildChannel): account for everyone base permissions (#11053) When calculating permissions after overwrites, the base permission of the at-everyone role need to be accounted for. Role#permissions is not sufficient, as it only describes base permissions of the role itself. fixes #11052 --- packages/discord.js/src/structures/GuildChannel.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/discord.js/src/structures/GuildChannel.js b/packages/discord.js/src/structures/GuildChannel.js index bacdadc55..136ea8f61 100644 --- a/packages/discord.js/src/structures/GuildChannel.js +++ b/packages/discord.js/src/structures/GuildChannel.js @@ -250,10 +250,11 @@ class GuildChannel extends BaseChannel { return new PermissionsBitField(PermissionsBitField.All).freeze(); } + const basePermissions = new PermissionsBitField([role.permissions, role.guild.roles.everyone.permissions]); const everyoneOverwrites = this.permissionOverwrites.cache.get(this.guild.id); const roleOverwrites = this.permissionOverwrites.cache.get(role.id); - return role.permissions + return basePermissions .remove(everyoneOverwrites?.deny ?? PermissionsBitField.DefaultBit) .add(everyoneOverwrites?.allow ?? PermissionsBitField.DefaultBit) .remove(roleOverwrites?.deny ?? PermissionsBitField.DefaultBit)