diff --git a/XiaoBot.js b/XiaoBot.js index 5ddf8a84..316f8c77 100644 --- a/XiaoBot.js +++ b/XiaoBot.js @@ -67,6 +67,8 @@ client.on('warn', console.warn); client.on('commandError', (command, err) => console.error(command.name, err)); +client.on('commandRun', command => ++command.uses); + client.on('guildCreate', async () => { const guilds = await client.shard.fetchClientValues('guilds.size'); const count = guilds.reduce((prev, val) => prev + val, 0); diff --git a/commands/util/command-leaderboard.js b/commands/util/command-leaderboard.js new file mode 100644 index 00000000..8fe0586a --- /dev/null +++ b/commands/util/command-leaderboard.js @@ -0,0 +1,32 @@ +const Command = require('../../structures/Command'); + +module.exports = class CommandLeaderboardCommand extends Command { + constructor(client) { + super(client, { + name: 'command-leaderboard', + aliases: ['cmd-leaderboard', 'cmd-board'], + group: 'util', + memberName: 'command-leaderboard', + description: 'Responds with the most used commands on this shard since the last restart.', + guarded: true, + args: [ + { + key: 'page', + prompt: 'Which page do you want to view?', + type: 'integer', + default: 1 + } + ] + }); + } + + run(msg, { page }) { + let i = 0; + const list = this.client.registry.commands + .filter(cmd => cmd.uses) + .sort((a, b) => b.uses - a.uses) + .map(cmd => `**${++i}.** ${cmd.name} (${cmd.uses} Uses)`) + .slice((page - 1) * 10, page * 10); + return msg.say(list.split('\n') || 'None yet.'); + } +}; diff --git a/package.json b/package.json index d1256993..ad0ab450 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "xiaobot", - "version": "42.11.0", + "version": "42.12.0", "description": "Your personal server companion.", "main": "Shard.js", "scripts": { diff --git a/structures/Command.js b/structures/Command.js index cb15945b..595dab5f 100644 --- a/structures/Command.js +++ b/structures/Command.js @@ -9,6 +9,7 @@ class XiaoCommand extends Command { usages: 1, duration: 2 }; + this.uses = 0; } hasPermission(msg) {