Один из способов сделать это - создать отдельный файл (например, /saves/players.json
), в котором вы можете хранить объекты игрока.
Сначала вы прочитаете файл и посмотрите, есть ли у него объект для указанного пользователя, если нет, то вы создаете новый.
После этого вы видите, может ли пользователь дать репутацию, и если это так, вы запускаете код, чтобы дать оценку репутации. После этого вы сбрасываете свойство, чтобы оно могло быть снова использовано через 24 часа.
Посмотрите на код ниже. Это не проверено, но должно дать вам общее представление о том, что я пытаюсь объяснить.
let players = JSON.parse(fs.readFileSync("./saves/players.json",
"utf8"));
// Get the user who gave the rep
let repGiver;
if(!players[message.author.id]){
repGiver = {
nextRep: new Date()
};
players[message.author.id] = repGiver;
} else {
repGiver = players[message.author.id];
}
// Check whether the user can give rep
if (repGiver.nextRep <= new Date()) {
/*
* Code to give a player rep
*/
players[message.author.id] = {
// Reset the nextRep property to tomorrow
nextRep: new Date(new Date().getTime() + 24 * 60 * 60 * 1000)
};
} else {
// Code for when a player can't give rep yet
}
// Save the new values for players
fs.writeFile("./saves/players.json", JSON.stringify(players), (err)
=> {
if (err) console.log(err)
});