Save JSON file to grab other data from it later

12,173

Here is an example of saving data to a JSON file using fs:

JSON.parse(fs.readFileSync("./points.json", "utf8"));

There is an example on how to use this code to make a points system for a discord bot here: https://anidiotsguide_old.gitbooks.io/discord-js-bot-guide/content/coding-guides/storing-data-in-a-json-file.html

Here is the code for this example:

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");

I hope this helps!

Share:
12,173
NintendoZaedus
Author by

NintendoZaedus

Updated on June 22, 2022

Comments

  • NintendoZaedus
    NintendoZaedus almost 2 years

    I want to be able to save my json file with new data and then call upon that data so that I can save new data again. Right now all it is doing is it is, when I call upon any part of the JSON file's data, staying the same the last time I manually saved it. (I did edit some code and a better description of my problem) Thank you in advance! Here is my code there is no error log:

    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;
                    }
                    });
                }
    
    • André
      André about 6 years
      You seem to have an issue or your code. You have if(ar === "add"){ and then inside that if if(ar === "remove"){ ar can't be add and remove
    • André
      André about 6 years
      Could you explain what is not working? Or what did you expected it to do?
    • NintendoZaedus
      NintendoZaedus about 6 years
      @AndréPaulo thank you for that, I probably would have overlooked it, but even then that was not the main problem I was experiencing. And yes I have changed my description of my problem, and what I want and some of the code.
  • NintendoZaedus
    NintendoZaedus about 6 years
    Thank you so much T. Bragg. This worked and now I can continue with my bot. I can't express my gratefulness! Thank you!
  • ca1c
    ca1c about 6 years
    Your welcome! I know how it feels, I had the same problem before.