structures/StageChannel.js

"use strict";

const VoiceChannel = require("./VoiceChannel");

/**
 * Represents a guild stage channel. See VoiceChannel for more properties and methods.
 * @extends VoiceChannel
 */
class StageChannel extends VoiceChannel {
  update(data) {
    super.update(data);
  }

  /**
   * Create a stage instance
   * @arg {Object} options The stage instance options
   * @arg {Number} [options.privacyLevel] The privacy level of the stage instance. 1 is public, 2 is guild only
   * @arg {String} options.topic The stage instance topic
   * @returns {Promise<StageInstance>}
   */
  createInstance(options) {
    return this._client.createStageInstance.call(this._client, this.id, options);
  }

  /**
   * Delete the stage instance for this channel
   * @returns {Promise}
   */
  deleteInstance() {
    return this._client.deleteStageInstance.call(this._client, this.id);
  }

  /**
   * Update the stage instance for this channel
   * @arg {Object} options The properties to edit
   * @arg {Number} [options.privacyLevel] The privacy level of the stage instance. 1 is public, 2 is guild only
   * @arg {String} [options.topic] The stage instance topic
   * @returns {Promise<StageInstance>}
   */
  editInstance(options) {
    return this._client.editStageInstance.call(this._client, this.id, options);
  }

  /**
   * Get the stage instance for this channel
   * @returns {Promise<StageInstance>}
   */
  getInstance() {
    return this._client.getStageInstance.call(this._client, this.id);
  }

  toJSON(props = []) {
    return super.toJSON([
      ...props,
    ]);
  }
}

module.exports = StageChannel;