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, reason = nil) ⇒ Object
Adds one or more roles to this member.
-
#colour ⇒ ColourRGB?
(also: #color)
The colour this member has.
-
#colour_role ⇒ Role?
(also: #color_role)
The role this member is basing their colour on.
-
#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).
-
#highest_role ⇒ Role
The highest role this member has.
-
#hoist_role ⇒ Role?
The role this member is being hoisted with.
-
#inspect ⇒ Object
Overwriting inspect for debug purposes.
-
#modify_roles(add, remove, reason = nil) ⇒ 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=)
-
#owner? ⇒ true, false
Whether this member is the server owner.
-
#remove_role(role, reason = nil) ⇒ Object
Removes one or more roles from this member.
-
#role?(role) ⇒ true, false
Whether this member has the specified role.
- #roles=(role) ⇒ Object
-
#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.
-
#set_nick(nick, reason = nil) ⇒ Object
(also: #set_nickname)
Sets or resets this member's nickname.
-
#set_roles(role, reason = nil) ⇒ Object
Bulk sets a member's roles.
-
#voice_channel ⇒ Channel
The voice channel this member is in.
Methods included from PermissionCalculator
#defined_permission?, #permission?
Methods inherited from User
#await, #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, reason = nil) ⇒ Object
Adds one or more roles to this member.
616 617 618 619 620 621 622 623 624 625 626 |
# File 'lib/discordrb/data.rb', line 616 def add_role(role, reason = nil) role_ids = role_id_array(role) if role_ids.count == 1 API::Server.add_member_role(@bot.token, @server.id, @user.id, role_ids[0], reason) else 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, reason: reason) end end |
#colour ⇒ ColourRGB? Also known as: color
Returns the colour this member has.
666 667 668 669 670 |
# File 'lib/discordrb/data.rb', line 666 def colour return nil unless colour_role colour_role.color end |
#colour_role ⇒ Role? Also known as: color_role
Returns the role this member is basing their colour on.
657 658 659 660 661 662 |
# File 'lib/discordrb/data.rb', line 657 def colour_role coloured_roles = @roles.select { |v| v.colour.combined.nonzero? } return nil if coloured_roles.empty? coloured_roles.max_by(&:position) end |
#deaf ⇒ true, false Also known as: deafened?
Returns whether this member is deafened server-wide.
526 527 528 |
# File 'lib/discordrb/data.rb', line 526 def deaf voice_state_attribute(:deaf) end |
#display_name ⇒ String
Returns the name the user displays as (nickname if they have one, username otherwise).
718 719 720 |
# File 'lib/discordrb/data.rb', line 718 def display_name nickname || username end |
#highest_role ⇒ Role
Returns the highest role this member has.
644 645 646 |
# File 'lib/discordrb/data.rb', line 644 def highest_role @roles.max_by(&:position) end |
#hoist_role ⇒ Role?
Returns the role this member is being hoisted with.
649 650 651 652 653 654 |
# File 'lib/discordrb/data.rb', line 649 def hoist_role hoisted_roles = @roles.select(&:hoist) return nil if hoisted_roles.empty? hoisted_roles.max_by(&:position) end |
#inspect ⇒ Object
Overwriting inspect for debug purposes
745 746 747 |
# File 'lib/discordrb/data.rb', line 745 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, reason = nil) ⇒ Object
Adds and removes roles from a member.
604 605 606 607 608 609 610 611 |
# File 'lib/discordrb/data.rb', line 604 def modify_roles(add, remove, reason = nil) 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, reason: reason) end |
#mute ⇒ true, false Also known as: muted?
Returns whether this member is muted server-wide.
521 522 523 |
# File 'lib/discordrb/data.rb', line 521 def mute voice_state_attribute(:mute) end |
#nick=(nick) ⇒ Object Also known as: nickname=
694 695 696 |
# File 'lib/discordrb/data.rb', line 694 def nick=(nick) set_nick(nick) end |
#owner? ⇒ true, false
Returns whether this member is the server owner.
572 573 574 |
# File 'lib/discordrb/data.rb', line 572 def owner? @server.owner == self end |
#remove_role(role, reason = nil) ⇒ Object
Removes one or more roles from this member.
631 632 633 634 635 636 637 638 639 640 641 |
# File 'lib/discordrb/data.rb', line 631 def remove_role(role, reason = nil) role_ids = role_id_array(role) if role_ids.count == 1 API::Server.remove_member_role(@bot.token, @server.id, @user.id, role_ids[0], reason) else old_role_ids = @roles.map(&:id) 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, reason: reason) end end |
#role?(role) ⇒ true, false
Returns whether this member has the specified role.
578 579 580 581 |
# File 'lib/discordrb/data.rb', line 578 def role?(role) role = role.resolve_id @roles.any? { |e| e.id == role } end |
#roles=(role) ⇒ Object
584 585 586 |
# File 'lib/discordrb/data.rb', line 584 def roles=(role) set_roles(role) end |
#self_deaf ⇒ true, false Also known as: self_deafened?
Returns whether this member has deafened themselves.
536 537 538 |
# File 'lib/discordrb/data.rb', line 536 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.
531 532 533 |
# File 'lib/discordrb/data.rb', line 531 def self_mute voice_state_attribute(:self_mute) end |
#server_deafen ⇒ Object
Server deafens this member.
674 675 676 |
# File 'lib/discordrb/data.rb', line 674 def server_deafen API::Server.update_member(@bot.token, @server.id, @user.id, deaf: true) end |
#server_mute ⇒ Object
Server mutes this member.
684 685 686 |
# File 'lib/discordrb/data.rb', line 684 def server_mute API::Server.update_member(@bot.token, @server.id, @user.id, mute: true) end |
#server_undeafen ⇒ Object
Server undeafens this member.
679 680 681 |
# File 'lib/discordrb/data.rb', line 679 def server_undeafen API::Server.update_member(@bot.token, @server.id, @user.id, deaf: false) end |
#server_unmute ⇒ Object
Server unmutes this member.
689 690 691 |
# File 'lib/discordrb/data.rb', line 689 def server_unmute API::Server.update_member(@bot.token, @server.id, @user.id, mute: false) end |
#set_nick(nick, reason = nil) ⇒ Object Also known as: set_nickname
Sets or resets this member's nickname. Requires the Change Nickname permission for the bot itself and Manage Nicknames for other users.
704 705 706 707 708 709 710 711 712 713 |
# File 'lib/discordrb/data.rb', line 704 def set_nick(nick, reason = nil) # 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, reason) else API::Server.update_member(@bot.token, @server.id, @user.id, nick: nick, reason: nil) end end |
#set_roles(role, reason = nil) ⇒ Object
Bulk sets a member's roles.
591 592 593 594 |
# File 'lib/discordrb/data.rb', line 591 def set_roles(role, reason = nil) role_ids = role_id_array(role) API::Server.update_member(@bot.token, @server.id, @user.id, roles: role_ids, reason: reason) end |
#voice_channel ⇒ Channel
Returns the voice channel this member is in.
541 542 543 |
# File 'lib/discordrb/data.rb', line 541 def voice_channel voice_state_attribute(:voice_channel) end |