Class: Discorb::StageChannel

Inherits:
GuildChannel show all
Includes:
Connectable
Defined in:
lib/discorb/channel.rb

Overview

Represents a stage channel.

Instance Attribute Summary collapse

Attributes inherited from GuildChannel

#permission_overwrites, #position

Attributes inherited from Channel

#id, #name

Instance Method Summary collapse

Methods included from Connectable

#connect

Methods inherited from GuildChannel

#<=>, #==, #delete!, #guild, #inspect, #mention, #move, #parent, #to_s

Methods inherited from Channel

#==, #inspect, #type

Methods inherited from DiscordModel

#==, #eql?, #hash

Instance Attribute Details

#bitrate -> Integer (readonly)

Returns The bitrate of the voice channel.

Returns:

  • (Integer)

    The bitrate of the voice channel.



655
656
657
# File 'lib/discorb/channel.rb', line 655

def bitrate
  @bitrate
end

#user_limit -> Integer (readonly)

Returns The user limit of the voice channel.

Returns:

  • (Integer)

    The user limit of the voice channel.



657
658
659
# File 'lib/discorb/channel.rb', line 657

def user_limit
  @user_limit
end

Instance Method Details

#edit(name: :unset, position: :unset, bitrate: :unset, rtc_region: :unset, reason: nil) -> Async::Task<self> Also known as: modify

Note:

This is an asynchronous method, it will return a Async::Task object. Use Async::Task#wait to get the result.

Note:

This method calls HTTP request.

Note:

The arguments of this method are defaultly set to :unset. Specify value to set the value, if not don't specify or specify :unset.

Edit the stage channel.

Parameters:

  • name (String) (defaults to: :unset)

    The name of the stage channel.

  • position (Integer) (defaults to: :unset)

    The position of the stage channel.

  • bitrate (Integer) (defaults to: :unset)

    The bitrate of the stage channel.

  • rtc_region (Symbol) (defaults to: :unset)

    The region of the stage channel.

  • reason (String) (defaults to: nil)

    The reason of editing the stage channel.

Returns:

  • (Async::Task<self>)

    The edited stage channel.

Raises:



691
692
693
694
695
696
697
698
699
700
701
# File 'lib/discorb/channel.rb', line 691

def edit(name: :unset, position: :unset, bitrate: :unset, rtc_region: :unset, reason: nil)
  Async do
    payload = {}
    payload[:name] = name if name != :unset
    payload[:position] = position if position != :unset
    payload[:bitrate] = bitrate if bitrate != :unset
    payload[:rtc_region] = rtc_region if rtc_region != :unset
    @client.http.patch("/channels/#{@id}", payload, audit_log_reason: reason).wait
    self
  end
end

#fetch_stage_instance -> Async::Task<StageInstance>, Async::Task<nil>

Note:

This is an asynchronous method, it will return a Async::Task object. Use Async::Task#wait to get the result.

Note:

This method calls HTTP request.

Fetch a current stage instance.

Returns:

  • (Async::Task<StageInstance>)

    The current stage instance.

  • (Async::Task<nil>)

    If there is no current stage instance.

Raises:



731
732
733
734
735
736
737
738
739
# File 'lib/discorb/channel.rb', line 731

def fetch_stage_instance
  Async do
    _resp, data = @client.http.get("/stage-instances/#{@id}").wait
  rescue Discorb::NotFoundError
    nil
  else
    StageInstance.new(@client, data)
  end
end

#stage_instance -> Object



673
674
675
# File 'lib/discorb/channel.rb', line 673

def stage_instance
  @stage_instances[0]
end

#start(topic, public: false, reason: nil) -> Async::Task<Discorb::StageInstance>

Note:

This is an asynchronous method, it will return a Async::Task object. Use Async::Task#wait to get the result.

Note:

This method calls HTTP request.

Start a stage instance.

Parameters:

  • topic (String)

    The topic of the stage instance.

  • public (Boolean) (defaults to: false)

    Whether the stage instance is public or not.

  • reason (String) (defaults to: nil)

    The reason of starting the stage instance.

Returns:

Raises:



716
717
718
719
720
721
# File 'lib/discorb/channel.rb', line 716

def start(topic, public: false, reason: nil)
  Async do
    _resp, data = @client.http.post("/stage-instances", { channel_id: @id, topic: topic, public: public ? 2 : 1 }, audit_log_reason: reason).wait
    StageInstance.new(@client, data)
  end
end