问题描述
我希望能够用新数据保存我的 json 文件,然后调用该数据以便我可以再次保存新数据.现在它所做的就是,当我调用 JSON 文件数据的任何部分时,我上次手动保存它时保持不变.(我确实编辑了一些代码并更好地描述了我的问题)提前谢谢你!这是我的代码,没有错误日志:
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; } }); }
推荐答案
下面是使用 fs 将数据保存到 JSON 文件的示例:
Here is an example of saving data to a JSON file using fs:
JSON.parse(fs.readFileSync("./points.json", "utf8"));
这里有一个关于如何使用此代码为不和谐机器人制作积分系统的示例:https://anidiotsguide_old.gitbooks.io/discord-js-bot-guide/content/coding-guides/storing-data-in-a-json-file.html
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");
我希望这会有所帮助!