From bfde05aeaa96581c096b2d4d86ef076c283aa9f4 Mon Sep 17 00:00:00 2001 From: Braeden Sowinski Date: Thu, 8 Jun 2023 13:14:38 -0700 Subject: [PATCH] 6.13.0 track time played --- commands/leaderboard.js | 12 ++++++++---- package.json | 2 +- structures/DayzArmbands.js | 2 ++ util/LogsHandler.js | 14 ++++++++++++++ 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/commands/leaderboard.js b/commands/leaderboard.js index 08ad60c..457e141 100644 --- a/commands/leaderboard.js +++ b/commands/leaderboard.js @@ -18,6 +18,7 @@ module.exports = { required: true, choices: [ { name: "money", value: "money" }, + { name: "time_played", value: "time_played" }, { name: "kills", value: "kills" }, { name: "killstreak", value: "killstreak" }, { name: "best_killstreak", value: "best_killstreak" }, @@ -65,6 +66,7 @@ module.exports = { if (category == 'deathstreak') return b.deathStreak - a.deathSreak; if (category == 'worst_deathstreak') return b.worstDeathStreak - a.worstDeathStreak; if (category == 'longest_kill') return b.longestKill - a.longestKill; + if (category == 'time_played') return b.totalSessionTime - a.totalSessionTime; }); } @@ -81,7 +83,8 @@ module.exports = { category == 'deathstreak' ? "Current Deathstreak Leaderboard" : category == 'worst_deathstreak' ? "Worst Deathstreak Leaderboard" : category == 'longest_kill' ? "Longest Kill Leaderboard" : - category == 'money' ? "Money Leaderboard" : 'N/A Error'; + category == 'money' ? "Money Leaderboard" : + category == 'time_played' ? "Time Played" : 'N/A Error'; leaderboardEmbed.setTitle(`**${title} - DayZ Reforger**`); @@ -94,13 +97,14 @@ module.exports = { category == 'deathstreak' ? `${leaderboard[i].deathStreak} Deathstreak` : category == 'worst_deathstreak' ? `${leaderboard[i].worstDeathStreak} Deathstreak` : category == 'longest_kill' ? `${leaderboard[i].longestKill}m` : - category == 'money' ? `$${(leaderboard[i].user.guilds[GuildDB.serverID].balance).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2})}` : 'N/A Error'; + category == 'money' ? `$${(leaderboard[i].user.guilds[GuildDB.serverID].balance).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2})}` : + category == 'time_played' ? `Total: ${client.secondsToDhms(leaderboard[i].totalSessionTime)}\nLast Session: ${leaderboard[i].lastSessionTime}` : 'N/A Error'; - if (category == 'money') des += `**${i+1}.** <@${leaderboard[i].user.userID}> - **${stats}**\n` + if (category == 'money' || category == 'time_played') des += `**${i+1}.** <@${leaderboard[i].user.userID}> - **${stats}**\n` else leaderboardEmbed.addFields({ name: `**${i+1}. ${leaderboard[i].gamertag}**`, value: `**${stats}**`, inline: true }); } - if (category == 'money') leaderboardEmbed.setDescription(des); + if (category == 'money' || category == 'time_played') leaderboardEmbed.setDescription(des); return interaction.send({ embeds: [leaderboardEmbed] }); }, diff --git a/package.json b/package.json index 4b0b4f1..003d08d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dayz-armbands", - "version": "6.12.4", + "version": "6.13.0", "description": "A General Purpose Discord Bot for DayZ Servers.", "main": "index.js", "nodemonConfig": { diff --git a/structures/DayzArmbands.js b/structures/DayzArmbands.js index 028a7e6..725cec5 100644 --- a/structures/DayzArmbands.js +++ b/structures/DayzArmbands.js @@ -383,6 +383,8 @@ class DayzArmbands extends Client { lastDeathDate: null, lastHitBy: null, connected: false, + totalSessionTime: 0, + lastSessionTime: "", bounties: [], } } diff --git a/util/LogsHandler.js b/util/LogsHandler.js index 9bed9b1..2d309e6 100644 --- a/util/LogsHandler.js +++ b/util/LogsHandler.js @@ -58,7 +58,21 @@ module.exports = { if (!client.exists(info.player) || !client.exists(info.playerID)) return stats; let playerStat = stats.find(stat => stat.playerID == info.playerID) + let playerStatIndex = stats.indexOf(playerStat); if (playerStat == undefined) playerStat = client.getDefaultPlayerStats(info.player, info.playerID); + if (!client.exists(playerStat.totalSessionTime)) playerStat.totalSessionTime = 0; + + let newDt = await client.getDateEST(info.time); + let unixTime = Math.floor(newDt.getTime()/1000); + let oldUnixTime = Math.floor(data.lastConnectionDate.getTime()/1000); + let seconds = unixTime - oldUnixTime; + let sessionTime = client.secondsToDhms(seconds); + + playerStat.totalSessionTime = playerStat.totalSessionTime + seconds; + playerStat.lastSessionTime = sessionTime; + + if (playerStatIndex == -1) stats.push(playerStat); + else stats[playerStatIndex] = playerStat; SendConnectionLogs(client, guildId, { time: info.time,