Discord审核机器人出现SyntaxError: Unexpected token 'const'错误的技术求助
解决Discord机器人中的SyntaxError: Unexpected token 'const'问题
看起来这个语法错误是代码解析阶段的问题,不是运行时错误,意味着你的代码结构存在语法不规范或者未闭合的元素。我来帮你一步步排查和解决:
可能的原因及解决方案
1. 重复监听message事件引发的潜在问题
你现在有两个独立的client.on('message')事件处理函数,虽然这本身不会直接触发语法错误,但容易引发逻辑混乱,也可能在书写时不小心引入语法疏漏。建议把所有消息处理逻辑合并到一个事件回调里:
client.on('message', message => { console.log(`${message.author.tag} at ${message.guild.name} said: ${message.content}\n`); // 跳过机器人自身发送的消息 if (message.author.bot) return; // 脏话过滤逻辑 if (message.content === "fuck") { message.reply("Don't say bad words :("); } // 命令处理逻辑 if (!message.content.startsWith(prefix)) return; const commandBody = message.content.slice(prefix.length); const args = commandBody.split(' '); const command = args.shift().toLowerCase(); // 后续命令逻辑... });
2. 缺少分号导致自动分号插入(ASI)失败
你的代码中有几个变量声明没有加分号,虽然JavaScript通常会自动补充分号,但在某些边界场景下会导致解析错误。给所有变量声明加上分号:
const Discord = require("discord.js"); const mySecret = process.env['BOT_TOKEN']; // 补充分号 const client = new Discord.Client(); const prefix = "st!"; const verNumber = "1.0.3bc"; // 补充分号 const dev = "567014451337887744"; // 补充分号
3. 未闭合的函数/括号
检查你的第二个client.on("message")回调函数是否完整闭合。你提供的代码末尾是...,要确保实际代码中有});来结束这个事件监听:
client.on("message", function (message) { if (message.author.bot) return; if (!message.content.startsWith(prefix)) return; const commandBody = message.content.slice(prefix.length); const args = commandBody.split(' '); const command = args.shift().toLowerCase(); // ... 你的其他代码 ... }); // 确保这里有闭合的括号和分号
4. Node.js版本过低
const是ES6的语法特性,需要Node.js v6或更高版本支持。如果你使用的是老旧版本的Node.js,升级到v14及以上(discord.js v12+推荐的版本)可以解决这类语法兼容问题。
验证修复
按照上面的步骤调整代码后,重新运行机器人,应该就能解决这个Unexpected token 'const'的错误了。如果还有问题,可以检查代码中是否有其他未闭合的代码块(比如if语句、函数)或者拼写错误。
内容的提问来源于stack exchange,提问作者stationaryStation
相关产品推荐
相关产品推荐

