如何过滤排行榜排名

时间:2020-06-12 16:50:24

标签: javascript sqlite discord.js

因此,我正在将Discord Bot从v11升级到Discord.js v12.2.0。我正在使用排行榜的quick.db(7.1.1),因为这是下面的工作代码。我想知道如何过滤排行榜以显示作者的当前排名。使我的排行榜命令在v12中运行是一个小挑战,因为与旧的排行榜命令相比,已经发生了很多变化。

由于嵌入的Discord API限制,字符限制为2048。我的一些用户希望在排行榜上看到自己的排名不在前10名。例如,我排在第16位,并且不在排行榜上显示,因此我希望显示:

.addField(`My Stats`, `Your Rank: 16\nBalance: $20000`)

代码如下:

const coins = db
  .all()
  .filter((data) => data.ID.startsWith(`coins`))
  .sort((a, b) => b.data - a.data);
const userBalance = await db.fetch(`coins_${message.author.id}`);

coins.length = 10;
let finalLb = "";

for (let i in coins) {
  if (coins[i].data === null) coins[i].data = 0;

  let userData = client.users.cache.get(coins[i].ID.split("_")[1])
    ? client.users.cache.get(coins[i].ID.split("_")[1]).tag
    : "Unknown#0000";

  finalLb += `__**${coins.indexOf(coins[i]) + 1}.**__ **${userData} » \`$${
    coins[i].data
  }\`**\n`;
}

let embed = new MessageEmbed()
  .setTitle(`**Money Leaderboard ?**`)
  .setDescription(
    stripIndents`
            ${finalLb}
            `
  )
  .setColor("#efcb83")
  .setFooter(
    `Your Money » $${userBalance} | Leaderboards are Global Statistics`
  );

message.channel.send(embed);

0 个答案:

没有答案