Javascript 用于JSON数据库的排行榜命令
我有一个升级系统,代码如下,它使用一个JSON数据库对数据进行排序,如下所示{code>{“626916199783071750”:{“xp”:94,“level”:12}我想发出一个命令,按照级别顺序显示所有成员的领导委员会。 代码Javascript 用于JSON数据库的排行榜命令,javascript,node.js,json,discord.js,Javascript,Node.js,Json,Discord.js,我有一个升级系统,代码如下,它使用一个JSON数据库对数据进行排序,如下所示{code>{“626916199783071750”:{“xp”:94,“level”:12}我想发出一个命令,按照级别顺序显示所有成员的领导委员会。 代码 顺便说一句,我使用discord.jsv12+如果您需要按照提供的方式对JSON数据进行排序,下面是一个解决方案 //您的数据库 常量成员=[ {“626916199783071750”:{“xp”:94,“级别”:7}, {“62691619978307175
顺便说一句,我使用discord.jsv12+如果您需要按照提供的方式对JSON数据进行排序,下面是一个解决方案
//您的数据库
常量成员=[
{“626916199783071750”:{“xp”:94,“级别”:7},
{“626916199783071750”:{“xp”:94,“级别”:22},
{“626916199783071750”:{“xp”:94,“级别”:12}
];
//排序函数
成员.排序(函数(a,b){
常量keyA=a[Object.keys(a)[0]]级别,
keyB=b[Object.keys(a)[0]]级别;
//比较
//(交换-1和1以更改排序顺序)
if(keyAkeyB)返回1;
返回0;
});
//结果
console.log(members);
您是否收到任何错误?我的数据库中所有不同的用户彼此相邻,而不是一个在另一个下面。这很重要吗?我也将其放在我的database.json文件中?如果每个条目的结构与您在问题中提供的相同,那么有多少用户并不重要(这取决于服务器硬件),但是这个排序函数会对它们进行排序。这是javascript代码。我把它放在一个json文件中了吗?我是confusedNope)您在这里读取并解析json:let db=json.parse(fs.readFileSync(“./database.json”,“utf8”));
,然后使用db
数组将数据发送给用户。我不知道此文件中的数据格式。您提供了{“626916199783071750”:{“xp”:94,“level”:12}
,我为它编写了排序函数…如果数据的结构不同,那么您需要修改此函数)好的,谢谢。我没有在index.js文件中定义成员,因此它给了我一个错误。我应该如何定义成员?
nst Discord = require('discord.js');
const client = new Discord.Client();
const config = require('./config.json');
const fs = require("fs");
let db = JSON.parse(fs.readFileSync("./database.json", "utf8"));
client.on("message", message => {
if (message.author.bot) return; // ignore bots
// if the user is not on db add the user and change his values to 0
if (!db[message.author.id]) db[message.author.id] = {
xp: 0,
level: 0
};
db[message.author.id].xp++;
let userInfo = db[message.author.id];
if(userInfo.xp > 100) {
userInfo.level++
userInfo.xp = 0
message.reply("Congratulations, you level up")
}
const args = message.content.slice(config.prefix.length).trim().split(/ +/g);
const cmd = args.shift().toLowerCase();
if(cmd === "rank") {
let userInfo = db[message.author.id];
let member = message.mentions.members.first();
let embed = new Discord.RichEmbed()
.setColor(0x4286f4)
.addField("Level", userInfo.level)
.addField("XP", userInfo.xp+"/100");
if(!member) return message.channel.sendEmbed(embed)
let memberInfo = db[member.id]
let embed2 = new Discord.RichEmbed()
.setColor(0x4286f4)
.addField("Level", memberInfo.level)
.addField("XP", memberInfo.xp+"/100")
message.channel.sendEmbed(embed2)
}
fs.writeFile("./database.json", JSON.stringify(db), (x) => {
if (x) console.error(x)
});
})
client.login(config.token)