mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-16 11:33:30 +01:00
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
This commit is contained in:
@@ -250,10 +250,11 @@ class GuildChannel extends BaseChannel {
|
|||||||
return new PermissionsBitField(PermissionsBitField.All).freeze();
|
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 everyoneOverwrites = this.permissionOverwrites.cache.get(this.guild.id);
|
||||||
const roleOverwrites = this.permissionOverwrites.cache.get(role.id);
|
const roleOverwrites = this.permissionOverwrites.cache.get(role.id);
|
||||||
|
|
||||||
return role.permissions
|
return basePermissions
|
||||||
.remove(everyoneOverwrites?.deny ?? PermissionsBitField.DefaultBit)
|
.remove(everyoneOverwrites?.deny ?? PermissionsBitField.DefaultBit)
|
||||||
.add(everyoneOverwrites?.allow ?? PermissionsBitField.DefaultBit)
|
.add(everyoneOverwrites?.allow ?? PermissionsBitField.DefaultBit)
|
||||||
.remove(roleOverwrites?.deny ?? PermissionsBitField.DefaultBit)
|
.remove(roleOverwrites?.deny ?? PermissionsBitField.DefaultBit)
|
||||||
|
|||||||
Reference in New Issue
Block a user