Discord.js开发的机器人在线但不响应指令的故障排查求助
核心错误点
- 事件命名错误
discord.js v13及后续版本已废弃message事件,需改用messageCreate事件监听用户发送的消息,你当前监听的旧事件不会被触发,因此无法响应指令。 - Intent(网关意图)配置错误
Intent是Discord限制机器人可获取数据范围的权限配置,你填写的数值100未覆盖消息读取所需的权限:- 响应服务器前缀指令需要开启三个Intent:
Guilds、GuildMessages、MessageContent,对应数值总和为33281 - 其中
MessageContent属于特权权限,除代码配置外,还需要在Discord开发者平台的机器人设置页面,手动开启「Privileged Gateway Intents」分类下的Message Content Intent开关。
- 响应服务器前缀指令需要开启三个Intent:
修复后代码
const Discord = require('discord.js'); const client = new Discord.Client({ // 既可以直接传入计算后的数值33281,也可以用内置枚举更清晰 intents: [ Discord.GatewayIntentBits.Guilds, Discord.GatewayIntentBits.GuildMessages, Discord.GatewayIntentBits.MessageContent ] }); const prefix = '-'; client.once('ready', () => { console.log('Ivancódigo funcionando!'); }); // 替换为正确的messageCreate事件 client.on('messageCreate', message => { if(!message.content.startsWith(prefix) || message.author.bot) return; const args = message.content.slice(prefix.length).split(/ +/); const command = args.shift().toLowerCase(); if(command === 'ping'){ message.channel.send('pong!'); } }) client.login('你的机器人TOKEN');
内容的提问来源于stack exchange,提问作者Ivanchin Ysevit
相关产品推荐
相关产品推荐

