首页 >web前端 >js教程 >为什么我的 Discord 机器人事件失败并且我的缓存为空?

为什么我的 Discord 机器人事件失败并且我的缓存为空?

Linda Hamilton
Linda Hamilton原创
2024-12-24 09:49:12442浏览

Why Are My Discord Bot Events Failing and My Cache Empty?

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 开发者门户手动启用特权意图:

  1. 导航至 Discord 开发者门户。
  2. 选择您的应用程序。
  3. 转到侧边栏中的“机器人”选项卡。
  4. 向下滚动到“特权网关意图”部分。
  5. 选中 GUILD_MEMBERS 和/或 GUILD_PRESENCES 复选框。
  6. 如果您bot 拥有超过 75 个公会,Discord 需要先对其进行验证。按照说明请求白名单访问。

启用后,您将需要在 Discord.js 模块配置中指定所需的意图。如果您不需要所有意图,可以有选择地启用特定意图。

资源

  • Discord.js 官方指南 - 网关意图
  • Discord 开发者文档 - 网关意图
  • 网关更新常见问题解答
  • Discord API Github - 问题 1363 - 特权意图
  • Discord 博客 - Discord 上机器人的未来

以上是为什么我的 Discord 机器人事件失败并且我的缓存为空?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn