From f451817416487f26929ca5649df78a308892c2d0 Mon Sep 17 00:00:00 2001 From: Braeden Sowinski Date: Sat, 2 Sep 2023 22:14:29 -0700 Subject: [PATCH] update/track-longest-session-time --- commands/leaderboard.js | 16 ++++++++++------ commands/player-stats.js | 15 ++++++++++----- package.json | 2 +- structures/DayzRBot.js | 3 ++- util/LogsHandler.js | 6 ++---- 5 files changed, 25 insertions(+), 17 deletions(-) diff --git a/commands/leaderboard.js b/commands/leaderboard.js index 561ed98..145448a 100644 --- a/commands/leaderboard.js +++ b/commands/leaderboard.js @@ -18,7 +18,8 @@ module.exports = { required: true, choices: [ { name: "money", value: "money" }, - { name: "time_played", value: "time_played" }, + { name: "total_time_played", value: "total_time_played" }, + { name: "longest_time_played", value: "longest_time_played" }, { name: "kills", value: "kills" }, { name: "killstreak", value: "killstreak" }, { name: "best_killstreak", value: "best_killstreak" }, @@ -66,7 +67,8 @@ 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; + if (category == 'total_time_played') return b.totalSessionTime - a.totalSessionTime; + if (category == 'longest_time_played') return b.longestSessionTime - a.longestSessionTime; }); } @@ -84,7 +86,8 @@ module.exports = { category == 'worst_deathstreak' ? "Worst Deathstreak Leaderboard" : category == 'longest_kill' ? "Longest Kill Leaderboard" : category == 'money' ? "Money Leaderboard" : - category == 'time_played' ? "Time Played" : 'N/A Error'; + category == 'total_time_played' ? "Total Time Played" : + category == 'longest_time_played' ? "Longest Game Session" : 'N/A Error'; leaderboardEmbed.setTitle(`**${title} - DayZ Reforger**`); @@ -100,16 +103,17 @@ module.exports = { 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})}` : - category == 'time_played' ? `**Total:** ${client.secondsToDhms(leaderboard[i].totalSessionTime)}\n> **Last Session:** ${leaderboard[i].lastSessionTime}` : 'N/A Error'; + category == 'total_time_played' ? `**Total:** ${client.secondsToDhms(leaderboard[i].totalSessionTime)}\n> **Last Session:** ${client.secondsToDhms(leaderboard[i].lastSessionTime)}` : + category == 'longest_time_played' ? `**Longest Game Session:** ${client.secondsToDhms(leaderboard[i].longestSessionTime)}` : 'N/A Error'; if (category == 'money') des += `**${i+1}.** <@${leaderboard[i].user.userID}> - **${stats}**\n` - else if (category == 'time_played') { + else if (category == 'total_time_played' || category == 'longest_time_played') { tag = leaderboard[i].discordID != "" ? `<@${leaderboard[i].discordID}>` : leaderboard[i].gamertag; des += `**${i+1}.** ${tag}\n> ${stats}\n\n`; } else leaderboardEmbed.addFields({ name: `**${i+1}. ${leaderboard[i].gamertag}**`, value: `**${stats}**`, inline: true }); } - if (category == 'money' || category == 'time_played') leaderboardEmbed.setDescription(des); + if (['money', 'total_time_played', 'longest_time_played'].includes(category)) leaderboardEmbed.setDescription(des); return interaction.send({ embeds: [leaderboardEmbed] }); }, diff --git a/commands/player-stats.js b/commands/player-stats.js index 16562eb..08f5597 100644 --- a/commands/player-stats.js +++ b/commands/player-stats.js @@ -18,7 +18,8 @@ module.exports = { required: true, choices: [ { name: "money", value: "money" }, - { name: "time_played", value: "time_played" }, + { name: "total_time_played", value: "total_time_played" }, + { name: "longest_time_played", value: "longest_time_played" }, { name: "kills", value: "kills" }, { name: "killstreak", value: "killstreak" }, { name: "best_killstreak", value: "best_killstreak" }, @@ -93,7 +94,8 @@ 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; + if (category == 'total_time_played') return b.totalSessionTime - a.totalSessionTime; + if (category == 'longest_time_played') return b.longestSessionTime - a.longestSessionTime; }); if (discord) { // If searching by discord @@ -119,7 +121,8 @@ module.exports = { category == 'worst_deathstreak' ? "Worst Deathstreak" : category == 'longest_kill' ? "Longest Kill" : category == 'money' ? "Total Money" : - category == 'time_played' ? "Time Played" : 'N/A Error'; + category == 'total_time_played' ? "Total Time Played" : + category == 'longest_time_played' ? "Longest Game Session" : 'N/A Error'; let statsEmbed = new EmbedBuilder() .setColor(client.config.Colors.Default); @@ -142,11 +145,13 @@ module.exports = { statsEmbed.addFields({ name: 'Leaderboard Position', value: `# ${leaderboardPos}`, inline: true }); - if (category == 'time_played') { + if (category == 'total_time_played') { statsEmbed.addFields( { name: 'Total Time Played', value: client.secondsToDhms(query.totalSessionTime), inline: true }, - { name: 'Last Session Time', value: query.lastSessionTime, inline: true } + { name: 'Last Session Time', value: client.secondsToDhms(query.lastSessionTime), inline: true } ); + } else if (category == 'longest_time_played') { + statsEmbed.addFields({ name: 'Longest Game Session', value: client.secondsToDhms(query.longestSessionTime), inline: true }); } else statsEmbed.addFields({ name: title, value: stats, inline: true }); return interaction.send({ embeds: [statsEmbed] }); diff --git a/package.json b/package.json index c079a08..b4376b1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dayzr-bot", - "version": "9.1.5", + "version": "9.2.0", "description": "A General Purpose Discord Bot for DayZ Nitrado Servers.", "main": "index.js", "nodemonConfig": { diff --git a/structures/DayzRBot.js b/structures/DayzRBot.js index 953f9a6..2df9c96 100644 --- a/structures/DayzRBot.js +++ b/structures/DayzRBot.js @@ -392,7 +392,8 @@ class DayzRBot extends Client { lastHitBy: null, connected: false, totalSessionTime: 0, - lastSessionTime: "", + lastSessionTime: 0, + longestSessionTime: 0, bounties: [], } } diff --git a/util/LogsHandler.js b/util/LogsHandler.js index 6be5c53..3a5c071 100644 --- a/util/LogsHandler.js +++ b/util/LogsHandler.js @@ -60,17 +60,15 @@ module.exports = { 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); - if (!client.exists(playerStat.lastConnectionDate)) playerStat.lastConnectionDate = await client.getDateEST(info.time); let oldUnixTime = Math.floor(playerStat.lastConnectionDate.getTime()/1000); let seconds = unixTime - oldUnixTime; - let sessionTime = client.secondsToDhms(seconds); playerStat.totalSessionTime = playerStat.totalSessionTime + seconds; - playerStat.lastSessionTime = sessionTime; + playerStat.lastSessionTime = seconds; + playerStat.longestSessionTime = seconds > playerStat.longestSessionTime ? seconds : playerStat.longestSessionTime; if (playerStatIndex == -1) stats.push(playerStat); else stats[playerStatIndex] = playerStat;