woomy/commands/eval.js

52 lines
1.4 KiB
JavaScript

// Copyright 2020 Emily J. / mudkipscience and contributors. Subject to the AGPLv3 license.
/* eslint-disable no-eval */
exports.conf = {
enabled: true,
guildOnly: false,
aliases: [],
permLevel: 'Developer',
requiredPerms: []
}
exports.help = {
name: 'eval',
category: 'Developer',
description: 'Evaluates arbitrary javascript.',
usage: 'eval [code]',
parameters: '`[code] - Javascript code you want to execute.'
}
exports.run = async (client, message, args, level, data) => {
const hastebin = require('hastebin-gen')
const code = args.join(' ')
try {
const evaled = eval(code)
const clean = await client.clean(client, evaled)
if (clean.length > 2000) {
hastebin(clean, { extension: 'txt' }).then(haste => {
return message.channel.send('`OUTPUT`\n' + haste)
}).catch(error => {
client.logger.error(error)
})
return
}
message.channel.send(`\`OUTPUT\` \`\`\`js\n${await clean}\n\`\`\``)
} catch (err) {
const errclean = await client.clean(client, err)
if (errclean.length > 2000) {
hastebin(errclean, { extension: 'txt' }).then(haste => {
return message.channel.send('`ERROR`\n' + haste)
}).catch(error => {
client.logger.error(error)
})
return
}
message.author.send(`\`ERROR\` \`\`\`xl\n${await errclean}\n\`\`\``)
message.react('⚠️')
}
}