2018-12-30 01:20:24 +01:00
|
|
|
const { Command } = require('discord-akairo');
|
2019-06-15 21:54:01 +02:00
|
|
|
const akairoVersion = require('discord-akairo').version;
|
2019-11-22 12:30:20 +01:00
|
|
|
const { version } = require('discord.js');
|
2019-07-25 07:49:26 +02:00
|
|
|
const util = require('util');
|
|
|
|
const exec = util.promisify(require('child_process').exec);
|
2018-12-25 19:17:07 +01:00
|
|
|
|
2018-12-30 01:20:24 +01:00
|
|
|
class StatsCommand extends Command {
|
2019-01-02 08:09:45 +01:00
|
|
|
constructor() {
|
|
|
|
super('stats', {
|
|
|
|
aliases: ['stats'],
|
|
|
|
category: 'utility',
|
2019-11-09 12:04:01 +01:00
|
|
|
clientPermissions: ['SEND_MESSAGES', 'EMBED_LINKS'],
|
2019-01-02 08:09:45 +01:00
|
|
|
description: {
|
2018-12-30 01:20:24 +01:00
|
|
|
content: 'Show some stats about the bot',
|
|
|
|
usage: '',
|
|
|
|
examples: ['']
|
|
|
|
}
|
2019-01-02 08:09:45 +01:00
|
|
|
});
|
|
|
|
}
|
2018-09-08 16:10:28 +02:00
|
|
|
|
2019-01-02 08:09:45 +01:00
|
|
|
async exec(message) {
|
2019-06-26 01:38:06 +02:00
|
|
|
var uptime = process.uptime();
|
|
|
|
const date = new Date(uptime*1000);
|
|
|
|
const days = date.getUTCDate() - 1,
|
|
|
|
hours = date.getUTCHours(),
|
|
|
|
minutes = date.getUTCMinutes(),
|
|
|
|
seconds = date.getUTCSeconds();
|
|
|
|
|
|
|
|
|
|
|
|
let segments = [];
|
|
|
|
|
|
|
|
// Format the uptime string.
|
|
|
|
if (days > 0) segments.push(days + ' day' + ((days == 1) ? '' : 's'));
|
|
|
|
if (hours > 0) segments.push(hours + ' hour' + ((hours == 1) ? '' : 's'));
|
|
|
|
if (minutes > 0) segments.push(minutes + ' minute' + ((minutes == 1) ? '' : 's'));
|
|
|
|
if (seconds > 0) segments.push(seconds + ' second' + ((seconds == 1) ? '' : 's'));
|
|
|
|
const dateString = segments.join(', ');
|
|
|
|
|
2019-01-02 18:45:53 +01:00
|
|
|
const used = process.memoryUsage().heapUsed / 1024 / 1024;
|
|
|
|
|
2019-07-25 07:49:26 +02:00
|
|
|
// Get cpu model
|
|
|
|
let cpu;
|
|
|
|
if (process.platform == 'darwin') {
|
|
|
|
const { stdout } = await exec('sysctl -n machdep.cpu.brand_string');
|
|
|
|
cpu = stdout;
|
|
|
|
} else if (process.platform == 'linux') {
|
2019-07-25 07:52:01 +02:00
|
|
|
const { stdout } = await exec('lscpu | grep "Model name:" | sed -r \'s/Model name:\\s{1,}//g\'');
|
2019-07-25 07:49:26 +02:00
|
|
|
cpu = stdout;
|
|
|
|
} else if (process.platform == 'win32') {
|
|
|
|
const { stdout } = await exec('wmic CPU get NAME');
|
2019-07-25 17:09:21 +02:00
|
|
|
cpu = stdout.replace('Name', '');
|
2019-07-25 07:49:26 +02:00
|
|
|
}
|
|
|
|
|
2019-11-22 12:30:20 +01:00
|
|
|
const statsEmbed = this.client.util.embed()
|
2019-11-02 00:54:40 +01:00
|
|
|
.setColor(message.member.displayHexColor)
|
2019-01-02 18:45:53 +01:00
|
|
|
.setTitle('Bot stats')
|
|
|
|
.setAuthor('Haha yes')
|
|
|
|
.addField('Servers', this.client.guilds.size, true)
|
|
|
|
.addField('Channels', this.client.channels.size, true)
|
|
|
|
.addField('Users', this.client.users.size, true)
|
2019-06-26 01:38:06 +02:00
|
|
|
.addField('Uptime', dateString, true)
|
2019-01-02 18:45:53 +01:00
|
|
|
.addField('Ram usage', `${Math.round(used * 100) / 100} MB`, true)
|
2019-07-25 07:49:26 +02:00
|
|
|
.addField('CPU', cpu, true)
|
|
|
|
.addField('OS', process.platform, true)
|
2019-06-15 21:54:01 +02:00
|
|
|
.addField('Nodejs version', process.version, true)
|
|
|
|
.addField('Discord.js version', version, true)
|
|
|
|
.addField('Discord-Akairo version', akairoVersion, true)
|
2019-01-03 17:28:31 +01:00
|
|
|
.setTimestamp();
|
|
|
|
|
2019-01-02 18:45:53 +01:00
|
|
|
return message.channel.send(statsEmbed);
|
2019-01-02 08:09:45 +01:00
|
|
|
}
|
2018-12-30 01:20:24 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = StatsCommand;
|