Discord.js 获取用户的排名位置

Posted

技术标签:

【中文标题】Discord.js 获取用户的排名位置【英文标题】:Discord.js get rank position of user 【发布时间】:2021-11-26 20:06:35 【问题描述】:

我想获取XP点数低于使用命令的成员的用户数,这样我可以得到他的排名。

但是我对 javascript 和 sql 查询知之甚少,而且我很难坚持这一点,它只是返回 [object Object] 而不是数字。

我的sql表

const table = sql.prepare("SELECT count(*) FROM sqlite_master WHERE type='table' AND name = 'scores';").get();
    if (!table['count(*)']) 
        // If the table isn't there, create it and setup the database correctly.
        sql.prepare("CREATE TABLE scores (id TEXT PRIMARY KEY, user TEXT, guild TEXT, points INTEGER, level INTEGER, money INTEGER);").run();
        // Ensure that the "id" row is always unique and indexed.
        sql.prepare("CREATE UNIQUE INDEX idx_scores_id ON scores (id);").run();
        sql.pragma("synchronous = 1");
        sql.pragma("journal_mode = wal");
    

    // And then we have two prepared statements to get and set the score data.

    client.getScore = sql.prepare("SELECT * FROM scores WHERE user = ? AND guild = ?");
    client.setScore = sql.prepare("INSERT OR REPLACE INTO scores (id, user, guild, points, level, money) VALUES (@id, @user, @guild, @points, @level, @money);");


);

我的尝试

 if (message.content.startsWith(prefix + "cl stats")) 
        const curxp = score.points;
        client.rank = sql.prepare("SELECT count(*) FROM scores WHERE points >= @curxp AND guild = @guild").get();

        console.log(client.rank);
        
        await message.reply(`$client.rank`);

    

【问题讨论】:

client.rank 记录了什么? 我希望它存储匹配所选条件的行数(也就是 xp 小于客户端的用户数) 【参考方案1】:

找到了解决办法。可能不是最好的,但它确实有效。

client.getRank = sql.prepare("SELECT count(*) FROM scores WHERE points >= ? AND guild = ?");
function getRank()
        const curXP = score.points;
        
        let rankOBJ = client.getRank.get(curXP, message.guild.id)
        console.log(rankOBJ);
        let rankStr = JSON.stringify(rankOBJ);
        let rank = rankStr.match(/\d/g);
        return rank;

    ;

【讨论】:

以上是关于Discord.js 获取用户的排名位置的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js 作为机器人获取用户连接

**已解决** discord.js guildMemberAdd() 未向对象添加正确的值

我的 Heroku Discord 机器人离线 - discord.js

Discord.js 机器人的代码响应错误“TypeError:”

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

不和谐机器人 |使用 discord.js 和 MongoDB 进行排名(排行榜?)系统