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!
Author by
NintendoZaedus
Updated on June 22, 2022Comments
-
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é about 6 yearsYou seem to have an issue or your code. You have
if(ar === "add"){
and then inside that ifif(ar === "remove"){
ar
can't beadd
andremove
-
André about 6 yearsCould you explain what is not working? Or what did you expected it to do?
-
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 about 6 yearsThank you so much T. Bragg. This worked and now I can continue with my bot. I can't express my gratefulness! Thank you!
-
ca1c about 6 yearsYour welcome! I know how it feels, I had the same problem before.