client.on("message", message => {
const args = message.content.slice(config.prefix.length).trim().split(' ');
const args2 = message.content.slice('test', ',', args).trim(args).split(' ', args);
const command = args.shift().toLowerCase();
if (command === "tbal") {
if (message.author.bot) return;
const data = sql.prepare(`SELECT bal FROM ${args}`).get();
message.channel.send(`You have ${data.bal}`)
}
if (command == "tgive") {
//Get their current XP
let userscore = sql.prepare(`SELECT bal FROM ${args}`).get()
let pointsToAdd = parseInt(args2[1], [10]);
if(!pointsToAdd) return message.reply("How much? You didn't tell me that!");
//XP level update
const valueadd = sql.prepare(`INSERT OR REPLACE INTO ${args} (bal) VALUES (userscore + pointsToAdd);`)
client.setScore.run(userscore)
return message.channel.send(`${args} has received ${pointsToAdd}. New balance: ${data.bal}`);
}
});这是代码,我得到的错误是这样的:let userscore = sql.prepare(`SELECT bal FROM ${args}`).get()
SqliteError: near "5": syntax error
最近的"5“是args2,我对它执行了命令eco tgive args1 5,args1是SQLite表的名称。
发布于 2020-01-16 00:18:53
您在这里传递给'slice‘函数的参数:
const args2 = message.content.slice('test', ',', args).trim(args).split(' ', args);没有任何意义。
Slice接受两个参数,一个是beginIndex,一个是endIndex,这两个参数都是数字。这可能就是问题的根源。
中尝试使用args参数时
let userscore = sql.prepare(`SELECT bal FROM ${args}`).get()它可能处于某种意想不到的状态。
下面是关于slice方法的文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice
发布于 2020-01-16 01:25:40
SELECT bal FROM ${args}
您只需要使用args数组中需要的元素,而不是每个参数。如果args1是您提供的示例命令中的表名称,请将其用作查询,注意args[2]将返回数组中的第三个元素:
`SELECT bal FROM ${args[2]}`当将数组转换为字符串时,它的元素与,连接在一起,并导致错误的语法,从而导致错误。
https://stackoverflow.com/questions/59754318
复制相似问题