为我的discord.js Bot创建一个排名列表

时间:2017-08-01 10:17:47

标签: javascript sqlite discord.js

我有一个名为“得分”的表,想要过滤UserId并按其点排序。我想为我的Discord Bot创建一个ranklist命令,但我不知道该怎么做。

我虽然是这样的,但它不起作用:

const sql = require("sqlite");
sql.open("score.sqlite");
exports.run = (client, message, args) => {
    var index = 1;
    var msg = "-- Top 5 list --\n";
    sql.get("SELECT * FROM scores ORDER BY points DESC LIMIT 5").then(rows => {
        for (index = 1; index < 6; index++) {
            if (rows[index] !== null) {
                msg += index + ". " + rows[index].userId + " - " + rows[index].points + "\n";
            }
        }
        console.log(msg);
    });
};

你能帮帮我吗?

感谢。

1 个答案:

答案 0 :(得分:1)

https://github.com/mapbox/node-sqlite3/wiki/API#databasegetsql-param--callback

  

回调的签名是函数(错误,行){}。如果结果   set为空,第二个参数未定义,否则为   包含 第一行 的值的对象。

sql.get只返回单个行对象(不是 对象的数组)。您需要使用sql.each或sql.all。

sql.all https://github.com/mapbox/node-sqlite3/wiki/API#databaseallsql-param--callback

sql.each https://github.com/mapbox/node-sqlite3/wiki/API#databaseeachsql-param--callback-complete

编辑:看起来你正试图制作一个不和谐点系统机器人。这里有一个非常好的指南。 https://anidiotsguide.gitbooks.io/discord-js-bot-guide/coding-guides/storing-data-in-an-sqlite-file.html