GuildMembersChunk packet handler hotfix (#1125)

* GuildMembersChunk packet handler hotfix

* Add limit, resolve properly if a query is used

* Document new GuildMemberChunk param
This commit is contained in:
Programmix
2017-01-24 13:55:36 -08:00
committed by Amish Shah
parent 4b2053133d
commit c1a5bee61f
2 changed files with 6 additions and 4 deletions

View File

@@ -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<GuildMember>} members The members in the chunk
* @param {Guild} guild The guild related to the member chunk
*/
module.exports = GuildMembersChunkHandler;

View File

@@ -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<Guild>}
*/
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)