mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-18 04:23:31 +01:00
* Fix #1253 * apparently @ everyone role can be undefined * Fix oops * Fixes possible mutiple roles named '@everyone' * Clean up order/logic
This commit is contained in:
@@ -63,13 +63,24 @@ class GuildChannel extends Channel {
|
|||||||
for (const role of roles.values()) permissions |= role.permissions;
|
for (const role of roles.values()) permissions |= role.permissions;
|
||||||
|
|
||||||
const overwrites = this.overwritesFor(member, true, roles);
|
const overwrites = this.overwritesFor(member, true, roles);
|
||||||
|
|
||||||
|
if (overwrites.everyone) {
|
||||||
|
permissions &= ~overwrites.everyone.deny;
|
||||||
|
permissions |= overwrites.everyone.allow;
|
||||||
|
}
|
||||||
|
|
||||||
let allow = 0;
|
let allow = 0;
|
||||||
for (const overwrite of overwrites.role.concat(overwrites.member)) {
|
for (const overwrite of overwrites.roles) {
|
||||||
permissions &= ~overwrite.deny;
|
permissions &= ~overwrite.deny;
|
||||||
allow |= overwrite.allow;
|
allow |= overwrite.allow;
|
||||||
}
|
}
|
||||||
permissions |= allow;
|
permissions |= allow;
|
||||||
|
|
||||||
|
if (overwrites.member) {
|
||||||
|
permissions &= ~overwrites.member.deny;
|
||||||
|
permissions |= overwrites.member.allow;
|
||||||
|
}
|
||||||
|
|
||||||
const admin = Boolean(permissions & Permissions.FLAGS.ADMINISTRATOR);
|
const admin = Boolean(permissions & Permissions.FLAGS.ADMINISTRATOR);
|
||||||
if (admin) permissions = Permissions.ALL;
|
if (admin) permissions = Permissions.ALL;
|
||||||
|
|
||||||
@@ -82,18 +93,22 @@ class GuildChannel extends Channel {
|
|||||||
|
|
||||||
roles = roles || member.roles;
|
roles = roles || member.roles;
|
||||||
const roleOverwrites = [];
|
const roleOverwrites = [];
|
||||||
const memberOverwrites = [];
|
let memberOverwrites;
|
||||||
|
let everyoneOverwrites;
|
||||||
|
|
||||||
for (const overwrite of this.permissionOverwrites.values()) {
|
for (const overwrite of this.permissionOverwrites.values()) {
|
||||||
if (overwrite.id === member.id) {
|
if (overwrite.id === this.guild.id) {
|
||||||
memberOverwrites.push(overwrite);
|
everyoneOverwrites = overwrite;
|
||||||
} else if (roles.has(overwrite.id)) {
|
} else if (roles.has(overwrite.id)) {
|
||||||
roleOverwrites.push(overwrite);
|
roleOverwrites.push(overwrite);
|
||||||
|
} else if (overwrite.id === member.id) {
|
||||||
|
memberOverwrites = overwrite;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
role: roleOverwrites,
|
everyone: everyoneOverwrites,
|
||||||
|
roles: roleOverwrites,
|
||||||
member: memberOverwrites,
|
member: memberOverwrites,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user