mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-16 11:33:30 +01:00
@@ -128,10 +128,12 @@ class RESTMethods {
|
|||||||
}).then(data => this.rest.client.actions.MessageUpdate.handle(data).updated);
|
}).then(data => this.rest.client.actions.MessageUpdate.handle(data).updated);
|
||||||
}
|
}
|
||||||
|
|
||||||
createChannel(guild, channelName, channelType) {
|
createChannel(guild, channelName, channelType, overwrites) {
|
||||||
|
if (overwrites instanceof Collection) overwrites = overwrites.array();
|
||||||
return this.rest.makeRequest('post', Constants.Endpoints.guildChannels(guild.id), true, {
|
return this.rest.makeRequest('post', Constants.Endpoints.guildChannels(guild.id), true, {
|
||||||
name: channelName,
|
name: channelName,
|
||||||
type: channelType,
|
type: channelType,
|
||||||
|
permission_overwrites: overwrites,
|
||||||
}).then(data => this.rest.client.actions.ChannelCreate.handle(data).channel);
|
}).then(data => this.rest.client.actions.ChannelCreate.handle(data).channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -561,6 +561,8 @@ class Guild {
|
|||||||
* Creates a new channel in the guild.
|
* Creates a new channel in the guild.
|
||||||
* @param {string} name The name of the new channel
|
* @param {string} name The name of the new channel
|
||||||
* @param {string} type The type of the new channel, either `text` or `voice`
|
* @param {string} type The type of the new channel, either `text` or `voice`
|
||||||
|
* @param {Array.<PermissionsOverwrites|Object>} overwrites
|
||||||
|
* Permissions overwrites to apply to the new channel
|
||||||
* @returns {Promise<TextChannel|VoiceChannel>}
|
* @returns {Promise<TextChannel|VoiceChannel>}
|
||||||
* @example
|
* @example
|
||||||
* // create a new text channel
|
* // create a new text channel
|
||||||
@@ -568,8 +570,8 @@ class Guild {
|
|||||||
* .then(channel => console.log(`Created new channel ${channel}`))
|
* .then(channel => console.log(`Created new channel ${channel}`))
|
||||||
* .catch(console.error);
|
* .catch(console.error);
|
||||||
*/
|
*/
|
||||||
createChannel(name, type) {
|
createChannel(name, type, overwrites) {
|
||||||
return this.client.rest.methods.createChannel(this, name, type);
|
return this.client.rest.methods.createChannel(this, name, type, overwrites);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -66,8 +66,8 @@ class GuildChannel extends Channel {
|
|||||||
|
|
||||||
const overwrites = this.overwritesFor(member, true, roles);
|
const overwrites = this.overwritesFor(member, true, roles);
|
||||||
for (const overwrite of overwrites.role.concat(overwrites.member)) {
|
for (const overwrite of overwrites.role.concat(overwrites.member)) {
|
||||||
permissions &= ~overwrite.denyData;
|
permissions &= ~overwrite.deny;
|
||||||
permissions |= overwrite.allowData;
|
permissions |= overwrite.allow;
|
||||||
}
|
}
|
||||||
|
|
||||||
const admin = Boolean(permissions & Constants.PermissionFlags.ADMINISTRATOR);
|
const admin = Boolean(permissions & Constants.PermissionFlags.ADMINISTRATOR);
|
||||||
@@ -144,8 +144,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.allowData;
|
payload.allow = prevOverwrite.allow;
|
||||||
payload.deny = prevOverwrite.denyData;
|
payload.deny = prevOverwrite.deny;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const perm in options) {
|
for (const perm in options) {
|
||||||
@@ -247,6 +247,16 @@ class GuildChannel extends Channel {
|
|||||||
return this.client.rest.methods.createChannelInvite(this, options);
|
return this.client.rest.methods.createChannelInvite(this, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clone this channel
|
||||||
|
* @param {string} [name=this.name] Optional name for the new channel, otherwise it has the name of this channel
|
||||||
|
* @param {boolean} [withPermissions=true] Whether to clone the channel with this channel's permission overwrites
|
||||||
|
* @returns {Promise<GuildChannel>}
|
||||||
|
*/
|
||||||
|
clone(name = this.name, withPermissions = true) {
|
||||||
|
return this.guild.createChannel(name, this.type, withPermissions ? this.permissionOverwrites : []);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if this channel has the same type, topic, position, name, overwrites and ID as another channel.
|
* Checks if this channel has the same type, topic, position, name, overwrites and ID as another channel.
|
||||||
* In most cases, a simple `channel.id === channel2.id` will do, and is much faster too.
|
* In most cases, a simple `channel.id === channel2.id` will do, and is much faster too.
|
||||||
|
|||||||
@@ -7,7 +7,10 @@ class PermissionOverwrites {
|
|||||||
* The GuildChannel this overwrite is for
|
* The GuildChannel this overwrite is for
|
||||||
* @type {GuildChannel}
|
* @type {GuildChannel}
|
||||||
*/
|
*/
|
||||||
this.channel = guildChannel;
|
Object.defineProperty(this, 'channel', {
|
||||||
|
value: guildChannel,
|
||||||
|
enumerable: false,
|
||||||
|
});
|
||||||
|
|
||||||
if (data) this.setup(data);
|
if (data) this.setup(data);
|
||||||
}
|
}
|
||||||
@@ -25,8 +28,8 @@ class PermissionOverwrites {
|
|||||||
*/
|
*/
|
||||||
this.type = data.type;
|
this.type = data.type;
|
||||||
|
|
||||||
this.denyData = data.deny;
|
this.deny = data.deny;
|
||||||
this.allowData = data.allow;
|
this.allow = data.allow;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user