diff --git a/src/structures/Guild.js b/src/structures/Guild.js index 61c3d5d25231..a6497869038e 100644 --- a/src/structures/Guild.js +++ b/src/structures/Guild.js @@ -843,7 +843,14 @@ class Guild { * .catch(console.error); */ 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({ data: { name, type, permission_overwrites: overwrites, diff --git a/src/structures/GuildChannel.js b/src/structures/GuildChannel.js index 81976e987a60..0ea97a9f6895 100644 --- a/src/structures/GuildChannel.js +++ b/src/structures/GuildChannel.js @@ -76,20 +76,20 @@ class GuildChannel extends Channel { const overwrites = this.overwritesFor(member, true, roles); if (overwrites.everyone) { - permissions &= ~overwrites.everyone.deny; - permissions |= overwrites.everyone.allow; + permissions &= ~overwrites.everyone._denied; + permissions |= overwrites.everyone._allowed; } let allow = 0; for (const overwrite of overwrites.roles) { - permissions &= ~overwrite.deny; - allow |= overwrite.allow; + permissions &= ~overwrite._denied; + allow |= overwrite._allowed; } permissions |= allow; if (overwrites.member) { - permissions &= ~overwrites.member.deny; - permissions |= overwrites.member.allow; + permissions &= ~overwrites.member._denied; + permissions |= overwrites.member._allowed; } const admin = Boolean(permissions & Permissions.FLAGS.ADMINISTRATOR); @@ -171,8 +171,8 @@ class GuildChannel extends Channel { const prevOverwrite = this.permissionOverwrites.get(userOrRole.id); if (prevOverwrite) { - payload.allow = prevOverwrite.allow; - payload.deny = prevOverwrite.deny; + payload.allow = prevOverwrite._allowed; + payload.deny = prevOverwrite._denied; } for (const perm in options) { @@ -290,7 +290,7 @@ class GuildChannel extends Channel { return this.client.api.channels(this.id).invites.post({ data: { temporary, max_age: maxAge, max_uses: maxUses, }, 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} */ 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); }