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/test/random.js b/test/random.js index 9ad71b3a4..27db94d86 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}`); });