From c1a5bee61f1df2192c1bc9ac2fe59c11d3c3156a Mon Sep 17 00:00:00 2001 From: Programmix Date: Tue, 24 Jan 2017 13:55:36 -0800 Subject: [PATCH] GuildMembersChunk packet handler hotfix (#1125) * GuildMembersChunk packet handler hotfix * Add limit, resolve properly if a query is used * Document new GuildMemberChunk param --- src/client/websocket/packets/handlers/GuildMembersChunk.js | 3 ++- src/structures/Guild.js | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/client/websocket/packets/handlers/GuildMembersChunk.js b/src/client/websocket/packets/handlers/GuildMembersChunk.js index e67c1d425..bee51571a 100644 --- a/src/client/websocket/packets/handlers/GuildMembersChunk.js +++ b/src/client/websocket/packets/handlers/GuildMembersChunk.js @@ -17,7 +17,7 @@ class GuildMembersChunkHandler extends AbstractHandler { const members = data.members.map(member => guild._addMember(member, false)); - client.emit(Constants.Events.GUILD_MEMBERS_CHUNK, members); + client.emit(Constants.Events.GUILD_MEMBERS_CHUNK, members, guild); client.ws.lastHeartbeatAck = true; } @@ -27,6 +27,7 @@ class GuildMembersChunkHandler extends AbstractHandler { * Emitted whenever a chunk of guild members is received (all members come from the same guild) * @event Client#guildMembersChunk * @param {Collection} members The members in the chunk + * @param {Guild} guild The guild related to the member chunk */ module.exports = GuildMembersChunkHandler; diff --git a/src/structures/Guild.js b/src/structures/Guild.js index 457593cc9..643a30ac9 100644 --- a/src/structures/Guild.js +++ b/src/structures/Guild.js @@ -347,9 +347,10 @@ class Guild { * Fetches all the members in the guild, even if they are offline. If the guild has less than 250 members, * this should not be necessary. * @param {string} [query=''] Limit fetch to members with similar usernames + * @param {number} [limit=0] Maximum number of members to request * @returns {Promise} */ - fetchMembers(query = '') { + fetchMembers(query = '', limit = 0) { return new Promise((resolve, reject) => { if (this.memberCount === this.members.size) { // uncomment in v12 @@ -362,12 +363,12 @@ class Guild { d: { guild_id: this.id, query, - limit: 0, + limit, }, }); const handler = (members, guild) => { if (guild.id !== this.id) return; - if (this.memberCount === this.members.size) { + if (this.memberCount === this.members.size || members.length < 1000) { this.client.removeListener(Constants.Events.GUILD_MEMBERS_CHUNK, handler); // uncomment in v12 // resolve(this.members)