diff --git a/src/structures/Guild.js b/src/structures/Guild.js index 1e3dd20d0..5a11de42c 100644 --- a/src/structures/Guild.js +++ b/src/structures/Guild.js @@ -499,14 +499,15 @@ 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 + * @param {Object} [options] Options for the fetch operation + * @param {string} [options.query=''] Limit fetch to members with similar usernames + * @param {number} [options.limit=0] Maximum number of members to request * @returns {Promise>} */ - fetchMembers(query = '', limit = 0) { + fetchMembers({ query = '', limit = 0 }) { return new Promise((resolve, reject) => { if (this.memberCount === this.members.size) { - resolve(new Collection()); + resolve((query || limit) ? new Collection() : this.members); return; } this.client.ws.send({ @@ -520,17 +521,19 @@ class Guild { const fetchedMembers = new Collection(); const handler = (members, guild) => { if (guild.id !== this.id) return; - for (const member of members.values()) fetchedMembers.set(member.user.id, member); + for (const member of members.values()) { + if (query || limit) fetchedMembers.set(member.user.id, member); + } if (this.memberCount === this.members.size || ((query || limit) && members.size < 1000)) { this.client.removeListener(Constants.Events.GUILD_MEMBERS_CHUNK, handler); - resolve(fetchedMembers); + resolve((query || limit) ? fetchedMembers : this.members); } }; this.client.on(Constants.Events.GUILD_MEMBERS_CHUNK, handler); this.client.setTimeout(() => { this.client.removeListener(Constants.Events.GUILD_MEMBERS_CHUNK, handler); reject(new Error('Members didn\'t arrive in time.')); - }, 120 * 1000); + }, 120e3); }); }