discord.js v13中messageCreate与interactionCreate事件无法触发如何解决
问题原因
Discord.js v13 及更高版本对网关权限做了更严格的限制,仅在代码中声明意图无法完全获取消息事件权限,还需要在机器人的开发者配置页开启对应特权权限。
解决步骤
- 修正代码的网关意图配置
你当前代码仅声明了GUILDS这一个意图,要接收服务器内的消息必须补充GUILD_MESSAGES意图,修正后的客户端初始化代码如下:
const client = new Client({ intents: [ Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES ] });
如果需要接收用户给机器人发送的私聊消息,可额外添加Intents.FLAGS.DIRECT_MESSAGES。
- 开启开发者后台的特权网关意图
这是最容易被遗漏的配置项:
- 打开你创建机器人的Discord开发者应用管理页,切换到「Bot」标签
- 下拉到Privileged Gateway Intents(特权网关意图)区域
- 打开Message Content Intent(消息内容意图)的开关并保存设置
个人测试用途的机器人直接开启即可,如果你的机器人需要在100个以上的服务器运行,需要向Discord申请该权限的白名单。
- 校验频道权限
确认对应服务器的频道没有单独屏蔽机器人的「查看频道」「读取消息历史记录」权限,即使机器人拥有管理员身份,频道单独设置的权限覆盖也会导致机器人无法获取消息。
完成以上配置后重启机器人,再次发送消息即可正常触发messageCreate事件。
内容的提问来源于stack exchange,提问作者Solean
相关产品推荐
相关产品推荐

