diff --git a/src/structures/Guild.js b/src/structures/Guild.js index d8dae531f..7c7fcd4a9 100644 --- a/src/structures/Guild.js +++ b/src/structures/Guild.js @@ -679,6 +679,7 @@ class Guild { } _addMember(guildUser, emitEvent = true) { + const existing = this.members.has(guildUser.user.id); if (!(guildUser.user instanceof User)) guildUser.user = this.client.dataManager.newUser(guildUser.user); guildUser.joined_at = guildUser.joined_at || 0; @@ -702,7 +703,7 @@ class Guild { * @param {Guild} guild The guild that the user has joined * @param {GuildMember} member The member that has joined */ - if (this.client.ws.status === Constants.Status.READY && emitEvent) { + if (this.client.ws.status === Constants.Status.READY && emitEvent && !existing) { this.client.emit(Constants.Events.GUILD_MEMBER_ADD, this, member); } diff --git a/src/structures/GuildChannel.js b/src/structures/GuildChannel.js index de1cd2726..7d220cf6c 100644 --- a/src/structures/GuildChannel.js +++ b/src/structures/GuildChannel.js @@ -144,8 +144,8 @@ class GuildChannel extends Channel { const prevOverwrite = this.permissionOverwrites.get(userOrRole.id); if (prevOverwrite) { - payload.allow = prevOverwrite.allow; - payload.deny = prevOverwrite.deny; + payload.allow = prevOverwrite.allowData; + payload.deny = prevOverwrite.denyData; } for (const perm in options) { diff --git a/test/random.js b/test/random.js index 9fceaf172..32adab2d8 100644 --- a/test/random.js +++ b/test/random.js @@ -20,6 +20,8 @@ client.on('userUpdate', (o, n) => { console.log(o.username, n.username); }); +client.on('guildMemberAdd', (g, m) => console.log(`${m.user.username} joined ${g.name}`)); + client.on('channelCreate', channel => { console.log(`made ${channel.name}`); });