forked from embee/woomy
168 lines
4.8 KiB
JavaScript
168 lines
4.8 KiB
JavaScript
|
exports.run = (client, message, args, level) => {
|
|||
|
embed = new Discord.RichEmbed();
|
|||
|
embed.setColor(client.embedColour(message));
|
|||
|
|
|||
|
var ran = false;
|
|||
|
var output = "";
|
|||
|
var prefix;
|
|||
|
var currentCategory;
|
|||
|
|
|||
|
if(message.guild) {
|
|||
|
prefix = message.settings.prefix;
|
|||
|
} else {
|
|||
|
prefix = client.config.defaultSettings.prefix;
|
|||
|
};
|
|||
|
|
|||
|
if(!args[0]) {
|
|||
|
embed.setTitle("Command list");
|
|||
|
embed.setDescription(`For more information on a specific command use \`${prefix}help <command>\`\nFor the full command list use \`${prefix}help all\`\n`);
|
|||
|
|
|||
|
const myCommands = message.guild ? client.commands.filter(
|
|||
|
cmd => client.levelCache[cmd.conf.permLevel] <= level
|
|||
|
) : client.commands.filter(
|
|||
|
cmd => client.levelCache[cmd.conf.permLevel] <= level && cmd.conf.guildOnly !== true
|
|||
|
);
|
|||
|
|
|||
|
const commandNames = myCommands.keyArray();
|
|||
|
const longest = commandNames.reduce(
|
|||
|
(long, str) => Math.max(long, str.length),
|
|||
|
0
|
|||
|
);
|
|||
|
|
|||
|
const sorted = myCommands.array().sort(
|
|||
|
(p, c) => p.help.category > c.help.category ? 1 : p.help.name > c.help.name && p.help.category === c.help.category ? 1 : -1
|
|||
|
);
|
|||
|
|
|||
|
sorted.forEach( c => {
|
|||
|
const cat = c.help.category.toProperCase();
|
|||
|
if (currentCategory !== cat) {
|
|||
|
if(ran == true) {
|
|||
|
embed.addField(currentCategory + ":", output.slice(0, -6))
|
|||
|
output = "";
|
|||
|
}
|
|||
|
currentCategory = cat;
|
|||
|
ran = true
|
|||
|
}
|
|||
|
output += `\`${prefix}${c.help.name}\`**,** `;
|
|||
|
});
|
|||
|
|
|||
|
embed.addField(currentCategory + ":", output.slice(0, -6));
|
|||
|
|
|||
|
embed.addField(
|
|||
|
"Invite me",
|
|||
|
"[Click here](https://discordapp.com/oauth2/authorize?client_id=435961704145485835&permissions=8&scope=bot) to add me to your server",
|
|||
|
true
|
|||
|
);
|
|||
|
embed.addField(
|
|||
|
"Support",
|
|||
|
"[Click here](https://discord.gg/HCF8mdv) if bot broke",
|
|||
|
true
|
|||
|
);
|
|||
|
|
|||
|
message.channel.send(embed);
|
|||
|
|
|||
|
return;
|
|||
|
};
|
|||
|
|
|||
|
if(args[0].toLowerCase() == "all") {
|
|||
|
embed.setTitle("Command list");
|
|||
|
embed.setDescription(`For more information on a specific command use \`${prefix}help <command>\`\nFor the full command list use \`${prefix}help all\`\n`);
|
|||
|
|
|||
|
const myCommands = client.commands
|
|||
|
|
|||
|
const commandNames = myCommands.keyArray();
|
|||
|
const longest = commandNames.reduce(
|
|||
|
(long, str) => Math.max(long, str.length),
|
|||
|
0
|
|||
|
);
|
|||
|
|
|||
|
const sorted = myCommands.array().sort(
|
|||
|
(p, c) => p.help.category > c.help.category ? 1 : p.help.name > c.help.name && p.help.category === c.help.category ? 1 : -1
|
|||
|
);
|
|||
|
|
|||
|
sorted.forEach( c => {
|
|||
|
const cat = c.help.category.toProperCase();
|
|||
|
if (currentCategory !== cat) {
|
|||
|
if(ran == true) {
|
|||
|
embed.addField(currentCategory + ":", output.slice(0, -6))
|
|||
|
output = "";
|
|||
|
}
|
|||
|
currentCategory = cat;
|
|||
|
ran = true
|
|||
|
}
|
|||
|
output += `\`${prefix}${c.help.name}\`**,** `;
|
|||
|
});
|
|||
|
|
|||
|
embed.addField(currentCategory + ":", output.slice(0, -6));
|
|||
|
|
|||
|
embed.addField(
|
|||
|
"Invite me",
|
|||
|
"[Click here](https://discordapp.com/oauth2/authorize?client_id=435961704145485835&permissions=8&scope=bot) to add me to your server",
|
|||
|
true
|
|||
|
);
|
|||
|
embed.addField(
|
|||
|
"Support",
|
|||
|
"[Click here](https://discord.gg/HCF8mdv) if bot broke",
|
|||
|
true
|
|||
|
);
|
|||
|
|
|||
|
message.channel.send(embed);
|
|||
|
|
|||
|
return;
|
|||
|
};
|
|||
|
|
|||
|
if(args[0]) {
|
|||
|
let command = args.shift().toLowerCase();
|
|||
|
let cmd = client.commands.get(command) || client.commands.get(client.aliases.get(command));
|
|||
|
|
|||
|
if(!client.commands.has(command)) {
|
|||
|
return message.channel.send("<:error:466995152976871434> That command doesn't exist!")
|
|||
|
};
|
|||
|
|
|||
|
command = client.commands.get(command);
|
|||
|
|
|||
|
var requiredPerms = "";
|
|||
|
|
|||
|
if(cmd.conf.requiredPerms.length > 0 ) {
|
|||
|
requiredPerms = "`" + cmd.conf.requiredPerms.join("`, `") + "`";
|
|||
|
} else {
|
|||
|
requiredPerms = "None";
|
|||
|
};
|
|||
|
|
|||
|
var aliases = "";
|
|||
|
|
|||
|
if(cmd.conf.aliases.length > 0 ) {
|
|||
|
aliases = "`" + cmd.conf.aliases.join("`, `") + "`";
|
|||
|
} else {
|
|||
|
aliases = "None";
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
embed.setTitle(prefix + command.help.name);
|
|||
|
embed.setDescription(
|
|||
|
`❯ **Description:** ${command.help.description}\n❯ **Usage:** ${prefix + command.help.usage}\n❯ **Permission Level:** ${cmd.conf.permLevel} \n❯ **Guild Only:** ${cmd.conf.guildOnly}\n❯ **Aliases:** ${aliases}\n❯ **Required perms:** ${requiredPerms}`
|
|||
|
);
|
|||
|
embed.setFooter("Arguments in [] are required, <> are optional.");
|
|||
|
|
|||
|
message.channel.send(embed);
|
|||
|
|
|||
|
return;
|
|||
|
};
|
|||
|
};
|
|||
|
|
|||
|
exports.conf = {
|
|||
|
enabled: true,
|
|||
|
guildOnly: false,
|
|||
|
aliases: ["h", "cmds"],
|
|||
|
permLevel: "User",
|
|||
|
requiredPerms: ["EMBED_LINKS"]
|
|||
|
};
|
|||
|
|
|||
|
exports.help = {
|
|||
|
name: "help",
|
|||
|
category: "Utility",
|
|||
|
description:
|
|||
|
"Displays all the commands you are able to use.",
|
|||
|
usage: "help <command> **OR** help all"
|
|||
|
};
|