Discord机器人无法响应基础命令,请求技术排查帮助
Discord机器人基础命令无响应问题修复
问题代码中的错误点:
- 事件名称错误:discord.js v14版本已弃用
message事件,改用messageCreate,且你的代码里'message '多了一个空格,导致事件无法触发 - 变量未定义:你定义了
prefix = "t!",但代码里却使用settings.prefix,settings对象从未声明 - 逻辑反转:
if (message.content.startsWith(settings.prefix)) return;这行代码会让所有带前缀的消息直接返回,后续的ping命令永远不会执行,应该改为判断不以前缀开头时返回 - 机器人用户判断错误:
message.author.client不是判断用户是否为机器人的正确属性,应该用message.author.bot
修复后的完整代码:
const { Client, GatewayIntentBits } = require("discord.js"); const client = new Client({ intents: [ GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent, GatewayIntentBits.GuildMembers, GatewayIntentBits.DirectMessageTyping, ], }); const prefix = "t!"; client.on('ready', () => { console.log(`${client.user.tag} 已上线 :D`); }); client.on('messageCreate', message => { // 忽略机器人发送的消息 if (message.author.bot) return; // 如果消息不以设定的前缀开头,直接返回 if (!message.content.startsWith(prefix)) return; // 处理ping命令 if (message.content.startsWith(prefix + "ping")) { message.reply("Pong!"); } }); // 替换成你的机器人token client.login("你的机器人Token");
额外注意事项:
- 确保你在Discord开发者门户中给机器人开启了
Message Content Intent权限,否则无法读取消息内容 - 确认机器人token正确,且机器人已邀请到你的服务器并拥有发送消息的权限
内容的提问来源于stack exchange,提问作者Tin
相关产品推荐
相关产品推荐

