Discord Bot可加载但命令无响应问题排查求助
Discord.js v14 命令无响应问题解决
你的问题主要来自三个核心点,对应修改后即可解决命令无响应的情况:
1. 废弃的message事件
Discord.js v14 已移除message事件,取而代之的是messageCreate事件,原事件不会再触发任何逻辑。
2. 缺少MessageContent网关意图
要读取消息内容,必须添加MessageContent意图,同时还要在Discord开发者后台开启对应的特权网关意图:
- 打开Discord开发者门户,进入你的Bot应用
- 切换到"Bot"标签页,找到"Privileged Gateway Intents"区域
- 开启"Message Content Intent"开关并保存
3. 修改后的完整代码
const { Client, GatewayIntentBits } = require('discord.js'); const client = new Client({ intents: [ GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent, // 新增读取消息内容的必要意图 ], }); const token = "REDACTED"; const prefix = '!'; client.once('ready', () => { console.log('Bot is online!') client.user.setActivity('Among Us'); }); // 替换为v14支持的messageCreate事件 client.on('messageCreate', message => { // 排除Bot自身消息,避免循环触发 if (message.author.bot) return; if (message.content === prefix + 'ping') { message.channel.send('Loading data').then(async(msg) => { msg.delete() message.channel.send(`Latency is ${msg.createdTimestamp - message.createdTimestamp}ms. API Latency is ${Math.round(client.ws.ping)}ms`); }) } }); client.login(token);
额外检查项
- 确保Bot在服务器内拥有读取消息历史和发送消息的权限
- 确认发送命令时使用的前缀与代码中
prefix完全一致(注意空格或符号错误)
内容的提问来源于stack exchange,提问作者user19713442
相关产品推荐
相关产品推荐

