因此,我正在将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);