From 71a4cd6a93d5a058c99feb1e2d61d031c2a4c705 Mon Sep 17 00:00:00 2001 From: hydrabolt Date: Sun, 17 Apr 2016 15:43:12 +0100 Subject: [PATCH] Added full Role tracking --- src/structures/Guild.js | 3 ++- src/structures/GuildMember.js | 33 +++++++++++++++------------------ test/random.js | 4 ++-- 3 files changed, 19 insertions(+), 21 deletions(-) diff --git a/src/structures/Guild.js b/src/structures/Guild.js index 920dc64f7..2fb6627a2 100644 --- a/src/structures/Guild.js +++ b/src/structures/Guild.js @@ -36,7 +36,8 @@ class Guild { _updateMember(member, data) { let oldRoles = member.roles; - member.roles = data.roles; + + member._roles = data.roles; if (this.client.ws.emittedReady) { this.client.emit(Constants.Events.GUILD_MEMBER_ROLES_UPDATE, this, oldRoles, member.roles); } diff --git a/src/structures/GuildMember.js b/src/structures/GuildMember.js index 1f6c10187..560787840 100644 --- a/src/structures/GuildMember.js +++ b/src/structures/GuildMember.js @@ -4,38 +4,35 @@ class GuildMember { constructor(guild, data) { this.client = guild.client; this.guild = guild; - this._user = {}; + this.user = {}; + this._roles = []; if (data) { this.setup(data); } } setup(data) { - this._user = data.user; + this.user = data.user; this.deaf = data.deaf; this.mute = data.mute; this.joinDate = new Date(data.joined_at); - this.roles = data.roles; + this._roles = data.roles; } - get username() { - return this._user.username; + get roles() { + let list = []; + for (let roleID of this._roles) { + let role = this.guild.store.get('roles', roleID); + if (role) { + list.push(role); + } + } + + return list; } get id() { - return this._user.id; - } - - get discriminator() { - return this._user.discriminator; - } - - get avatar() { - return this._user.avatar; - } - - get bot() { - return this._user.bot; + return this.user.id; } } diff --git a/test/random.js b/test/random.js index 5a35bd7a3..0adff7a8e 100644 --- a/test/random.js +++ b/test/random.js @@ -30,11 +30,11 @@ client.on('channelUpdate', (old, chan) => { }); client.on('guildMemberAdd', (guild, user) => { - console.log('new guild member', user.username, 'in', guild.name); + console.log('new guild member', user.user.username, 'in', guild.name); }); client.on('guildMemberRemove', (guild, user) => { - console.log('dead guild member', user.username, 'in', guild.name); + console.log('dead guild member', user.user.username, 'in', guild.name); }); client.on('guildRoleCreate', (guild, role) => {