mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-10 08:33:30 +01:00
I don't know what part of the docgen is not working properly, but this seems to fix those typedef to not appear on the documentation
121 lines
3.7 KiB
JavaScript
121 lines
3.7 KiB
JavaScript
'use strict';
|
|
|
|
const { ChannelTypes } = require('../util/Constants');
|
|
const DataStore = require('./DataStore');
|
|
const GuildChannel = require('../structures/GuildChannel');
|
|
const PermissionOverwrites = require('../structures/PermissionOverwrites');
|
|
|
|
/**
|
|
* Stores guild channels.
|
|
* @extends {DataStore}
|
|
*/
|
|
class GuildChannelStore extends DataStore {
|
|
constructor(guild, iterable) {
|
|
super(guild.client, iterable, GuildChannel);
|
|
this.guild = guild;
|
|
}
|
|
|
|
add(channel) {
|
|
const existing = this.get(channel.id);
|
|
if (existing) return existing;
|
|
this.set(channel.id, channel);
|
|
return channel;
|
|
}
|
|
|
|
/**
|
|
* Data that can be resolved to give a Guild Channel object. This can be:
|
|
* * A GuildChannel object
|
|
* * A Snowflake
|
|
* @typedef {GuildChannel|Snowflake} GuildChannelResolvable
|
|
*/
|
|
|
|
/**
|
|
* Resolves a GuildChannelResolvable to a Channel object.
|
|
* @method resolve
|
|
* @memberof GuildChannelStore
|
|
* @instance
|
|
* @param {GuildChannelResolvable} channel The GuildChannel resolvable to resolve
|
|
* @returns {?Channel}
|
|
*/
|
|
|
|
/**
|
|
* Resolves a GuildChannelResolvable to a channel ID string.
|
|
* @method resolveID
|
|
* @memberof GuildChannelStore
|
|
* @instance
|
|
* @param {GuildChannelResolvable} channel The GuildChannel resolvable to resolve
|
|
* @returns {?Snowflake}
|
|
*/
|
|
|
|
/**
|
|
* Creates a new channel in the guild.
|
|
* @param {string} name The name of the new channel
|
|
* @param {Object} [options] Options
|
|
* @param {string} [options.type='text'] The type of the new channel, either `text`, `voice`, or `category`
|
|
* @param {string} [options.topic] The topic for the new channel
|
|
* @param {boolean} [options.nsfw] Whether the new channel is nsfw
|
|
* @param {number} [options.bitrate] Bitrate of the new channel in bits (only voice)
|
|
* @param {number} [options.userLimit] Maximum amount of users allowed in the new channel (only voice)
|
|
* @param {ChannelResolvable} [options.parent] Parent of the new channel
|
|
* @param {OverwriteResolvable[]|Collection<Snowflake, OverwriteResolvable>} [options.permissionOverwrites]
|
|
* Permission overwrites of the new channel
|
|
* @param {number} [options.position] Position of the new channel
|
|
* @param {number} [options.rateLimitPerUser] The ratelimit per user for the channel
|
|
* @param {string} [options.reason] Reason for creating the channel
|
|
* @returns {Promise<GuildChannel>}
|
|
* @example
|
|
* // Create a new text channel
|
|
* guild.channels.create('new-general', { reason: 'Needed a cool new channel' })
|
|
* .then(console.log)
|
|
* .catch(console.error);
|
|
* @example
|
|
* // Create a new channel with permission overwrites
|
|
* guild.channels.create('new-voice', {
|
|
* type: 'voice',
|
|
* permissionOverwrites: [
|
|
* {
|
|
* id: message.author.id,
|
|
* deny: ['VIEW_CHANNEL'],
|
|
* },
|
|
* ],
|
|
* })
|
|
*/
|
|
async create(name, options = {}) {
|
|
let {
|
|
type,
|
|
topic,
|
|
nsfw,
|
|
bitrate,
|
|
userLimit,
|
|
parent,
|
|
permissionOverwrites,
|
|
position,
|
|
rateLimitPerUser,
|
|
reason,
|
|
} = options;
|
|
if (parent) parent = this.client.channels.resolveID(parent);
|
|
if (permissionOverwrites) {
|
|
permissionOverwrites = permissionOverwrites.map(o => PermissionOverwrites.resolve(o, this.guild));
|
|
}
|
|
|
|
const data = await this.client.api.guilds(this.guild.id).channels.post({
|
|
data: {
|
|
name,
|
|
topic,
|
|
type: type ? ChannelTypes[type.toUpperCase()] : 'text',
|
|
nsfw,
|
|
bitrate,
|
|
user_limit: userLimit,
|
|
parent_id: parent,
|
|
position,
|
|
permission_overwrites: permissionOverwrites,
|
|
rate_limit_per_user: rateLimitPerUser,
|
|
},
|
|
reason,
|
|
});
|
|
return this.client.actions.ChannelCreate.handle(data).channel;
|
|
}
|
|
}
|
|
|
|
module.exports = GuildChannelStore;
|