Class: Discordrb::Member
- Includes:
- MemberAttributes, PermissionCalculator
- Defined in:
- lib/discordrb/data.rb
Overview
A member is a user on a server. It differs from regular users in that it has roles, voice statuses and things like that.
Instance Attribute Summary
Attributes included from MemberAttributes
#joined_at, #nick, #roles, #server
Attributes inherited from User
Attributes included from UserAttributes
#avatar_id, #bot_account, #discriminator, #username
Attributes included from IDObject
Instance Method Summary collapse
-
#add_role(role) ⇒ Object
Adds one or more roles to this member.
-
#deaf ⇒ true, false
(also: #deafened?)
Whether this member is deafened server-wide.
-
#display_name ⇒ String
The name the user displays as (nickname if they have one, username otherwise).
-
#inspect ⇒ Object
Overwriting inspect for debug purposes.
-
#modify_roles(add, remove) ⇒ Object
Adds and removes roles from a member.
-
#mute ⇒ true, false
(also: #muted?)
Whether this member is muted server-wide.
-
#nick=(nick) ⇒ Object
(also: #nickname=)
Sets or resets this member's nickname.
-
#owner? ⇒ true, false
Whether this member is the server owner.
-
#remove_role(role) ⇒ Object
Removes one or more roles from this member.
-
#role?(role) ⇒ true, false
Whether this member has the specified role.
-
#roles=(role) ⇒ Object
Bulk sets a member's roles.
-
#self_deaf ⇒ true, false
(also: #self_deafened?)
Whether this member has deafened themselves.
-
#self_mute ⇒ true, false
(also: #self_muted?)
Whether this member has muted themselves.
-
#server_deafen ⇒ Object
Server deafens this member.
-
#server_mute ⇒ Object
Server mutes this member.
-
#server_undeafen ⇒ Object
Server undeafens this member.
-
#server_unmute ⇒ Object
Server unmutes this member.
-
#voice_channel ⇒ Channel
The voice channel this member is in.
Methods included from PermissionCalculator
#defined_permission?, #permission?
Methods inherited from User
#await, #current_bot?, #on, #pm, #send_file, #webhook?
Methods included from UserAttributes
#avatar_url, #distinct, #mention
Methods included from IDObject
Instance Method Details
#add_role(role) ⇒ Object
Adds one or more roles to this member.
511 512 513 514 515 516 517 |
# File 'lib/discordrb/data.rb', line 511 def add_role(role) role_ids = role_id_array(role) old_role_ids = @roles.map(&:id) new_role_ids = (old_role_ids + role_ids).uniq API::Server.update_member(@bot.token, @server.id, @user.id, roles: new_role_ids) end |
#deaf ⇒ true, false Also known as: deafened?
Returns whether this member is deafened server-wide.
430 431 432 |
# File 'lib/discordrb/data.rb', line 430 def deaf voice_state_attribute(:deaf) end |
#display_name ⇒ String
Returns the name the user displays as (nickname if they have one, username otherwise).
566 567 568 |
# File 'lib/discordrb/data.rb', line 566 def display_name nickname || username end |
#inspect ⇒ Object
Overwriting inspect for debug purposes
589 590 591 |
# File 'lib/discordrb/data.rb', line 589 def inspect "<Member user=#{@user.inspect} server=#{@server.inspect} joined_at=#{@joined_at} roles=#{@roles.inspect} voice_channel=#{@voice_channel.inspect} mute=#{@mute} deaf=#{@deaf} self_mute=#{@self_mute} self_deaf=#{@self_deaf}>" end |
#modify_roles(add, remove) ⇒ Object
Adds and removes roles from a member.
500 501 502 503 504 505 506 507 |
# File 'lib/discordrb/data.rb', line 500 def modify_roles(add, remove) add_role_ids = role_id_array(add) remove_role_ids = role_id_array(remove) old_role_ids = @roles.map(&:id) new_role_ids = (old_role_ids - remove_role_ids + add_role_ids).uniq API::Server.update_member(@bot.token, @server.id, @user.id, roles: new_role_ids) end |
#mute ⇒ true, false Also known as: muted?
Returns whether this member is muted server-wide.
425 426 427 |
# File 'lib/discordrb/data.rb', line 425 def mute voice_state_attribute(:mute) end |
#nick=(nick) ⇒ Object Also known as: nickname=
Sets or resets this member's nickname. Requires the Change Nickname permission for the bot itself and Manage Nicknames for other users.
552 553 554 555 556 557 558 559 560 561 |
# File 'lib/discordrb/data.rb', line 552 def nick=(nick) # Discord uses the empty string to signify 'no nickname' so we convert nil into that nick ||= '' if @user.current_bot? API::User.change_own_nickname(@bot.token, @server.id, nick) else API::Server.update_member(@bot.token, @server.id, @user.id, nick: nick) end end |
#owner? ⇒ true, false
Returns whether this member is the server owner.
475 476 477 |
# File 'lib/discordrb/data.rb', line 475 def owner? @server.owner == self end |
#remove_role(role) ⇒ Object
Removes one or more roles from this member.
521 522 523 524 525 526 527 |
# File 'lib/discordrb/data.rb', line 521 def remove_role(role) old_role_ids = @roles.map(&:id) role_ids = role_id_array(role) new_role_ids = old_role_ids.reject { |i| role_ids.include?(i) } API::Server.update_member(@bot.token, @server.id, @user.id, roles: new_role_ids) end |
#role?(role) ⇒ true, false
Returns whether this member has the specified role.
481 482 483 484 |
# File 'lib/discordrb/data.rb', line 481 def role?(role) role = role.resolve_id @roles.any? { |e| e.id == role } end |
#roles=(role) ⇒ Object
Bulk sets a member's roles.
488 489 490 491 |
# File 'lib/discordrb/data.rb', line 488 def roles=(role) role_ids = role_id_array(role) API::Server.update_member(@bot.token, @server.id, @user.id, roles: role_ids) end |
#self_deaf ⇒ true, false Also known as: self_deafened?
Returns whether this member has deafened themselves.
440 441 442 |
# File 'lib/discordrb/data.rb', line 440 def self_deaf voice_state_attribute(:self_deaf) end |
#self_mute ⇒ true, false Also known as: self_muted?
Returns whether this member has muted themselves.
435 436 437 |
# File 'lib/discordrb/data.rb', line 435 def self_mute voice_state_attribute(:self_mute) end |
#server_deafen ⇒ Object
Server deafens this member.
530 531 532 |
# File 'lib/discordrb/data.rb', line 530 def server_deafen API::Server.update_member(@bot.token, @server.id, @user.id, deaf: true) end |
#server_mute ⇒ Object
Server mutes this member.
540 541 542 |
# File 'lib/discordrb/data.rb', line 540 def server_mute API::Server.update_member(@bot.token, @server.id, @user.id, mute: true) end |
#server_undeafen ⇒ Object
Server undeafens this member.
535 536 537 |
# File 'lib/discordrb/data.rb', line 535 def server_undeafen API::Server.update_member(@bot.token, @server.id, @user.id, deaf: false) end |
#server_unmute ⇒ Object
Server unmutes this member.
545 546 547 |
# File 'lib/discordrb/data.rb', line 545 def server_unmute API::Server.update_member(@bot.token, @server.id, @user.id, mute: false) end |
#voice_channel ⇒ Channel
Returns the voice channel this member is in.
445 446 447 |
# File 'lib/discordrb/data.rb', line 445 def voice_channel voice_state_attribute(:voice_channel) end |