From 32e2dd212e3137d16457216e1330242c21487774 Mon Sep 17 00:00:00 2001 From: Pascal Date: Wed, 31 Jan 2018 21:04:15 +0100 Subject: [PATCH] fix: add clone methods to GuildMember and GuildMemberRoleStore Fixes #2312 This adds clone method to both classes to achieve the expected behaviour when cloning a GuildMember, also cloning their roles store --- src/stores/GuildMemberRoleStore.js | 6 ++++++ src/structures/GuildMember.js | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/src/stores/GuildMemberRoleStore.js b/src/stores/GuildMemberRoleStore.js index 9de5ab14d..af9d08ef1 100644 --- a/src/stores/GuildMemberRoleStore.js +++ b/src/stores/GuildMemberRoleStore.js @@ -128,6 +128,12 @@ class GuildMemberRoleStore extends DataStore { } } + clone() { + const clone = new this.constructor(this.member); + clone._patch(this.keyArray()); + return clone; + } + /** * Resolves a RoleResolvable to a Role object. * @method resolve diff --git a/src/structures/GuildMember.js b/src/structures/GuildMember.js index 3f609ddde..1b988d32f 100644 --- a/src/structures/GuildMember.js +++ b/src/structures/GuildMember.js @@ -75,6 +75,12 @@ class GuildMember extends Base { if (data.roles) this.roles._patch(data.roles); } + _clone() { + const clone = super._clone(); + clone.roles = this.roles.clone(); + return clone; + } + get voiceState() { return this._frozenVoiceState || this.guild.voiceStates.get(this.id) || {}; }