k44Eqha/commands.js

148 lines
4.0 KiB
JavaScript
Raw Normal View History

2018-05-12 07:19:31 +02:00
global.commands = {
"help": {
usage: "[command]",
aliases: ["commands"],
exec: async function (msg) {
if (msg.args[1]) {
var commandName = msg.args[1];
var command = commands[commandName];
if (!command)
for (let cmdNme in commands) {
let cmd = commands[cmdNme];
if (cmd.aliases && cmd.aliases.includes(commandName)) {command = cmd; break;}
}
if (!command) return msg.react('❓');
var str = '`'+`!${commandName} ${command.usage || ''}`.trim()+'`\n';
if (command.hasOwnProperty('aliases')) str += `**Aliases:** \`!${command.aliases.join(', !')}\`\n`;
if (command.hasOwnProperty('description')) str += `\n${command.description}`;
msg.channel.send({embed:{
description: str
}});
} else {
var cmdArr = [];
for (var command in commands) {
if (!commands[command].op) cmdArr.push(`!${command}`);
}
var embed = {
title: "Commands",
description: cmdArr.join(', '),
footer: {text: "Use `!help <command>` for more info on a command."}
};
msg.channel.send({embed});
}
}
},
'delete': {
usage: "[channel]",
aliases: ['archive'],
hidden: true,
2018-05-12 07:19:31 +02:00
description: "Archives a channel that you have permission to delete.",
exec: async function (msg) {
if (msg.args[1]) {
var channel = msg.mentions.channels.first();
if (!channel) {
msg.react(``);
return;
}
} else {
var channel = msg.channel;
}
if (!channel.permissionsFor(msg.member).has('MANAGE_CHANNELS')) return msg.react('🚫');
2018-07-14 02:04:39 +02:00
await channel.setParent(config.channels.deleted_channels);
await new Promise(resolve => setTimeout(resolve, 500));
2018-05-12 07:19:31 +02:00
await channel.lockPermissions();
msg.react('🆗');
}
},
"eval": {
op: true,
2018-10-06 21:04:10 +02:00
description: "Evaluate javascript",
usage: "<code>",
2018-05-12 07:19:31 +02:00
aliases: ['>'],
exec: async function (message) {
var msg = message, m = message,
guild = message.guild,
channel = message.channel,
member = message.member,
2018-10-06 22:16:47 +02:00
client = dClient,
send = function(){
channel.send.apply(channel, arguments);
},
say = send;
2018-05-12 07:19:31 +02:00
try {
var out = eval(message.content.substr(2));
} catch (error) {
var out = error;
} finally {
message.channel.send('`'+out+'`', {split:{char:''}});
}
}
},
"exec": {
op: true,
2018-10-06 21:04:10 +02:00
description: "Run a shell command",
usage: "<command>",
aliases: ["$"],
exec: async function (msg) {
require("child_process").exec(msg.txt(1), function(error, stdout, stderr){
2018-10-06 21:04:10 +02:00
if (error) msg.channel.send(error, {split:{char:'',maxLength:2000}});
if (stdout) msg.channel.send(stdout, {split:{char:'',maxLength:2000}});
if (stderr) msg.channel.send(stderr, {split:{char:'',maxLength:2000}});
})
}
},
2018-05-12 07:19:31 +02:00
}
2022-01-04 05:40:43 +01:00
dClient.on('messageCreate', async message => {
2018-05-12 07:19:31 +02:00
if (!message.content.startsWith('!')) return;
if (message.author.id === dClient.user.id) return;
var args = message.content.split(' ');
var cmd = args[0].slice(1).toLowerCase();
var txt = function(i){return args.slice(i).join(' ').trim()};
message.args = args;
message.cmd = cmd;
message.txt = function(i){return this.args.slice(i).join(' ')};
2020-04-12 05:27:00 +02:00
if (!message.guild) message.guild = dClient.guilds.resolve(config.guildID);
if (!message.member) message.member = dClient.guilds.resolve(config.guildID).members.resolve(message.author.id);
2018-05-12 07:19:31 +02:00
Object.keys(commands).forEach(commandName => {
var command = commands[commandName];
if (!(commandName === cmd || (command.aliases && command.aliases.includes(cmd)))) return;
2019-08-22 00:06:04 +02:00
if (command.op && !config.opIDs.includes(message.author.id)) return message.react('🚫');
2018-05-12 07:19:31 +02:00
command.exec(message, args, txt).then(
(res) => {
switch (res) {
case "ENOTBRIDGE":
message.channel.send(random([
`This is not a bridged channel.`,
`You can only use this command in a bridged channel.`
]));
break;
case "EBADUSG":
message.channel.send(`**Usage:** \`!${commandName} ${command.usage}\``);
break;
}
2018-05-12 07:19:31 +02:00
},
2018-05-31 21:48:30 +02:00
(err) => {
2018-07-15 00:12:34 +02:00
message.reply(`:warning: An error occured: \`\`\`\n${err.stack}\n\`\`\`<@281134216115257344>`);
2022-01-04 05:40:43 +01:00
handleError(err);
2018-05-12 07:19:31 +02:00
}
)
});
2018-05-31 21:48:30 +02:00
});