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
#game, #status, #stream_type, #stream_url
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
#==, #creation_time, synthesise
Instance Method Details
#add_role(role) ⇒ Object
Adds one or more roles to this member.
548 549 550 551 552 553 554 |
# File 'lib/discordrb/data.rb', line 548 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.
467 468 469 |
# File 'lib/discordrb/data.rb', line 467 def deaf voice_state_attribute(:deaf) end |
#display_name ⇒ String
Returns the name the user displays as (nickname if they have one, username otherwise).
603 604 605 |
# File 'lib/discordrb/data.rb', line 603 def display_name nickname || username end |
#inspect ⇒ Object
Overwriting inspect for debug purposes
626 627 628 |
# File 'lib/discordrb/data.rb', line 626 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.
537 538 539 540 541 542 543 544 |
# File 'lib/discordrb/data.rb', line 537 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.
462 463 464 |
# File 'lib/discordrb/data.rb', line 462 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.
589 590 591 592 593 594 595 596 597 598 |
# File 'lib/discordrb/data.rb', line 589 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.
512 513 514 |
# File 'lib/discordrb/data.rb', line 512 def owner? @server.owner == self end |
#remove_role(role) ⇒ Object
Removes one or more roles from this member.
558 559 560 561 562 563 564 |
# File 'lib/discordrb/data.rb', line 558 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.
518 519 520 521 |
# File 'lib/discordrb/data.rb', line 518 def role?(role) role = role.resolve_id @roles.any? { |e| e.id == role } end |
#roles=(role) ⇒ Object
Bulk sets a member's roles.
525 526 527 528 |
# File 'lib/discordrb/data.rb', line 525 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.
477 478 479 |
# File 'lib/discordrb/data.rb', line 477 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.
472 473 474 |
# File 'lib/discordrb/data.rb', line 472 def self_mute voice_state_attribute(:self_mute) end |
#server_deafen ⇒ Object
Server deafens this member.
567 568 569 |
# File 'lib/discordrb/data.rb', line 567 def server_deafen API::Server.update_member(@bot.token, @server.id, @user.id, deaf: true) end |
#server_mute ⇒ Object
Server mutes this member.
577 578 579 |
# File 'lib/discordrb/data.rb', line 577 def server_mute API::Server.update_member(@bot.token, @server.id, @user.id, mute: true) end |
#server_undeafen ⇒ Object
Server undeafens this member.
572 573 574 |
# File 'lib/discordrb/data.rb', line 572 def server_undeafen API::Server.update_member(@bot.token, @server.id, @user.id, deaf: false) end |
#server_unmute ⇒ Object
Server unmutes this member.
582 583 584 |
# File 'lib/discordrb/data.rb', line 582 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.
482 483 484 |
# File 'lib/discordrb/data.rb', line 482 def voice_channel voice_state_attribute(:voice_channel) end |