Discord.js更新后消息发送时message与interactionCreate事件不触发如何解决
Discord.js v13+ 消息/交互事件未触发排查方案
1. 基础版本与网关配置校验
- 确认当前使用的Discord.js版本:v13及以上版本已废弃
message事件,接收普通消息必须监听messageCreate事件,原message事件不会再被触发。 - 校验Client实例化时的网关意图(Intents)配置,v13之后该配置为强制必填项,缺失对应意图将直接导致对应事件无法触发:
- 接收普通消息需要开启
Guilds、GuildMessages、MessageContent三个意图 - 接收交互类事件(斜杠指令、按钮、选择菜单等)至少需要开启
Guilds意图
配置示例如下:
const { Client, GatewayIntentBits } = require('discord.js'); const client = new Client({ intents: [ GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent ] }); - 接收普通消息需要开启
- 检查Discord开发者后台的机器人设置页,在「Privileged Gateway Intents」板块是否开启了
Message Content Intent特权权限,该权限为接收用户消息内容的必要配置,未开启即使代码配置了对应意图也无法接收消息。
2. 事件监听代码校验
- 普通消息监听必须使用
client.on('messageCreate', msg => {})写法。 interactionCreate事件仅会在用户触发交互行为时触发,普通消息发送不会触发该事件。如果是测试斜杠指令,需要先确认指令已经正确注册到对应服务器或全局,全局指令注册后最长需要1小时同步生效,测试阶段建议优先注册为服务器级指令,注册完成后即可立即使用。- 确认所有事件监听代码的执行时机在
client.login(TOKEN)之前,登录完成后再绑定的事件不会生效。
3. 权限与准入校验
- 确认机器人已经被邀请至目标服务器,且邀请时勾选了「查看频道/读取消息」「发送消息」「使用应用指令」必要权限。
- 确认目标频道的权限设置没有禁止机器人查看频道、发送消息、使用斜杠指令。
内容的提问来源于stack exchange,提问作者TheLazySquid
相关产品推荐
相关产品推荐

