discord.js开发Discord机器人时client.on("message")不执行如何解决
问题原因及解决方案
1. 事件名称已废弃
discord.js v13及以上版本中,message 事件已被移除,替换为 messageCreate 事件,直接监听message不会触发回调。
修改代码中对应的事件监听逻辑:
// 旧代码 client.on("message", async message => { // 替换为 client.on("messageCreate", async message => {
2. 缺少必要的网关意图
你当前初始化Client时只开启了GUILDS意图,要接收服务器消息、处理语音功能,还需要补充额外的意图配置:
修改Client初始化代码:
const client = new Client({ intents: [ Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, // 接收服务器消息 Intents.FLAGS.GUILD_VOICE_STATES, // 处理语音频道状态 Intents.FLAGS.MESSAGE_CONTENT // 获取消息内容(特权意图) ] });
3. 开启后台特权意图开关
MESSAGE_CONTENT属于Discord的特权网关意图,需要手动在开发者后台开启:
- 打开你创建Bot的Discord开发者后台,进入对应应用的「Bot」设置页
- 下拉找到「Privileged Gateway Intents」板块,打开
Message Content Intent的开关并保存
4. 补充缺失的依赖引入
你代码中使用了ytdl但没有引入对应依赖,会导致后续执行播放逻辑时报错,需要补充两个操作:
- 安装依赖:执行命令
npm install ytdl-core - 在代码顶部引入依赖:
const ytdl = require('ytdl-core');
改完以上内容后重新运行代码即可触发消息回调逻辑。
内容的提问来源于stack exchange,提问作者Gabriel Andrade
相关产品推荐
相关产品推荐

