【发布时间】:2018-07-21 13:05:25
【问题描述】:
我是 sqlite 的新手,正在创建一个 Discord 琐事机器人,它有一个排行榜,可以跟踪每个用户的正确答案数量。我不确定如何在新人正确回答问题时添加新行,或者在另一个已经得到正确答案的人正确回答问题时更新行。我在下面的代码仅更新答案表中第一个 userId 的排行榜表。但答案表中可能有多个用户可以正确回答问题。
我正在使用库 discord.js 和 sqlite。
表格说明如下:
在名为 answers 的表中跟踪用户的答案。表 answers 具有属性 userId 和 answer。 userId 是给出答案的用户的 ID,而答案是用户的选择。
还有一个名为排行榜的表格,用于跟踪每个用户的正确答案数量。表格排行榜的属性是 userId 和 number。 userId是用户的id,number是正确答案的数量。
cAnswer = 'c';
sql.get(`SELECT * FROM answers WHERE answer ="${cAnswer}"`).then(aRow => {
if (aRow){
sql.get(`SELECT * FROM leaderboard WHERE userId ="${aRow.userId}"`).then(lRow => {
if (!lRow){
sql.run("INSERT INTO leaderboard (userId, number) VALUES (?, ?)", [aRow.userId, 1]);
}
else{
num = lRow.number + 1;
sql.run(`UPDATE leaderboard SET number = ${num} WHERE userId = ${aRow.userId}`);
}
const user = client.users.get(aRow.userId);
user.send("You answered the jeep trivia question correctly!\nThe correct answer was *" + cAnswer + "*.");
}).catch(() => {
console.error;
sql.run("CREATE TABLE IF NOT EXISTS leaderboard (userId TEXT, number INT)").then(() => {
sql.run("INSERT INTO leaderboard (userId, number) VALUES (?, ?)", [aRow.userId, 1]);
});
const user = client.users.get(aRow.userId);
user.send("You answered the jeep trivia question correctly!\nThe correct answer was *" + cAnswer + "*.");
});
}
}).catch(() => {
console.error;
});
【问题讨论】:
-
您的
console.error语句有效吗?我认为你应该在每个.catch()声明中做这样的事情:.catch(err => { console.error(err); });
标签: node.js sqlite discord.js