Class: Discorb::Member

Inherits:
User show all
Defined in:
lib/discorb/member.rb

Overview

Represents a member of a guild.

Instance Attribute Summary collapse

Attributes inherited from User

#avatar, #bot, #created_at, #discriminator, #flag, #id, #username, #verified

Instance Method Summary collapse

Methods inherited from User

#bot_owner?

Methods included from Messageable

#delete_message!, #edit_message, #fetch_message, #fetch_messages, #post, #typing

Methods inherited from DiscordModel

#==, #eql?, #hash

Instance Attribute Details

#activities -> nil, Array<Discorb::Activity> (readonly)

Note:

This method returns an object from client cache. it will return nil if the object is not in cache.

Returns:



# File 'lib/discorb/member.rb', line 30

#activity -> nil, Discorb::Activity (readonly)

Note:

This method returns an object from client cache. it will return nil if the object is not in cache.

Returns:



# File 'lib/discorb/member.rb', line 30

#custom_avatar -> Discorb::Asset? (readonly)

Returns:

  • (Discorb::Asset)

    The custom avatar of the member.

  • (nil)

    If the member has no custom avatar.



17
18
19
# File 'lib/discorb/member.rb', line 17

def custom_avatar
  @custom_avatar
end

#deaf -> Boolean (readonly) Also known as: deaf?

Returns Whether the member is deafened.

Returns:

  • (Boolean)

    Whether the member is deafened.



24
25
26
# File 'lib/discorb/member.rb', line 24

def deaf
  @deaf
end

#display_avatar -> Discorb::Asset (readonly)

Returns The display avatar of the member.

Returns:



19
20
21
# File 'lib/discorb/member.rb', line 19

def display_avatar
  @display_avatar
end

#guild -> nil, Discorb::Guild (readonly)

Note:

This method returns an object from client cache. it will return nil if the object is not in cache.

Returns:

  • (nil)

    The object wasn't cached.

  • (Discorb::Guild)

    The guild the member is in.



# File 'lib/discorb/member.rb', line 30

#hoisted? -> Boolean (readonly)

Returns Whether the member has a hoisted role.

Returns:

  • (Boolean)

    Whether the member has a hoisted role.



# File 'lib/discorb/member.rb', line 30

#hoisted_role -> nil, Discorb::Role (readonly)

Note:

This method returns an object from client cache. it will return nil if the object is not in cache.

Returns:

  • (nil)

    The object wasn't cached.

  • (Discorb::Role)

    The hoisted role of the member.

  • (nil)

    If the member has no hoisted role.



# File 'lib/discorb/member.rb', line 30

#joined_at -> Time (readonly)

Returns The time the member joined the guild.

Returns:

  • (Time)

    The time the member joined the guild.



14
15
16
# File 'lib/discorb/member.rb', line 14

def joined_at
  @joined_at
end

#mention -> String (readonly)

Returns The mention of the member.

Returns:

  • (String)

    The mention of the member.



# File 'lib/discorb/member.rb', line 30

#mute -> Boolean (readonly) Also known as: mute?

Returns Whether the member is muted.

Returns:

  • (Boolean)

    Whether the member is muted.



21
22
23
# File 'lib/discorb/member.rb', line 21

def mute
  @mute
end

#name -> String (readonly)

Returns The display name of the member.

Returns:

  • (String)

    The display name of the member.



# File 'lib/discorb/member.rb', line 30

#nick -> String? (readonly)

Returns:

  • (String)

    The nickname of the member.

  • (nil)

    If the member has no nickname.



12
13
14
# File 'lib/discorb/member.rb', line 12

def nick
  @nick
end

#pending -> Boolean (readonly) Also known as: pending?

Returns Whether the member is pending (Not passed member screening).

Returns:

  • (Boolean)

    Whether the member is pending (Not passed member screening).



27
28
29
# File 'lib/discorb/member.rb', line 27

def pending
  @pending
end

#permissions -> Discorb::Permission (readonly)

Returns The permissions of the member.

Returns:



# File 'lib/discorb/member.rb', line 30

#premium_since -> Time (readonly)

Returns The time the member boosted the guild.

Returns:

  • (Time)

    The time the member boosted the guild.



9
10
11
# File 'lib/discorb/member.rb', line 9

def premium_since
  @premium_since
end

#presence -> nil, Discorb::Presence (readonly)

Note:

This method returns an object from client cache. it will return nil if the object is not in cache.

Returns:

  • (nil)

    The object wasn't cached.

  • (Discorb::Presence)

    The presence of the member.



# File 'lib/discorb/member.rb', line 30

#roles -> nil, Array<Discorb::Role> (readonly)

