Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于JSON数据库的排行榜命令_Javascript_Node.js_Json_Discord.js - Fatal编程技术网

Javascript 用于JSON数据库的排行榜命令

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

我有一个升级系统,代码如下,它使用一个JSON数据库对数据进行排序,如下所示{code>{“626916199783071750”:{“xp”:94,“level”:12}我想发出一个命令,按照级别顺序显示所有成员的领导委员会。 代码


顺便说一句,我使用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)