fix: members intent fetching (#229)

* fixes fetchMembers #223

* Update guild.ts

Co-authored-by: Ayyan <ayyantee@gmail.com>
This commit is contained in:
Skillz4Killz
2020-12-10 10:27:17 -05:00
committed by GitHub
parent d1b07f5f2c
commit 6437274958
2 changed files with 19 additions and 2 deletions
+17 -1
View File
@@ -417,11 +417,27 @@ export async function pruneMembers(guildID: string, options: PruneOptions) {
);
}
/**
* ⚠️ BEGINNER DEVS!! YOU SHOULD ALMOST NEVER NEED THIS AND YOU CAN GET FROM cache.members.get()
*
* ADVANCED:
* Highly recommended to use this function to fetch members instead of getMember from REST.
* REST: 50/s global(across all shards) rate limit with ALL requests this included
* GW(this function): 120/m(PER shard) rate limit. Meaning if you have 8 shards your limit is now 960/m.
*/
export function fetchMembers(guild: Guild, options?: FetchMembersOptions) {
if (!(identifyPayload.intents & Intents.GUILD_MEMBERS)) {
// You can request 1 member without the intent
if (
(!options?.limit || options.limit > 1) &&
!(identifyPayload.intents & Intents.GUILD_MEMBERS)
) {
throw new Error(Errors.MISSING_INTENT_GUILD_MEMBERS);
}
if (options?.userIDs?.length) {
options.limit = options.userIDs.length;
}
return new Promise((resolve) => {
requestAllMembers(guild, resolve, options);
}) as Promise<Collection<string, Member>>;