curate/src/commands/owner/exec.js
2020-08-10 23:08:26 -05:00

34 lines
1 KiB
JavaScript

const Command = require('../../structures/Command');
const Util = require('../../util');
const { exec } = require('child_process');
module.exports = class Exec extends Command {
get name() { return 'exec'; }
get _options() { return {
aliases: ['ex', 'sys'],
permissions: ['elevated'],
listed: false,
minimumArgs: 1
}; }
codeBlock(content, lang = null) {
return `\`\`\`${lang ? `${lang}\n` : ''}${content}\`\`\``;
}
async exec(message) {
await this.client.startTyping(message.channel);
exec(Util.Prefix.strip(message, this.client).split(' ').slice(1).join(' '), (err, stdout, stderr) => {
this.client.stopTyping(message.channel);
if (err) return message.channel.createMessage(this.codeBlock(err, 'js'));
const stdErrBlock = (stderr ? this.codeBlock(stderr, 'js') + '\n' : '');
return Util.Hastebin.autosend(stdErrBlock + this.codeBlock(stdout), message);
});
}
get metadata() { return {
category: 'Developer',
description: 'Do some terminal commands.',
usage: '<command> …'
}; }
};