From 7ff2568cfce50d7494e557d9cbdbbf7d0e6159db Mon Sep 17 00:00:00 2001 From: Amish Shah Date: Sat, 3 Sep 2016 21:21:10 +0100 Subject: [PATCH] Fix collectors and make guild sync add previously unknown members --- src/client/actions/GuildMemberRemove.js | 4 +++- src/client/actions/GuildSync.js | 2 ++ src/client/websocket/packets/WebSocketPacketManager.js | 2 ++ src/structures/interface/TextBasedChannel.js | 4 ---- test/random.js | 2 +- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/client/actions/GuildMemberRemove.js b/src/client/actions/GuildMemberRemove.js index ab5290dc2..b7a01d3a4 100644 --- a/src/client/actions/GuildMemberRemove.js +++ b/src/client/actions/GuildMemberRemove.js @@ -17,7 +17,9 @@ class GuildMemberRemoveAction extends Action { guild.memberCount--; guild._removeMember(member); this.deleted[guild.id + data.user.id] = member; - client.emit(Constants.Events.GUILD_MEMBER_REMOVE, guild, member); + if (client.status === Constants.Status.READY) { + client.emit(Constants.Events.GUILD_MEMBER_REMOVE, guild, member); + } this.scheduleForDeletion(guild.id, data.user.id); } diff --git a/src/client/actions/GuildSync.js b/src/client/actions/GuildSync.js index a232df008..7d01000db 100644 --- a/src/client/actions/GuildSync.js +++ b/src/client/actions/GuildSync.js @@ -20,6 +20,8 @@ class GuildSync extends Action { const member = guild.members.get(syncMember.user.id); if (member) { guild._updateMember(member, syncMember); + } else { + guild._addMember(syncMember); } } } diff --git a/src/client/websocket/packets/WebSocketPacketManager.js b/src/client/websocket/packets/WebSocketPacketManager.js index 284024a77..2aeb1d531 100644 --- a/src/client/websocket/packets/WebSocketPacketManager.js +++ b/src/client/websocket/packets/WebSocketPacketManager.js @@ -5,6 +5,8 @@ const BeforeReadyWhitelist = [ Constants.WSEvents.GUILD_CREATE, Constants.WSEvents.GUILD_DELETE, Constants.WSEvents.GUILD_MEMBERS_CHUNK, + Constants.WSEvents.GUILD_MEMBER_ADD, + Constants.WSEvents.GUILD_MEMBER_REMOVE, ]; class WebSocketPacketManager { diff --git a/src/structures/interface/TextBasedChannel.js b/src/structures/interface/TextBasedChannel.js index 566c3d3df..e5d719a22 100644 --- a/src/structures/interface/TextBasedChannel.js +++ b/src/structures/interface/TextBasedChannel.js @@ -21,7 +21,6 @@ const EventEmitter = require('events').EventEmitter; * ```js * { * time: null, // time in milliseconds. If specified, the collector ends after this amount of time. - * allowSelf: false, // whether or not the filter should take messages from the logged in client. * max: null, // the maximum amount of messages to handle before ending. * } * ``` @@ -77,9 +76,6 @@ class MessageCollector extends EventEmitter { if (this.channel ? this.channel.id !== message.channel.id : false) { return false; } - if (message.author.id === this.channel.client.user.id && !this.options.allowSelf) { - return false; - } if (this.filter(message, this)) { this.collected.set(message.id, message); /** diff --git a/test/random.js b/test/random.js index 9364431db..8d58d3086 100644 --- a/test/random.js +++ b/test/random.js @@ -4,7 +4,7 @@ const Discord = require('../'); const request = require('superagent'); const fs = require('fs'); -const client = new Discord.Client({ fetch_all_members: true }); +const client = new Discord.Client({ fetch_all_members: false }); const { email, password, token } = require('./auth.json');