diff --git a/commands/util/eval.js b/commands/util/eval.js index f249e8f2..745692fe 100644 --- a/commands/util/eval.js +++ b/commands/util/eval.js @@ -77,7 +77,7 @@ module.exports = class EvalCommand extends Command { } } - makeResultMessages(result, hrDiff, input = null) { + makeResultMessages(result, hrDiff, input = null, lang = 'javascript') { const inspected = util.inspect(result, { depth: 0 }) .replace(nlPattern, '\n') .replace(this.sensitivePattern, '--snip--'); @@ -87,19 +87,19 @@ module.exports = class EvalCommand extends Command { const appendPart = inspected[last] !== '}' && inspected[last] !== ']' && inspected[last] !== '\'' ? split[split.length - 1] : inspected[last]; - const prepend = `\`\`\`javascript\n${prependPart}\n`; + const prepend = `\`\`\`${lang}\n${prependPart}\n`; const append = `\n${appendPart}\n\`\`\``; if (input) { return Util.splitMessage(tags.stripIndents` *Executed in ${hrDiff[0] > 0 ? `${hrDiff[0]}s ` : ''}${hrDiff[1] / 1000000}ms.* - \`\`\`javascript + \`\`\`${lang} ${inspected} \`\`\` `, { maxLength: 1900, prepend, append }); } else { return Util.splitMessage(tags.stripIndents` *Callback executed after ${hrDiff[0] > 0 ? `${hrDiff[0]}s ` : ''}${hrDiff[1] / 1000000}ms.* - \`\`\`javascript + \`\`\`${lang} ${inspected} \`\`\` `, { maxLength: 1900, prepend, append }); diff --git a/commands/util/exec.js b/commands/util/exec.js index 7fe97ab6..6ea1e6f0 100644 --- a/commands/util/exec.js +++ b/commands/util/exec.js @@ -2,7 +2,6 @@ const Command = require('../../framework/Command'); const { exec } = require('child_process'); const { promisify } = require('util'); const execAsync = promisify(exec); -const { stripIndents } = require('common-tags'); module.exports = class ExecCommand extends Command { constructor(client) { @@ -25,20 +24,24 @@ module.exports = class ExecCommand extends Command { async run(msg, { command }) { const results = await this.exec(command); - return msg.reply(stripIndents` - _${results.err ? 'An error occurred:' : 'Successfully executed.'}_ - \`\`\`sh - ${results.std} - \`\`\` - `); + const msgs = this.client.registry.commands.get('eval') + .makeResultMessages(results.std, results.hrDiff, command, 'sh'); + if (Array.isArray(msgs)) { + return msgs.map(item => msg.reply(item)); + } else { + return msg.reply(msgs); + } } async exec(command) { + let hrDiff; try { + const hrStart = process.hrtime(); const { stdout } = await execAsync(command, { timeout: 30000, encoding: 'utf8' }); - return { err: false, std: stdout.trim() }; + hrDiff = process.hrtime(hrStart); + return { err: false, std: stdout.trim(), hrDiff }; } catch (err) { - return { err: true, std: err.stderr.trim() }; + return { err: true, std: err.stderr.trim(), hrDiff: null }; } } };