diff --git a/commands/debug.js b/commands/debug.js index 58c53d5..3296e47 100644 --- a/commands/debug.js +++ b/commands/debug.js @@ -16,6 +16,11 @@ module.exports = { description: 'download the Nitrado logs and run checks now', value: 'sync-logs', type: CommandOptions.SubCommand, + }, { + name: 'server-connection-stats', + description: 'view player connection stats', + value: 'server-connection-stats', + type: CommandOptions.SubCommand, }], SlashCommand: { /** @@ -33,6 +38,32 @@ module.exports = { interaction.send({ content: 'Downloading and processing Nitrado logs now...', flags: (1 << 6) }); return client.logsUpdateTimer(client); } + + if (args[0].name == 'server-connection-stats') { + let stats = GuildDB.playerstats; + + let statsEmbed = new EmbedBuilder() + .setColor(client.config.Colors.Default) + .setDescription(`Server connection stats`); + + let month3 = new Date().setMonth(new Date().getMonth() - 3); + let month3Players = stats.filter((stat) => stat.lastConnectionDate > month3); + statsEmbed.addFields({ name: 'Unique connections in the last 3 months', value: `${month3Players.length}`, inline: false }); + + let month = new Date().setMonth(new Date().getMonth() - 1); + let monthlyPlayers = stats.filter((stat) => stat.lastConnectionDate > month); + statsEmbed.addFields({ name: 'Unique connections in the last month', value: `${monthlyPlayers.length}`, inline: false }); + + let week = new Date(new Date().getTime() - 7 * 24 * 60 * 60 * 1000) + let weeklyPlayers = stats.filter((stat) => stat.lastConnectionDate > week); + statsEmbed.addFields({ name: 'Unique connections in the last week', value: `${weeklyPlayers.length}`, inline: false }); + + let today = new Date(new Date().getTime() - 1 * 24 * 60 * 60 * 1000) + let dailyPlayers = stats.filter((stat) => stat.lastConnectionDate > today); + statsEmbed.addFields({ name: 'Unique connections in the last 24 hours', value: `${dailyPlayers.length}`, inline: false }); + + return interaction.send({ embeds: [statsEmbed] }); + } }, }, Interactions: {}