首页 >web前端 >js教程 >为什么我的 Discord.js GuildMember 事件没有触发,以及如何修复空用户缓存和超时?

为什么我的 Discord.js GuildMember 事件没有触发,以及如何修复空用户缓存和超时?

Linda Hamilton
Linda Hamilton原创
2024-12-28 06:25:10257浏览

Why Aren't My Discord.js GuildMember Events Firing, and How Do I Fix My Empty User Caches and Timeouts?

我的 Discord.js GuildMember 事件都没有发出,我的用户缓存基本为空,并且我的函数超时

许多 Discord.js 用户最近遇到过与公会和用户相关的某些活动和功能已停止工作或延迟的问题。这是因为 Discord 实现了一项名为 特权意图 的新功能,该功能限制机器人的某些功能,除非明确启用它们。

什么是特权意图?

特权意图是 Discord 要求机器人声明他们将使用的敏感数据或功能。这两个特权意图是:

  • GUILD_PRESENCES: 访问公会成员的状态数据
  • GUILD_MEMBERS: 访问公会成员及其成员数据

如何启用特权意图

要启用特权意图,您必须在 Discord 开发者门户中手动检查它们:

  1. 转到 Discord 开发者门户并登录。
  2. 单击在“应用程序”上并选择您的机器人。
  3. 转到“应用程序”上的“机器人”选项卡
  4. 向下滚动到“特权网关意图”部分。
  5. 选中您要使用的特权意图的复选框。

一次您已启用特权意图,您还需要在 Discord.js 机器人中启用它们代码:

const client = new Discord.Client({ ws: { intents: new Discord.Intents(Discord.Intents.ALL) } });

特权意图如何影响您的机器人

如果您不启用特权意图,您可能会遇到以下问题:

  • 公会成员事件(例如,guildMemberAdd) 将不会发出。
  • 成员和用户缓存将为空或包含很少的成员。
  • GuildMemberManager.fetch() 和 UserManager.fetch() 等函数将超时。
  • 状态数据将不可用。

故障排除提示

如果您在启用特权意图后仍然遇到问题,请尝试以下操作:

  • 确保您的机器人已获得 Discord 批准。
  • 检查您的代码使用最新版本的 Discord.js (v12 )。
  • 仔细检查您意图的正确性配置。
  • 重新启动您的机器人以刷新与 Discord 的连接。

资源

  • [Discord.js 官方指南 - 网关意图](https://discord.js.org/#/docs/main/v12/class/Intents)
  • [Discord 开发人员文档 - 网关意图](https://discord.com/developers/ docs/topics/gateway#gateway-intents)
  • [网关更新常见问题解答](https://support.discord.com/hc/en-us/articles/4405026734147-Discord-Gateway-Intent-Framework-Announcement-FAQ)

以上是为什么我的 Discord.js GuildMember 事件没有触发,以及如何修复空用户缓存和超时?的详细内容。更多信息请关注PHP中文网其他相关文章!

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