Discord 网关意图:解决事件发送失败和缓存问题
最近,一些 Discord 用户遇到了事件发送和缓存方面的困难管理。具体来说,guildMemberAdd、guildMemberRemove 和 guildMemberUpdate 等事件已停止触发,导致功能无响应。此外,据观察,用户缓存是空的或极其有限。此外,旨在获取公会成员的函数一直遇到超时。
这些问题可以归因于 Discord 最近执行的“特权意图”。意图是允许您在 Discord 上订阅特定数据流的机制。其中两个意图,GUILD_MEMBERS 和 GUILD_PRESENCES,由于其敏感性而被视为特权,并且自 2020 年 10 月 27 日起默认被禁用。
特权意图的影响
禁用特权意图可能会导致各种问题:
- 启动时成员和用户缓存为空或显着耗尽
- Guild.memberCount 返回过时的值
- 无法触发与状态相关的事件
- 状态数据返回 null 或未定义
- 公会成员出现离线
- 如果启用 fetchAllMembers,登录期间会发生超时
- GuildMemberManager.fetch() 和 UserManager.fetch() 方法超时
- 涉及公会成员的事件失败,例如guildMemberAdd、guildMemberRemove、guildMemberUpdate、guildMemberSpeaking 和guildMembersChunk
解决方案
要解决此问题,您必须通过 Discord 开发者门户手动启用特权意图:
- 导航至 Discord 开发者门户。
- 选择您的应用程序。
- 转到侧边栏中的“机器人”选项卡。
- 向下滚动到“特权网关意图”部分。
- 选中 GUILD_MEMBERS 和/或 GUILD_PRESENCES 复选框。
- 如果您bot 拥有超过 75 个公会,Discord 需要先对其进行验证。按照说明请求白名单访问。
启用后,您将需要在 Discord.js 模块配置中指定所需的意图。如果您不需要所有意图,可以有选择地启用特定意图。
资源
- Discord.js 官方指南 - 网关意图
- Discord 开发者文档 - 网关意图
- 网关更新常见问题解答
- Discord API Github - 问题 1363 - 特权意图
- Discord 博客 - Discord 上机器人的未来
以上是为什么我的 Discord 机器人事件失败并且我的缓存为空?的详细内容。更多信息请关注PHP中文网其他相关文章!