mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-09 16:13:31 +01:00
Create Member class, stop storing member data separately and merge into one class with a User
This commit is contained in:
@@ -21,10 +21,12 @@ class GuildMemberRemoveHandler extends AbstractHandler {
|
||||
let client = this.packetManager.client;
|
||||
|
||||
let guild = client.store.get('guilds', data.guild_id);
|
||||
let user = client.store.get('users', data.user.id);
|
||||
|
||||
if (guild && user) {
|
||||
guild._removeMember(user);
|
||||
if (guild) {
|
||||
let member = guild.store.get('members', data.user.id);
|
||||
if (member) {
|
||||
guild._removeMember(member);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -21,10 +21,12 @@ class GuildMemberUpdateHandler extends AbstractHandler {
|
||||
let client = this.packetManager.client;
|
||||
|
||||
let guild = client.store.get('guilds', data.guild_id);
|
||||
let user = client.store.get('users', data.user.id);
|
||||
|
||||
if (guild) {
|
||||
guild._updateMember(user, data);
|
||||
let member = guild.store.get('members', data.user.id);
|
||||
if (member) {
|
||||
guild._updateMember(member, data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
const User = require('./User');
|
||||
const Member = require('./Member');
|
||||
const GuildDataStore = require('./datastore/GuildDataStore');
|
||||
const TextChannel = require('./TextChannel');
|
||||
const VoiceChannel = require('./VoiceChannel');
|
||||
@@ -25,30 +26,25 @@ class Guild {
|
||||
}
|
||||
|
||||
_addMember(guildUser) {
|
||||
let user = this.client.store.NewUser(guildUser.user);
|
||||
this.store.memberData[user.id] = {
|
||||
deaf: guildUser.deaf,
|
||||
mute: guildUser.mute,
|
||||
joinDate: new Date(guildUser.joined_at),
|
||||
roles: guildUser.roles,
|
||||
};
|
||||
guildUser.user = this.client.store.NewUser(guildUser.user);
|
||||
let member = this.store.add('members', new Member(this, guildUser));
|
||||
if (this.client.ws.emittedReady) {
|
||||
this.client.emit(Constants.Events.GUILD_MEMBER_ADD, this, user);
|
||||
this.client.emit(Constants.Events.GUILD_MEMBER_ADD, this, member);
|
||||
}
|
||||
}
|
||||
|
||||
_updateMember(currentUser, newData) {
|
||||
let oldRoles = this.store.memberData[currentUser.id].roles;
|
||||
this.store.currentUser[currentUser.id].roles = newData.roles;
|
||||
_updateMember(member, data) {
|
||||
let oldRoles = member.roles;
|
||||
member.roles = data.roles;
|
||||
if (this.client.ws.emittedReady) {
|
||||
this.client.emit(Constants.Events.GUILD_MEMBER_ROLES_UPDATE, this, oldRoles, this.store.memberData[currentUser.id].roles);
|
||||
this.client.emit(Constants.Events.GUILD_MEMBER_ROLES_UPDATE, this, oldRoles, member.roles);
|
||||
}
|
||||
}
|
||||
|
||||
_removeMember(guildUser) {
|
||||
this.store.remove('members', guildUser);
|
||||
_removeMember(guildMember) {
|
||||
this.store.remove('members', guildMember);
|
||||
if (this.client.ws.emittedReady) {
|
||||
this.client.emit(Constants.Events.GUILD_MEMBER_REMOVE, this, guildUser);
|
||||
this.client.emit(Constants.Events.GUILD_MEMBER_REMOVE, this, guildMember);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
42
src/structures/Member.js
Normal file
42
src/structures/Member.js
Normal file
@@ -0,0 +1,42 @@
|
||||
'use strict';
|
||||
|
||||
class Member {
|
||||
constructor(guild, data) {
|
||||
this.client = guild.client;
|
||||
this.guild = guild;
|
||||
this._user = {};
|
||||
if (data) {
|
||||
this.setup(data);
|
||||
}
|
||||
}
|
||||
|
||||
setup(data) {
|
||||
this._user = data.user;
|
||||
this.deaf = data.deaf;
|
||||
this.mute = data.mute;
|
||||
this.joinDate = new Date(data.joined_at);
|
||||
this.roles = data.roles;
|
||||
}
|
||||
|
||||
get username() {
|
||||
return this._user.username;
|
||||
}
|
||||
|
||||
get id() {
|
||||
return this._user.id;
|
||||
}
|
||||
|
||||
get discriminator() {
|
||||
return this._user.discriminator;
|
||||
}
|
||||
|
||||
get avatar() {
|
||||
return this._user.avatar;
|
||||
}
|
||||
|
||||
get bot() {
|
||||
return this._user.bot;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Member;
|
||||
@@ -6,8 +6,6 @@ class GuildDataStore extends AbstractDataStore{
|
||||
constructor() {
|
||||
super();
|
||||
|
||||
this.memberData = {};
|
||||
|
||||
this.register('members');
|
||||
this.register('channels');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user