diff --git a/commands/owner/exec.js b/commands/owner/exec.js new file mode 100644 index 0000000..91cb275 --- /dev/null +++ b/commands/owner/exec.js @@ -0,0 +1,38 @@ +const { Command } = require('discord-akairo'); +const util = require('util'); +const exec = util.promisify(require('child_process').exec); + +class execCommand extends Command { + constructor() { + super('exec', { + aliases: ['exec'], + category: 'owner', + ownerOnly: 'true', + args: [ + { + id: 'exec', + type: 'string', + match: 'rest' + } + ], + description: { + content: 'execute a command on the server', + usage: '[a command on the server]', + examples: ['pm2 list'] + } + }); + } + + async exec(message, args) { + async function update() { + const { stdout, stderr } = await exec(args.exec).catch(err => { + return message.channel.send(`Oh no, an error has occured\n${err}`); + }); + message.channel.send(`stdout: ${stdout}`, { split: true }); + message.channel.send(`stderr: ${stderr}`, { split: true }); + } + return update(); + } +} + +module.exports = execCommand; \ No newline at end of file