discord.js无前缀消息回复功能部署后机器人无法启动问题求助
Discord机器人无前缀触发功能修复方案
- 语法结构缺失:你写的
client.on事件监听没有闭合的花括号和右括号,属于基础语法错误,会直接导致代码解析失败、机器人无法启动 - 发送内容未定义:
message.channel.send()的参数是普通字符串,没有用引号包裹,JS会把它识别为未定义的变量,抛出引用错误 - 事件名已废弃:discord.js v13及以上版本已经完全弃用
message事件,替换为messageCreate事件,继续使用旧事件名无法监听到消息 - 缺少机器人自身消息过滤:没有过滤机器人自己发送的消息,后续功能正常后会出现机器人自己触发自己、无限循环回复的问题
修复后的完整代码示例:
// 替换旧的message事件为新的messageCreate事件 client.on("messageCreate", async message => { // 过滤机器人自身消息,避免循环触发 if (message.author.bot) return; // 完全匹配hi触发回复,需要前缀匹配的话替换为startsWith即可 if (message.content === "hi") { // 字符串内容必须用引号包裹 await message.channel.send("hello"); } // 你原有需求的触发逻辑 if (message.content === "ce faci") { await message.channel.send("uite ma scarpinam la coaie"); } });
如果你使用的是discord.js v14及以上版本,还需要确认你开启了
MessageContent特权网关权限,需要在Discord开发者后台的机器人设置页开启对应开关,同时在客户端初始化时声明对应意图:const { Client, GatewayIntentBits } = require('discord.js'); const client = new Client({ intents: [ GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent ] });
内容的提问来源于stack exchange,提问作者CM21 MC
相关产品推荐
相关产品推荐

