87 lines
1.9 KiB
JavaScript
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};
|
|
|