module Discorb # # Represents a stage channel. class StageChannel < Discorb::GuildChannel include Discorb::Connectable # # Initialize a new stage channel. # @private def initialize: -> void def stage_instance: -> untyped # # Edit the stage channel. # @async # @macro edit # # @param [String] name The name of the stage channel. # @param [Integer] position The position of the stage channel. # @param [Integer] bitrate The bitrate of the stage channel. # @param [Symbol] rtc_region The region of the stage channel. # @param [String] reason The reason of editing the stage channel. # # @return [Async::Task] The edited stage channel. def edit: ( ?name: String, ?position: Integer, ?bitrate: Integer, ?rtc_region: Symbol, ?reason: String? ) -> Async::Task[self] # # Start a stage instance. # @async # # @param [String] topic The topic of the stage instance. # @param [Boolean] public Whether the stage instance is public or not. # @param [String] reason The reason of starting the stage instance. # # @return [Async::Task] The started stage instance. def start: ( String topic, ?public: bool, ?reason: String? ) -> Async::Task[Discorb::StageInstance] # # Fetch a current stage instance. # @async # # @return [Async::Task] The current stage instance. # @return [Async::Task] If there is no current stage instance. def fetch_stage_instance: -> Async::Task[StageInstance] %a{pure} def voice_states: -> Array[Discorb::VoiceState] %a{pure} def members: -> Array[Discorb::Member] %a{pure} def speakers: -> Array[Discorb::Member] %a{pure} def audiences: -> Array[Discorb::Member] # @return [Integer] The bitrate of the voice channel. attr_reader bitrate: Integer # @return [Integer] The user limit of the voice channel. attr_reader user_limit: Integer # # @private # @return [Discorb::Dictionary{Discorb::Snowflake => StageInstance}] # The stage instances associated with the stage channel. attr_reader stage_instances: Discorb::Dictionary[Discorb::Snowflake, StageInstance] end end