为我的 discord.js 机器人创建排名列表

Create a ranklist for my discord.js Bot

我有一个名为 "scores" 的 table,我想过滤 UserId 并按他们的分数排序。我想为我的 Discord Bot 创建一个排名列表命令,但我不知道该怎么做。

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

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);
    });
};

你们能帮帮我吗?

谢谢。

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

The signature of the callback is function(err, row) {}. If the result set is empty, the second parameter is undefined, otherwise it is an object containing the values for the first row.

sql.get 只有 returns 单行对象(不是 rows 数组 个对象)。您需要使用 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