Discord.js修改机器人命令前缀时出现unexpected token语法错误问询
问题原因
- 第一处为语法错误:你修改
prefix常量值时误操作改动了if条件内的不等运算符,把原代码的!==错写为b?==,不符合JavaScript语法规范,因此解析器直接抛出意外字符报错。 - 第二处为逻辑错误:你更换的新前缀
b?是2个字符长度,原代码仅判断消息内容的第一个字符msg.content[0]是否等于前缀,就算修复语法问题也无法正确匹配双字符的命令前缀。
修复方案
直接替换为以下代码即可,修改后同时兼容任意长度的前缀设置:
const prefix = 'b?' bot.on('message', async (msg) => { // 用startsWith直接匹配完整前缀 if(!msg.content.startsWith(prefix)) { return } // 后续原有命令逻辑保持不变
补充说明:如果一定要用下标判断的方式适配双字符前缀,可修改判断逻辑为
if(msg.content[0] !== prefix[0] || msg.content[1] !== prefix[1]),但startsWith方法兼容性更好,后续调整任意长度的前缀都不需要再修改判断逻辑。
内容的提问来源于stack exchange,提问作者Spy-Gaming-TF2
相关产品推荐
相关产品推荐

