如何获取大型公会 discord.js 的所有成员

Posted

技术标签:

【中文标题】如何获取大型公会 discord.js 的所有成员【英文标题】:How to fetch all members of a large guild discord.js 【发布时间】:2020-08-15 22:51:27 【问题描述】:

我正在尝试获取一个大型公会的所有成员的 ID。这个公会有大约2000人。我正在使用这个:

const list = client.guilds.get("id"); 
list.fetchMembers().then(r => 

    r.members.array().forEach(r => 
    let userid = r.id        
    msg.channel.send(userid)
    )
);

它适用于我的 3 人测试公会,但是一旦我在大型公会尝试它,我就会收到此错误

(node:8632) UnhandledPromiseRejectionWarning: Error: Members didn't arrive in time.
at Timeout._onTimeout (c:\Users\Han75\Documents\bot\node_modules\discord.js\src\client\Client.js:436:7)
at listOnTimeout (internal/timers.js:531:17)
at processTimers (internal/timers.js:475:7)

我知道是因为超时。我该如何阻止这种情况?

【问题讨论】:

【参考方案1】:

假设您使用的是最新的稳定版本 (v12),您可以使用不带参数的 GuildMemberManager#fetch 来获取公会的所有成员。

【讨论】:

以上是关于如何获取大型公会 discord.js 的所有成员的主要内容,如果未能解决你的问题,请参考以下文章

如何在 discord.js v12 中列出所有公会成员

Discord.js 让所有成员陷入公会问题

Discord.js - 发送消息的计数器,DM给公会的所有成员

Discord.js 如何感知公会成员何时更改活动

无法通过 Discordjs v13 获取所有公会成员

discord.js - 从所有成员中删除特定角色