2023-12-10 16:50:59 -05:00

87 lines
1.9 KiB
JavaScript

const fs = require('fs').promises;
const conf = require('../conf');
const playerListDir = conf.playerListDir;
function getFormattedDate() {
const months = [
'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
];
const currentDate = new Date();
const year = currentDate.getUTCFullYear();
const month = months[currentDate.getUTCMonth()];
const day = currentDate.getUTCDate().toString().padStart(2, '0');
return `${month}-${day}-${year}`;
}
function millisecondsUntilAMUTC() {
const now = new Date();
const utcMidnight = Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate() + 1, 0, 0, 0); // Next UTC midnight
const millisecondsUntilMidnightUTC = utcMidnight - now.getTime();
return millisecondsUntilMidnightUTC;
}
async function currentListedPlayers(file){
try{
let res = await fs.readFile(`${playerListDir}/${file}`);
return res.toString().split('\n');
}catch(error){
return [];
}
}
async function updateListFile(file, players){
try{
fs.writeFile(`${playerListDir}/${file}`, players)
}catch(error){
console.error('Unkown error writting player file')
}
}
let addLock = false;
let toAddList = [];
async function addPlayer(playerName){
if(addLock){
toAddList.push(playerName);
return ;
}
addLock = true
let now = getFormattedDate();
let current = await currentListedPlayers(now)
if(!current.includes(playerName)){
current.push(playerName)
await updateListFile(now, current.join('\n'))
}
addLock = false;
if(toAddList.length){
await addPlayer(toAddList.shift());
}
}
function onJoin(bot){
bot.bot.on('playerJoined', async function(player){
await addPlayer(player.username);
});
}
function doMidnight(bots){
let later = millisecondsUntilAMUTC();
setTimeout(function(){
}, later)
}
module.exports = {onJoin, doMidnight};