mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-18 12:33:30 +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 client = this.packetManager.client;
|
||||||
|
|
||||||
let guild = client.store.get('guilds', data.guild_id);
|
let guild = client.store.get('guilds', data.guild_id);
|
||||||
let user = client.store.get('users', data.user.id);
|
|
||||||
|
|
||||||
if (guild && user) {
|
if (guild) {
|
||||||
guild._removeMember(user);
|
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 client = this.packetManager.client;
|
||||||
|
|
||||||
let guild = client.store.get('guilds', data.guild_id);
|
let guild = client.store.get('guilds', data.guild_id);
|
||||||
let user = client.store.get('users', data.user.id);
|
|
||||||
|
|
||||||
if (guild) {
|
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';
|
'use strict';
|
||||||
|
|
||||||
const User = require('./User');
|
const User = require('./User');
|
||||||
|
const Member = require('./Member');
|
||||||
const GuildDataStore = require('./datastore/GuildDataStore');
|
const GuildDataStore = require('./datastore/GuildDataStore');
|
||||||
const TextChannel = require('./TextChannel');
|
const TextChannel = require('./TextChannel');
|
||||||
const VoiceChannel = require('./VoiceChannel');
|
const VoiceChannel = require('./VoiceChannel');
|
||||||
@@ -25,30 +26,25 @@ class Guild {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_addMember(guildUser) {
|
_addMember(guildUser) {
|
||||||
let user = this.client.store.NewUser(guildUser.user);
|
guildUser.user = this.client.store.NewUser(guildUser.user);
|
||||||
this.store.memberData[user.id] = {
|
let member = this.store.add('members', new Member(this, guildUser));
|
||||||
deaf: guildUser.deaf,
|
|
||||||
mute: guildUser.mute,
|
|
||||||
joinDate: new Date(guildUser.joined_at),
|
|
||||||
roles: guildUser.roles,
|
|
||||||
};
|
|
||||||
if (this.client.ws.emittedReady) {
|
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) {
|
_updateMember(member, data) {
|
||||||
let oldRoles = this.store.memberData[currentUser.id].roles;
|
let oldRoles = member.roles;
|
||||||
this.store.currentUser[currentUser.id].roles = newData.roles;
|
member.roles = data.roles;
|
||||||
if (this.client.ws.emittedReady) {
|
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) {
|
_removeMember(guildMember) {
|
||||||
this.store.remove('members', guildUser);
|
this.store.remove('members', guildMember);
|
||||||
if (this.client.ws.emittedReady) {
|
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() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
this.memberData = {};
|
|
||||||
|
|
||||||
this.register('members');
|
this.register('members');
|
||||||
this.register('channels');
|
this.register('channels');
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user