Note:

This method returns an object from client cache. it will return nil if the object is not in cache.

Returns:

  • (nil)

    The object wasn't cached.

  • (Array<Discorb::Role>)

    The roles of the member.



# File 'lib/discorb/member.rb', line 30

#status -> nil, Symbol (readonly)

Note:

This method returns an object from client cache. it will return nil if the object is not in cache.

Returns:

  • (nil)

    The object wasn't cached.

  • (Symbol)

    The status of the member. It's from the #presence.



# File 'lib/discorb/member.rb', line 30

#voice_state -> Discorb::VoiceState (readonly)

Returns The voice state of the member.

Returns:



# File 'lib/discorb/member.rb', line 30

Instance Method Details

#add_role(role, reason: nil) -> Object

Note:

This method calls HTTP request.

Note:

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

Add a role to the member.

Parameters:

  • role (Discorb::Role)

    The role to add.

  • reason (String) (defaults to: nil)

    The reason for the action.

Raises:



150
151
152
153
154
# File 'lib/discorb/member.rb', line 150

def add_role(role, reason: nil)
  Async do
    @client.http.put("/guilds/#{@guild_id}/members/#{@id}/roles/#{role.is_a?(Role) ? role.id : role}", nil, audit_log_reason: reason).wait
  end
end

#ban(delete_message_days: 0, reason: nil) -> Async::Task<Discorb::Guild::Ban>

Ban the member.

Parameters:

  • delete_message_days (Integer) (defaults to: 0)

    The number of days to delete messages.

  • reason (String) (defaults to: nil)

    The reason for the action.

Returns:



216
217
218
219
220
# File 'lib/discorb/member.rb', line 216

def ban(delete_message_days: 0, reason: nil)
  Async do
    guild.ban_member(self, delete_message_days: delete_message_days, reason: reason).wait
  end
end

#edit(nick: :unset, role: :unset, mute: :unset, deaf: :unset, channel: :unset, reason: nil) -> Object Also known as: modify

Note:

This method calls HTTP request.

Note:

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

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 member.

Parameters:

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

    The nickname of the member.

  • role (Discorb::Role) (defaults to: :unset)

    The roles of the member.

  • mute (Boolean) (defaults to: :unset)

    Whether the member is muted.

  • deaf (Boolean) (defaults to: :unset)

    Whether the member is deafened.

  • channel (Discorb::StageChannel) (defaults to: :unset)

    The channel the member is moved to.

  • reason (String) (defaults to: nil)

    The reason for the action.

Raises:



183
184
185
186
187
188
189
190
191
192
193
# File 'lib/discorb/member.rb', line 183

def edit(nick: :unset, role: :unset, mute: :unset, deaf: :unset, channel: :unset, reason: nil)
  Async do
    payload = {}
    payload[:nick] = nick if nick != :unset
    payload[:roles] = role if role != :unset
    payload[:mute] = mute if mute != :unset
    payload[:deaf] = deaf if deaf != :unset
    payload[:channel_id] = channel&.id if channel != :unset
    @client.http.patch("/guilds/#{@guild_id}/members/#{@id}", payload, audit_log_reason: reason).wait
  end
end

#inspect -> Object



138
139
140
# File 'lib/discorb/member.rb', line 138

def inspect
  "#<#{self.class} #{self} id=#{@id}>"
end

#kick(reason: nil) -> Object

Kick the member.

Parameters:

  • reason (String) (defaults to: nil)

    The reason for the action.



202
203
204
205
206
# File 'lib/discorb/member.rb', line 202

def kick(reason: nil)
  Async do
    guild.kick_member(self, reason: reason).wait
  end
end

#remove_role(role, reason: nil) -> Object

Note:

This method calls HTTP request.

Note:

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

Remove a role to the member.

Parameters:

  • role (Discorb::Role)

    The role to add.

  • reason (String) (defaults to: nil)

    The reason for the action.

Raises:



164
165
166
167
168
# File 'lib/discorb/member.rb', line 164

def remove_role(role, reason: nil)
  Async do
    @client.http.delete("/guilds/#{@guild_id}/members/#{@id}/roles/#{role.is_a?(Role) ? role.id : role}", audit_log_reason: reason).wait
  end
end

#to_s -> String

Format the member to @name style.

Returns:

  • (String)

    The formatted member.



77
78
79
# File 'lib/discorb/member.rb', line 77

def to_s
  "@#{name}"
end

#to_s_user -> String

Format the member to Username#Discriminator style.

Returns:

  • (String)

    The formatted member.



86
87
88
# File 'lib/discorb/member.rb', line 86

def to_s_user
  "#{username}##{discriminator}"
end