diff --git a/.gitignore b/.gitignore index 6186588..503d529 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ /node_modules/ /config.json /logoriDB/ -/.vs/ \ No newline at end of file +/.vs/ +/uptime.json \ No newline at end of file diff --git a/index.js b/index.js index 333a6e4..8f7fb9b 100644 --- a/index.js +++ b/index.js @@ -1,6 +1,9 @@ const configM = require('./src/configManager'); const logger = require('./src/logger'); const commandH = require('./src/commandHandler'); +const uptimeM = require('./src/uptimeManager'); + +uptimeM.loadUptime(); if (!configM.loadConfig('./config.json')) { logger.error('No config file has been found in the directory, please configure the template that has been created.'); @@ -37,6 +40,7 @@ bot.on('messageCreate', (msg) => { bot.connect(); process.on('SIGINT', async function() { + uptimeM.thingsDoTo(); await bot.disconnect(); logger.log('Disconnected'); process.exit(); diff --git a/src/cmd/debug.js b/src/cmd/debug.js index cea4d56..83de9b6 100644 --- a/src/cmd/debug.js +++ b/src/cmd/debug.js @@ -1,5 +1,6 @@ const commandH = require('../commandHandler'); const bot = require('../botClient').bot; +const uptimeM = require('../uptimeManager'); exports.loadModule = function loadModule () { commandH.endpoint('^ping$', (match, message) => { @@ -17,10 +18,21 @@ exports.loadModule = function loadModule () { }); commandH.endpoint('^debug$', async (match, message) => { let debugMessage = '```\n'; - debugMessage += 'Logori v2.2.3\n\n'; + debugMessage += 'Logori v2.2.4\n\n'; debugMessage += 'Shard id ' + message.channel.guild.shard.id + ' on ' + bot.shards.size + '\n'; debugMessage += 'Uptime : ' + bot.uptime / 1000 + ' seconds\n'; debugMessage += 'Memory Usage : ' + Math.floor(process.memoryUsage().rss / 1048576) + ' MiB\n'; + if (uptimeM.uptimeInfo.runningTime) { + let t = new Date(); + let totalTime = t.getTime() - uptimeM.uptimeInfo.firstLaunch; + let sessionDuration = t.getTime() - uptimeM.startTime.getTime(); + let pourcentage = (uptimeM.uptimeInfo.runningTime + sessionDuration) / totalTime * 100; + let roundPourcentage = Math.round(pourcentage * 100) / 100; + debugMessage += 'Uptime Pourcentage : ' + roundPourcentage + '%\n'; + } + else { + debugMessage += 'Uptime Pourcentage : 100%\n'; + } debugMessage += '```'; bot.createMessage(message.channel.id, debugMessage); }); diff --git a/src/uptimeManager.js b/src/uptimeManager.js new file mode 100644 index 0000000..302695c --- /dev/null +++ b/src/uptimeManager.js @@ -0,0 +1,26 @@ +const fs = require('fs'); + +const uptimeInfoFile = './uptime.json'; + +exports.startTime = new Date(); + +exports.uptimeInfo = {}; + +exports.loadUptime = function loadUptime () { + if (fs.existsSync(uptimeInfoFile)) { + exports.uptimeInfo = JSON.parse(fs.readFileSync(uptimeInfoFile)); + } +} + +exports.thingsDoTo = function thingsToDo () { + let t = new Date(); + if (!fs.existsSync(uptimeInfoFile)) { + exports.uptimeInfo.firstLaunch = exports.startTime.getTime(); + exports.uptimeInfo.runningTime = t.getTime() - exports.startTime.getTime(); + fs.writeFileSync(uptimeInfoFile, JSON.stringify(exports.uptimeInfo)); + } + else { + exports.uptimeInfo.runningTime = exports.uptimeInfo.runningTime + (t.getTime() - exports.startTime.getTime()); + fs.writeFileSync(uptimeInfoFile, JSON.stringify(exports.uptimeInfo)); + } +}; \ No newline at end of file