mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-14 18:43:31 +01:00
Correctly mapping overwrites when creating a channel and renamed all relevant property names as of #1562 (#1570)
* using correct properties to apply permissionOverwrites and fixed `GuildChannel#clone` * also arrays should be mapped and correct properties taking priority * changed .deny and .allow to .denied and .allowed respectively * whoops
This commit is contained in:
@@ -843,7 +843,14 @@ class Guild {
|
|||||||
* .catch(console.error);
|
* .catch(console.error);
|
||||||
*/
|
*/
|
||||||
createChannel(name, type, { overwrites, reason } = {}) {
|
createChannel(name, type, { overwrites, reason } = {}) {
|
||||||
if (overwrites instanceof Collection) overwrites = overwrites.array();
|
if (overwrites instanceof Collection || overwrites instanceof Array) {
|
||||||
|
overwrites = overwrites.map(overwrite => ({
|
||||||
|
allow: overwrite.allow || overwrite._allowed,
|
||||||
|
deny: overwrite.deny || overwrite._denied,
|
||||||
|
type: overwrite.type,
|
||||||
|
id: overwrite.id,
|
||||||
|
}));
|
||||||
|
}
|
||||||
return this.client.api.guilds(this.id).channels.post({
|
return this.client.api.guilds(this.id).channels.post({
|
||||||
data: {
|
data: {
|
||||||
name, type, permission_overwrites: overwrites,
|
name, type, permission_overwrites: overwrites,
|
||||||
|
|||||||
@@ -76,20 +76,20 @@ class GuildChannel extends Channel {
|
|||||||
const overwrites = this.overwritesFor(member, true, roles);
|
const overwrites = this.overwritesFor(member, true, roles);
|
||||||
|
|
||||||
if (overwrites.everyone) {
|
if (overwrites.everyone) {
|
||||||
permissions &= ~overwrites.everyone.deny;
|
permissions &= ~overwrites.everyone._denied;
|
||||||
permissions |= overwrites.everyone.allow;
|
permissions |= overwrites.everyone._allowed;
|
||||||
}
|
}
|
||||||
|
|
||||||
let allow = 0;
|
let allow = 0;
|
||||||
for (const overwrite of overwrites.roles) {
|
for (const overwrite of overwrites.roles) {
|
||||||
permissions &= ~overwrite.deny;
|
permissions &= ~overwrite._denied;
|
||||||
allow |= overwrite.allow;
|
allow |= overwrite._allowed;
|
||||||
}
|
}
|
||||||
permissions |= allow;
|
permissions |= allow;
|
||||||
|
|
||||||
if (overwrites.member) {
|
if (overwrites.member) {
|
||||||
permissions &= ~overwrites.member.deny;
|
permissions &= ~overwrites.member._denied;
|
||||||
permissions |= overwrites.member.allow;
|
permissions |= overwrites.member._allowed;
|
||||||
}
|
}
|
||||||
|
|
||||||
const admin = Boolean(permissions & Permissions.FLAGS.ADMINISTRATOR);
|
const admin = Boolean(permissions & Permissions.FLAGS.ADMINISTRATOR);
|
||||||
@@ -171,8 +171,8 @@ class GuildChannel extends Channel {
|
|||||||
const prevOverwrite = this.permissionOverwrites.get(userOrRole.id);
|
const prevOverwrite = this.permissionOverwrites.get(userOrRole.id);
|
||||||
|
|
||||||
if (prevOverwrite) {
|
if (prevOverwrite) {
|
||||||
payload.allow = prevOverwrite.allow;
|
payload.allow = prevOverwrite._allowed;
|
||||||
payload.deny = prevOverwrite.deny;
|
payload.deny = prevOverwrite._denied;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const perm in options) {
|
for (const perm in options) {
|
||||||
@@ -290,7 +290,7 @@ class GuildChannel extends Channel {
|
|||||||
return this.client.api.channels(this.id).invites.post({ data: {
|
return this.client.api.channels(this.id).invites.post({ data: {
|
||||||
temporary, max_age: maxAge, max_uses: maxUses,
|
temporary, max_age: maxAge, max_uses: maxUses,
|
||||||
}, reason })
|
}, reason })
|
||||||
.then(invite => new Invite(this.client, invite));
|
.then(invite => new Invite(this.client, invite));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -301,7 +301,7 @@ class GuildChannel extends Channel {
|
|||||||
* @returns {Promise<GuildChannel>}
|
* @returns {Promise<GuildChannel>}
|
||||||
*/
|
*/
|
||||||
clone(name = this.name, withPermissions = true, withTopic = true) {
|
clone(name = this.name, withPermissions = true, withTopic = true) {
|
||||||
return this.guild.createChannel(name, this.type, withPermissions ? this.permissionOverwrites : [])
|
return this.guild.createChannel(name, this.type, { overwrites: withPermissions ? this.permissionOverwrites : [] })
|
||||||
.then(channel => withTopic ? channel.setTopic(this.topic) : channel);
|
.then(channel => withTopic ? channel.setTopic(this.topic) : channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user