You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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但没有引入对应依赖,会导致后续执行播放逻辑时报错,需要补充两个操作:

  1. 安装依赖:执行命令npm install ytdl-core
  2. 在代码顶部引入依赖:
const ytdl = require('ytdl-core');

改完以上内容后重新运行代码即可触发消息回调逻辑。

内容的提问来源于stack exchange,提问作者Gabriel Andrade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 04:48:01