保存JSON文件以便稍后从中获取其他数据

时间:2018-03-22 04:17:46

标签: javascript json bots discord discord.js

我希望能够使用新数据保存我的json文件,然后调用该数据,以便我可以再次保存新数据。现在它正在做的就是,当我调用JSON文件的任何部分数据时,我最后一次手动保存它时保持不变。 (我确实编辑了一些代码并更好地描述了我的问题)提前谢谢!这是我的代码,没有错误日志:

const Discord = require('discord.js');
const botconfig = require("./botconfig.json");
const fs = require("fs");
const bot = new Discord.Client();
    bot.on("message", async message => {
        let prefix = botconfig.prefix;
        let messageArray = message.content.split(" ");
        let cmd = messageArray[0];
        let args = messageArray.slice(1);
        console.log(message.member.id)
        var playerFile = require(`./playerData/${message.member.id}.json`);
        if (message.author.bot) return;
        if (message.channel.type === "dm") return;
        if (cmd.charAt(0) === prefix) {
            if(cmd === `${prefix}fc`){
                fs.exists(`./playerData/${message.member.id}.json`, function(exists) {
                    if(exists){
                    let ar = args[0];
                    let ninConsole = args[1];
                    let code = args[2];
                    if(ar === "add" || ar === "remove"){
                        if(code){
                            if(ar === "add"){
                                console.log("Add");
                                if(ninConsole === "switch"){
                                    console.log("Switch " + code); 
                                    let fileContent = `{"switch": "${code}","threeDS": "${playerFile.threeDS}"}`
                                    fs.writeFile(`./playerData/${message.member.id}.json`, fileContent, (err) => {
                                        if (err) {
                                            console.error(err);
                                            return;
                                        };
                                    });
                                }
                                if(ninConsole === "3ds"){
                                    let fileContent = `{"switch": "${playerFile.switch}","threeDS": "${code}"}`
                                    fs.writeFile(`./playerData/${message.member.id}.json`, fileContent, (err) => {
                                        if (err) {
                                            console.error(err);
                                            return;
                                        };
                                    });
                                }
                            }
                            if(ar === "remove"){
                                if(ninConsole === "switch"){
                                    let fileContent = `{"switch": "None","threeDS": "${playerFile.threeDS}"}`
                                    fs.writeFile(`./playerData/${message.member.id}.json`, fileContent, (err) => {
                                        if (err) {
                                            console.error(err);
                                            return;
                                        };
                                    });
                                }
                                if(ninConsole === "3ds"){
                                    let fileContent = `{"switch": "${playerFile.switch}","threeDS": "None"}`
                                    fs.writeFile(`./playerData/${message.member.id}.json`, fileContent, (err) => {
                                        if (err) {
                                            console.error(err);
                                            return;
                                        };
                                    });
                                }
                            }
                        }
                    }
                }else{
                    return;
                }
                });
            }

1 个答案:

答案 0 :(得分:1)

以下是使用fs:

将数据保存到JSON文件的示例
JSON.parse(fs.readFileSync("./points.json", "utf8"));

有一个示例说明如何使用此代码为discord bot制作积分系统: https://anidiotsguide_old.gitbooks.io/discord-js-bot-guide/content/coding-guides/storing-data-in-a-json-file.html

以下是此示例的代码:

const Discord = require("discord.js");
const fs = require("fs");
const client = new Discord.Client();

let points = JSON.parse(fs.readFileSync("./points.json", "utf8"));
const prefix = "+";

client.on("message", message => {
  if (!message.content.startsWith(prefix)) return;
  if (message.author.bot) return;

  if (!points[message.author.id]) points[message.author.id] = {
    points: 0,
    level: 0
  };
  let userData = points[message.author.id];
  userData.points++;

  let curLevel = Math.floor(0.1 * Math.sqrt(userData.points));
  if (curLevel > userData.level) {
    // Level up!
    userData.level = curLevel;
    message.reply(`You"ve leveled up to level **${curLevel}**! Ain"t that dandy?`);
  }

  if (message.content.startsWith(prefix + "level")) {
    message.reply(`You are currently level ${userData.level}, with ${userData.points} points.`);
  }
  fs.writeFile("./points.json", JSON.stringify(points), (err) => {
    if (err) console.error(err)
  });

});

client.login("SuperSecretBotTokenHere");

我希望这有帮助!