class Discorb::Invite

Represents invite of discord.

Attributes

target_types[R]

@!visibility private

approximate_member_count[R]

@return [Integer] The approximate number of members of invite.

approximate_presence_count[R]

@return [Integer] The approximate number of online users of invite.

code[R]

@return [String] The code of invite.

created_at[R]

@return [Time] The time when invite was created. @macro nometa

expires_at[R]

@return [Time] The time when invite expires. @return [nil] The invite never expires. @macro [new] nometa

@return [nil] The invite doesn't have metadata.
max_age[R]

@return [Integer] Duration of invite in seconds. @macro nometa

max_uses[R]

@return [Integer] The maximum number of uses of invite. @macro nometa

target_type[R]

@return [:voice, :stream, :guild] The type of invite.

target_user[R]

@return [User] The user of invite.

uses[R]

@return [Integer] The number of uses of invite. @macro nometa

Public Class Methods

new(client, data, gateway) click to toggle source

@!visibility private

# File lib/discorb/invite.rb, line 76
def initialize(client, data, gateway)
  @client = client
  @data = data[:data]
  _set_data(data, gateway)
end

Public Instance Methods

channel() click to toggle source
# File lib/discorb/invite.rb, line 82
def channel
  @client.channels[@channel_data[:id]]
end
delete!(reason: nil) click to toggle source

Delete the invite. @macro async @macro http

# File lib/discorb/invite.rb, line 105
def delete!(reason: nil)
  Async do
    @client.http.delete("/invites/#{@code}", audit_log_reason: reason)
  end
end
guild() click to toggle source
# File lib/discorb/invite.rb, line 86
def guild
  @client.guilds[@guild_data[:id]]
end
remain_uses() click to toggle source
# File lib/discorb/invite.rb, line 94
def remain_uses
  @max_uses && @max_uses - @uses
end
temporary?() click to toggle source
# File lib/discorb/invite.rb, line 98
def temporary?
  @temporary
end
url() click to toggle source
# File lib/discorb/invite.rb, line 90
def url
  "https://discord.gg/#{@code}"
end

Private Instance Methods

_set_data(data, gateway) click to toggle source
# File lib/discorb/invite.rb, line 113
def _set_data(data, gateway)
  @code = data[:code]
  if gateway
    @channel_data = { id: data[:channel_id] }
    @guild_data = { id: data[:guild_id] }
  else
    @guild_data = data[:guild]
    @channel_data = data[:channel]
    @approximate_presence_count = data[:approximate_presence_count]
    @approximate_member_count = data[:approximate_member_count]
    @expires_at = data[:expires_at] && Time.iso8601(data[:expires_at])
  end
  @inviter_data = data[:inviter]
  @target_type = self.class.target_types[data[:target_type]]
  @target_user = @client.users[data[:target_user][:id]] || User.new(@client, data[:target_user]) if data[:target_user]
  # @target_application = nil

  # @stage_instance = data[:stage_instance] && Invite::StageInstance.new(self, data[:stage_instance])
  return unless data.key?(:uses)

  @uses = data[:uses]
  @max_uses = data[:max_uses]
  @max_age = data[:max_age]
  @temporary = data[:temporary]
  @created_at = Time.iso8601(data[:created_at])
end