diff --git a/src/client/actions/Action.js b/src/client/actions/Action.js index 0c798089b..5746d2764 100644 --- a/src/client/actions/Action.js +++ b/src/client/actions/Action.js @@ -56,6 +56,15 @@ class GenericAction { } return existing; } + + getMember(data, guild) { + const userID = data.user.id; + const existing = guild.members.get(userID); + if (!existing && this.client.options.partials.includes(PartialTypes.GUILD_MEMBER)) { + return guild.members.add({ user: { id: userID } }); + } + return existing; + } } module.exports = GenericAction; diff --git a/src/client/actions/GuildMemberRemove.js b/src/client/actions/GuildMemberRemove.js index 6a4ae397e..108a35da8 100644 --- a/src/client/actions/GuildMemberRemove.js +++ b/src/client/actions/GuildMemberRemove.js @@ -9,7 +9,7 @@ class GuildMemberRemoveAction extends Action { const guild = client.guilds.get(data.guild_id); let member = null; if (guild) { - member = guild.members.get(data.user.id); + member = this.getMember(data, guild); guild.memberCount--; if (member) { guild.voiceStates.delete(member.id); diff --git a/src/structures/Guild.js b/src/structures/Guild.js index c1d901a47..1b5987f1f 100644 --- a/src/structures/Guild.js +++ b/src/structures/Guild.js @@ -393,7 +393,9 @@ class Guild extends Base { * @readonly */ get me() { - return this.members.get(this.client.user.id) || null; + return this.members.get(this.client.user.id) || (this.client.options.partials.includes(PartialTypes.GUILD_MEMBER) ? + this.members.add({ user: { id: this.client.user.id } }, true) : + null); } /**