【发布时间】:2021-09-07 09:54:41
【问题描述】:
所以我正在尝试为我的排行榜添加前 10 名,这是我用于调平系统和排行榜的代码,但我不知道如何添加前 10 名,我需要它,因为当您键入命令时它只是垃圾邮件,因为很多人都在谈论,所以请帮忙。
client.on("message", async (message) => {
if (message.author.bot) return;
if (message.channel.type === "dm") {
return;
}
const dm = client.users.cache.get(message.author.id);
if (!db[message.author.id])
db[message.author.id] = {
userid: message.author.id,
xp: 0,
level: 0,
};
db[message.author.id].xp++;
let userInfo = db[message.author.id];
if (userInfo.xp > 99) {
userInfo.level++;
userInfo.xp = 0;
dm.send(
new Discord.MessageEmbed()
.setTitle(
`${levelup}Level up${levelup}\n${levelup}Level: ${userInfo.level} ${levelup}`
)
.setColor("#E2DF09")
.setTimestamp()
);
}
if (
message.content.toLowerCase().startsWith(prefix + "rank") ||
message.content.toLowerCase().startsWith(prefix + "level")
) {
let userInfo = db[message.author.id];
let member = message.mentions.members.first();
let embed = new Discord.MessageEmbed()
.setColor("#E2DF09")
.addField("Level", `${info}` + userInfo.level + `${info}`)
.addField("XP", `${info}` + userInfo.xp + "/100" + `${info}`)
.setFooter(
`${message.author.tag}`,
`${message.author.avatarURL({ dynamic: true })}`
);
if (!member) return message.channel.send(embed);
let memberInfo = db[member.id];
let embed2 = new Discord.MessageEmbed()
.setColor("#E2DF09")
.addField("Level", `${info}` + memberInfo.level + `${info}`)
.addField("XP", `${info}` + memberInfo.xp + "/100" + `${info}`);
message.channel.send(embed2);
} else if (
message.content.toLowerCase().startsWith(prefix + "leaderboard") ||
message.content.toLowerCase().startsWith(prefix + "lb")
) {
const embed = new Discord.MessageEmbed()
.setTitle("Leaderboard")
.setColor("#E2DF09");
const c = Object.entries(db).sort((a, b, d) => b[1].level - a[1].level);
for (const [key, value] of c) {
embed.addField(
`\u200B`,
`<@${value.userid}>\nLevel: ${value.level} | XP: ${value.xp}`
);
}
message.channel.send(embed);
}
fs.writeFile("./db/database.json", JSON.stringify(db), (error) => {
console.error();
});
});
这也是 json 文件的样子 我使用用户 ID 作为排行榜标签
{"630812692659044352":{"userid":"630812692659044352","xp":31,"level":32}
这是排行榜的样子,但我想在用户名旁边添加数字,对于第一个、第二个、第三个,我想像奖杯之类的东西一样添加,但对我来说不起作用。
【问题讨论】:
-
请告诉我们您如何存储用户级数据
-
json 看起来像这样 {"630812692659044352":{"userid":"630812692659044352","xp":31,"level":32}
-
我试着回答了,我没能在discord上测试,但我在在线代码编辑器上测试过(除了addField部分)
标签: json discord discord.js fs leaderboard