discord.js v13.1.0机器人无报错但不回复用户消息如何解决
问题根因
discord.js v13 开始对网关意图做了严格限制,你当前仅声明了GUILDS意图,缺少接收消息、读取消息内容所需的必要权限与配置,所以messageCreate事件不会被触发,自然也不会有回复。
修复步骤
1. 调整代码中的意图配置
修改index.js中客户端初始化部分的代码,新增消息相关的意图与partial配置,用来接收服务器消息和私信消息:
const { Client, Intents } = require('discord.js'); const { token } = require('./config.json'); const client = new Client({ intents: [ Intents.FLAGS.GUILDS, // 接收服务器内消息 Intents.FLAGS.GUILD_MESSAGES, // 接收私信消息,如果不需要可以删掉 Intents.FLAGS.DIRECT_MESSAGES ], // 适配私信频道的partial类型,不需要接收私信可以删掉这行 partials: ['CHANNEL'] }); client.once('ready', () => { console.log('Ready!'); }); client.on ('messageCreate', (message) => { // 过滤机器人自己发的消息,避免触发循环 if (message.author.bot) return; if (message.content === 'hello') { message.reply('Hello').catch(console.error); }; }); client.login(token);
这里新增了机器人消息过滤逻辑,避免机器人自己发的消息触发规则陷入循环,同时给回复加了错误捕获,有异常会在控制台输出方便排查。
2. 开启Discord开发者后台的特权权限
- 打开Discord开发者门户,找到你的机器人应用
- 进入左侧「Bot」选项卡,向下滚动到
Privileged Gateway Intents区域 - 打开
Message Content Intent的开关,保存配置
没有这个权限的话,你无法获取用户发送的消息内容,message.content会始终为空,自然匹配不到hello的触发条件。
3. 确认服务器权限
检查机器人在对应服务器的角色权限,确保拥有以下权限:
- 查看频道/阅读消息
- 发送消息
- 阅读消息历史
如果是特定频道单独设置了权限,也要单独给机器人开启上述权限。
完成以上三步重启机器人即可正常回复消息。
内容的提问来源于stack exchange,提问作者MunJitso
相关产品推荐
相关产品推荐

