Class: MijDiscord::Data::Member
Instance Attribute Summary collapse
Attributes inherited from User
#avatar_id, #bot_account, #discriminator, #extra, #game, #status, #username
Attributes included from IDObject
#id
Instance Method Summary
collapse
Methods inherited from User
#avatar_url, #current_bot?, #distinct, #dnd?, #idle?, #invisible?, #mention, #offline?, #on, #online?, #pm, process_avatar, #send_file, #update_presence, #webhook?
Methods included from IDObject
#==, #creation_time, #hash, synthesize, timestamp
Constructor Details
#initialize(data, server, bot) ⇒ Member
Returns a new instance of Member.
38
39
40
41
42
43
44
45
46
47
48
49
50
|
# File 'lib/mij-discord/data/member.rb', line 38
def initialize(data, server, bot)
@bot = bot
@user = @bot.cache.put_user(data['user'])
super @user
raise ArgumentError, 'Cannot create member with no server' unless server || data['guild_id']
@server = server || @bot.servers(data['guild_id'])
@joined_at = Time.parse(data['joined_at']).utc if data['joined_at']
update_data(data)
end
|
Instance Attribute Details
#bot ⇒ Object
Returns the value of attribute bot.
7
8
9
|
# File 'lib/mij-discord/data/member.rb', line 7
def bot
@bot
end
|
#joined_at ⇒ Object
Returns the value of attribute joined_at.
9
10
11
|
# File 'lib/mij-discord/data/member.rb', line 9
def joined_at
@joined_at
end
|
#nickname ⇒ Object
Also known as:
nick
Returns the value of attribute nickname.
11
12
13
|
# File 'lib/mij-discord/data/member.rb', line 11
def nickname
@nickname
end
|
#roles ⇒ Object
Returns the value of attribute roles.
14
15
16
|
# File 'lib/mij-discord/data/member.rb', line 14
def roles
@roles
end
|
#server ⇒ Object
Returns the value of attribute server.
16
17
18
|
# File 'lib/mij-discord/data/member.rb', line 16
def server
@server
end
|
Instance Method Details
#add_role(role, reason = nil) ⇒ Object
86
87
88
89
90
91
92
93
|
# File 'lib/mij-discord/data/member.rb', line 86
def add_role(role, reason = nil)
if role.is_a?(Array)
modify_roles(role, [], reason)
else
role = role.to_id
MijDiscord::Core::API::Server.add_member_role(@bot.auth, @server.id, @user.id, role, reason)
end
end
|
#color ⇒ Object
118
119
120
|
# File 'lib/mij-discord/data/member.rb', line 118
def color
color_role&.color
end
|
#color_role ⇒ Object
113
114
115
116
|
# File 'lib/mij-discord/data/member.rb', line 113
def color_role
roles = @roles.select {|x| x.color.to_i.nonzero? }
roles.sort_by(&:position).last
end
|
#deaf? ⇒ Boolean
22
23
24
|
# File 'lib/mij-discord/data/member.rb', line 22
def deaf?
voice_state_attribute(:deaf)
end
|
#display_name ⇒ Object
134
135
136
|
# File 'lib/mij-discord/data/member.rb', line 134
def display_name
nickname.empty? ? username : nickname
end
|
#highest_role ⇒ Object
104
105
106
|
# File 'lib/mij-discord/data/member.rb', line 104
def highest_role
@roles.sort_by(&:position).last
end
|
#hoist_role ⇒ Object
108
109
110
111
|
# File 'lib/mij-discord/data/member.rb', line 108
def hoist_role
roles = @roles.select(&:hoist)
roles.sort_by(&:position).last
end
|
#inspect ⇒ Object
138
139
140
|
# File 'lib/mij-discord/data/member.rb', line 138
def inspect
MijDiscord.make_inspect(self, :user, :joined_at, :nickname, :roles)
end
|
#member? ⇒ Boolean
62
63
64
|
# File 'lib/mij-discord/data/member.rb', line 62
def member?
true
end
|
#modify_roles(add, remove, reason = nil) ⇒ Object
80
81
82
83
84
|
# File 'lib/mij-discord/data/member.rb', line 80
def modify_roles(add, remove, reason = nil)
add, remove = add.map(&:to_id), remove.map(&:to_id)
roles = (@roles.map(&:id) - remove + add).uniq
MijDiscord::Core::API::Server.update_member(@bot.tolen, @server.id, @user.id, reason, roles: roles)
end
|
#mute? ⇒ Boolean
18
19
20
|
# File 'lib/mij-discord/data/member.rb', line 18
def mute?
voice_state_attribute(:mute)
end
|
#owner? ⇒ Boolean
66
67
68
|
# File 'lib/mij-discord/data/member.rb', line 66
def owner?
@server.owner == self
end
|
#remove_role(role, reason = nil) ⇒ Object
95
96
97
98
99
100
101
102
|
# File 'lib/mij-discord/data/member.rb', line 95
def remove_role(role, reason = nil)
if role.is_a?(Array)
modify_roles([], role, reason)
else
role = role.to_id
MijDiscord::Core::API::Server.remove_member_role(@bot.auth, @server.id, @user.id, role, reason)
end
end
|
#role?(role) ⇒ Boolean
70
71
72
73
|
# File 'lib/mij-discord/data/member.rb', line 70
def role?(role)
role = role.to_id
@roles.any? {|x| x.id == role }
end
|
#self_deaf? ⇒ Boolean
30
31
32
|
# File 'lib/mij-discord/data/member.rb', line 30
def self_deaf?
voice_state_attribute(:self_deaf)
end
|
#self_mute? ⇒ Boolean
26
27
28
|
# File 'lib/mij-discord/data/member.rb', line 26
def self_mute?
voice_state_attribute(:self_mute)
end
|
#set_nickname(nick, reason = nil) ⇒ Object
Also known as:
nickname=
#set_roles(roles, reason = nil) ⇒ Object
75
76
77
78
|
# File 'lib/mij-discord/data/member.rb', line 75
def set_roles(roles, reason = nil)
roles = roles.map(&:to_id)
MijDiscord::Core::API::Server.update_member(@bot.auth, @server.id, @user.id, reason, roles: roles)
end
|
#update_data(data) ⇒ Object
52
53
54
55
56
57
58
59
60
|
# File 'lib/mij-discord/data/member.rb', line 52
def update_data(data)
@user.update_data(data['user'])
@nickname = data.fetch('nick', @nickname || '')
if (roles = data['roles'])
@roles = roles.map {|x| @server.role(x) }
end
end
|
#voice_channel ⇒ Object
34
35
36
|
# File 'lib/mij-discord/data/member.rb', line 34
def voice_channel
voice_state_attribute(:voice_channel)
end
|