mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-09 16:13:31 +01:00
feat(StageChannel): add createStageInstance method & use better naming convention (#5951)
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
This commit is contained in:
@@ -28,31 +28,30 @@ class StageInstanceManager extends BaseManager {
|
||||
|
||||
/**
|
||||
* Options used to create a stage instance.
|
||||
* @typedef {Object} CreateStageInstanceOptions
|
||||
* @property {StageChannel|Snowflake} channel The stage channel whose instance is to be created
|
||||
* @typedef {Object} StageInstanceCreateOptions
|
||||
* @property {string} topic The topic of the stage instance
|
||||
* @property {PrivacyLevel|number} [privacyLevel] The privacy level of the stage instance
|
||||
*/
|
||||
|
||||
/**
|
||||
* Creates a new stage instance.
|
||||
* @param {CreateStageInstanceOptions} options The options to create the stage instance
|
||||
* @param {StageChannel|Snowflake} channel The stage channel to associate the created stage instance to
|
||||
* @param {StageInstanceCreateOptions} options The options to create the stage instance
|
||||
* @returns {Promise<StageInstance>}
|
||||
* @example
|
||||
* // Create a stage instance
|
||||
* guild.stageInstances.create({
|
||||
* channel: '1234567890123456789',
|
||||
* guild.stageInstances.create('1234567890123456789', {
|
||||
* topic: 'A very creative topic',
|
||||
* privacyLevel: 'GUILD_ONLY'
|
||||
* })
|
||||
* .then(stageInstance => console.log(stageInstance))
|
||||
* .catch(console.error);
|
||||
*/
|
||||
async create(options) {
|
||||
if (typeof options !== 'object') throw new TypeError('INVALID_TYPE', 'options', 'object', true);
|
||||
let { channel, topic, privacyLevel } = options;
|
||||
async create(channel, options) {
|
||||
const channelID = this.guild.channels.resolveID(channel);
|
||||
if (!channelID) throw new Error('STAGE_CHANNEL_RESOLVE');
|
||||
if (typeof options !== 'object') throw new TypeError('INVALID_TYPE', 'options', 'object', true);
|
||||
let { topic, privacyLevel } = options;
|
||||
|
||||
if (privacyLevel) privacyLevel = typeof privacyLevel === 'number' ? privacyLevel : PrivacyLevels[privacyLevel];
|
||||
|
||||
@@ -69,7 +68,7 @@ class StageInstanceManager extends BaseManager {
|
||||
|
||||
/**
|
||||
* Fetches the stage instance associated with a stage channel, if it exists.
|
||||
* @param {StageChannel|Snowflake} channel The stage channel whose instance is to be fetched
|
||||
* @param {StageChannel|Snowflake} channel The stage channel whose associated stage instance is to be fetched
|
||||
* @param {BaseFetchOptions} [options] Additional options for this fetch
|
||||
* @returns {Promise<StageInstance>}
|
||||
* @example
|
||||
@@ -100,7 +99,7 @@ class StageInstanceManager extends BaseManager {
|
||||
|
||||
/**
|
||||
* Edits an existing stage instance.
|
||||
* @param {StageChannel|Snowflake} channel The stage channel whose instance is to be edited
|
||||
* @param {StageChannel|Snowflake} channel The stage channel whose associated stage instance is to be edited
|
||||
* @param {StageInstanceEditOptions} options The options to edit the stage instance
|
||||
* @returns {Promise<StageInstance>}
|
||||
* @example
|
||||
@@ -136,7 +135,7 @@ class StageInstanceManager extends BaseManager {
|
||||
|
||||
/**
|
||||
* Deletes an existing stage instance.
|
||||
* @param {StageChannel|Snowflake} channel The stage channel whose instance is to be deleted
|
||||
* @param {StageChannel|Snowflake} channel The stage channel whose associated stage instance is to be deleted
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
async delete(channel) {
|
||||
|
||||
@@ -20,14 +20,23 @@ class StageChannel extends BaseGuildVoiceChannel {
|
||||
}
|
||||
|
||||
/**
|
||||
* The instance of this stage channel, if it exists
|
||||
* The stage instance of this stage channel, if it exists
|
||||
* @type {?StageInstance}
|
||||
* @readonly
|
||||
*/
|
||||
get instance() {
|
||||
get stageInstance() {
|
||||
return this.guild.stageInstances.cache.find(stageInstance => stageInstance.channelID === this.id) ?? null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a stage instance associated to this stage channel.
|
||||
* @param {StageInstanceCreateOptions} options The options to create the stage instance
|
||||
* @returns {Promise<StageInstance>}
|
||||
*/
|
||||
createStageInstance(options) {
|
||||
return this.guild.stageInstances.create(this.id, options);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the RTC region of the channel.
|
||||
* @name StageChannel#setRTCRegion
|
||||
|
||||
@@ -60,7 +60,7 @@ class StageInstance extends Base {
|
||||
}
|
||||
|
||||
/**
|
||||
* The stage channel associated with this instance
|
||||
* The stage channel associated with this stage instance
|
||||
* @type {?StageChannel}
|
||||
* @readonly
|
||||
*/
|
||||
|
||||
8
typings/index.d.ts
vendored
8
typings/index.d.ts
vendored
@@ -1882,7 +1882,8 @@ declare module 'discord.js' {
|
||||
export class StageChannel extends BaseGuildVoiceChannel {
|
||||
public topic: string | null;
|
||||
public type: 'stage';
|
||||
public readonly instance: StageInstance | null;
|
||||
public readonly stageInstance: StageInstance | null;
|
||||
public createStageInstance(options: StageInstanceCreateOptions): Promise<StageInstance>;
|
||||
}
|
||||
|
||||
export class StageInstance extends Base {
|
||||
@@ -2643,7 +2644,7 @@ declare module 'discord.js' {
|
||||
export class StageInstanceManager extends BaseManager<Snowflake, StageInstance, StageInstanceResolvable> {
|
||||
constructor(guild: Guild, iterable?: Iterable<any>);
|
||||
public guild: Guild;
|
||||
public create(options: CreateStageInstanceOptions): Promise<StageInstance>;
|
||||
public create(channel: StageChannel | Snowflake, options: StageInstanceCreateOptions): Promise<StageInstance>;
|
||||
public fetch(channel: StageChannel | Snowflake, options?: BaseFetchOptions): Promise<StageInstance>;
|
||||
public edit(channel: StageChannel | Snowflake, options: StageInstanceEditOptions): Promise<StageInstance>;
|
||||
public delete(channel: StageChannel | Snowflake): Promise<void>;
|
||||
@@ -3226,8 +3227,7 @@ declare module 'discord.js' {
|
||||
reason?: string;
|
||||
}
|
||||
|
||||
interface CreateStageInstanceOptions {
|
||||
channel: StageChannel | Snowflake;
|
||||
interface StageInstanceCreateOptions {
|
||||
topic: string;
|
||||
privacyLevel?: PrivacyLevel | number;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user