node.js - 通过 fetch 获取公会成员需要很长时间并且抛出异常
问题描述
guild = client.guilds.cache.get("guildid");
guild.members.fetch().then(fetchedMembers=>{console.log(fetchedMembers.length)})
使用 discord.js v12,我尝试使用 fetch 函数获取公会的所有成员,然后从成员列表中获取随机用户名。第一行,从特定 id 获取公会工作得很好,并且几乎立即执行。但是,即使等待了几分钟,我似乎也无法从公会中获取成员。相反,这个错误会在一段时间后抛出 - :
(node:40774) UnhandledPromiseRejectionWarning: Error [GUILD_MEMBERS_TIMEOUT]: Members didn't arrive in time.
at timeout.client.setTimeout (/home/k/n/node_modules/discord.js/src/managers/GuildMemberManager.js:317:16)
at Timeout.setTimeout [as _onTimeout] (/home/k/n/node_modules/discord.js/src/client/BaseClient.js:83:7)
at ontimeout (timers.js:436:11)
at tryOnTimeout (timers.js:300:5)
at listOnTimeout (timers.js:263:5)
at Timer.processTimers (timers.js:223:10)
有什么问题,我该如何解决???
解决方案
我做了一些研究,似乎有一种方法可以通过正确使用意图来解决这个问题。
您应该像这样创建您的客户端:
const { Client, Intents } = require('discord.js');
const client = new Client({ ws: { intents: ['GUILD_MEMBERS', Intents.NON_PRIVILEGED] } });
它将解决 GUILD_MEMBERS_TIMEOUT 的问题。
确保您已在 Developer Portal 上启用“服务器成员意图”。
推荐阅读
- python - 如何从复杂的 str 中获取 df?
- java - 在 Android Studio Activity 中显示条款和条件
- solidity - 在solidity中使用Remix遇到错误:错误:无效的BigNumber字符串(argument =“value”,value =“”,code = INVALID_ARGUMENT,version = bignumber / 5.1.1)
- node.js - 断线后服务器端口忙
- html - 带有列和标题的可滚动表格
- swiftui - SwiftUI:视图之间的交互
- r - 计算滚动总和产品
- jwt - 如何使用 JWT.io 生成 JWT
- scipy - 小数对 scipy.integrate.quad 的影响
- python - 为 Keras 模型选择正确的损失函数