我正在使用node.js制作一个Twitch机器人,但遇到了一些奇怪的问题。
我建立了一个JSON文件系统,可以通过聊天中的命令进行操作。但是,由于某些原因,JSON文件的格式在输入错误的数据时会陷入混乱(例如,未定义用户或使用字母/字符而不是数字)。格式正确的JSON文件将变成单行怪物,并且在输入更多错误内容时通常会完全弄乱文件内容。
奇怪的是,我为错误的输入设置了检测系统,该系统应返回错误消息并忽略写入JSON文件,但是由于某些原因而无法正常工作(出现错误消息,JSON文件仍然更改)。
我是一个相当新手的程序员,所以如果我愿意的话,请放轻松。
if (userName === "xyz1" || userName === "xyz2") { // censored for privacy
if (!args[0] || !args[1]) return client.say(channelName, 'You did not specify the user or the value)!');
const user = args[0].toLowerCase();
const giveRaw = args[1];
if (!giveRaw.match(/^[0-9]+$/)) return client.say(channelName, 'Your amount cannot contain letters/symbols/decimals!');
const giveInt = parseInt(giveRaw);
if (pointsjson.hasOwnProperty(user)) {
pointsjson[user] = {
points: pointsjson[user].points + giveInt
}
fs.writeFile('./system/points.json', JSON.stringify(pointsjson, null, 10), err => { // write to json
if (err) throw err;
});
client.say(channelName, `Added ${giveInt} coins to ${user}'s balance.`);
} else if (pointsjson.hasOwnProperty(user) === false) {
pointsjson[user] = {
points: giveInt
}
fs.writeFile("./system/points.json", JSON.stringify(pointsjson, null, 10), err => { // write to json
if (err) throw err;
});
client.say(channelName, `Added ${giveInt} coins to ${user}'s balance. (User has no record in database, added points anyways, did you input the name correctly?)`);
}
} else if (userName !== 'xyz1' && userName !== 'xyz2') return client.say(channelName, "Can't do that broski! (Developer only command.)");
答案 0 :(得分:0)
解决了问题。显然我在代码中的某个地方弄乱了JSON.stringify(),每次发送消息时都会触发它。我好傻。