use vars more + help command rewrite

This commit is contained in:
ry 2020-01-05 19:11:13 +01:00
parent c1c2a6b86b
commit e130dbec7c
4 changed files with 154 additions and 130 deletions

View File

@ -10,11 +10,11 @@ const Users = new table('users');
const Backend = new table('backend');
const Trello = require('trello');
const config = require('../config');
const vars = require('../vars');
const {
db,
topic
} = require('../utils')
const vars = require('../vars');
const trello = new Trello(config.trello.key, config.trello.token);
module.exports = {
name: 'message',
@ -69,7 +69,7 @@ module.exports = {
utils: require('../utils'),
config: require('../config'),
vars: require('../vars'),
isDeveloper: client.config.developers.find((dev) => msg.author.id == dev.id)
isDeveloper: vars.developers.find((dev) => msg.author.id == dev.id)
};
if (!cmd) return;
@ -83,7 +83,7 @@ module.exports = {
if (cmd.guildOnly && !msg.guild) return;
if (cmd.nsfw && !ctx.channel.nsfw)
return ctx.send('This channel is not set to NSFW, please mark it as such and rerun this command.');
if (cmd.developerOnly && !client.config.developers.find((dev) => msg.author.id == dev.id)) return;
if (cmd.developerOnly && !vars.developers.find((dev) => msg.author.id == dev.id)) return;
if (cmd.AuthorPermissions !== 'NONE' && !ctx.member.permissions.has(cmd.AuthorPermissions)) {
return ctx.send(`You need the \`${cmd.AuthorPermissions}\` Permission(s) to run this Command`);
}

View File

@ -1,15 +1,21 @@
const Command = require('../../src/structures/Command');
const Command = require("../../src/structures/Command");
const {
MessageEmbed
} = require('discord.js');
} = require("discord.js");
module.exports = class Help extends Command {
function CapFirstLetter(string) {
if (typeof string == undefined) return;
var firstLetter = string[0] || string.charAt(0);
return firstLetter ? firstLetter.toUpperCase() + string.slice(1) : "";
}
module.exports = class nHelp extends Command {
constructor() {
super({
name: 'help',
description: 'View a list of available commands or information on a specific command.',
aliases: ['h'],
module: 'General',
name: "nhelp",
description: "View a list of available commands or information on a specific command.",
aliases: ['h', '?'],
module: "General",
cooldown: 0,
guildOnly: false,
developerOnly: false
@ -17,119 +23,137 @@ module.exports = class Help extends Command {
}
async command(ctx) {
//console.log(ctx.args);
let silent = ['--nd', '--no-dev'];
if (ctx.args.includes(silent)) {
console.log('is silent');
let Help = new MessageEmbed();
const commands = {
General: {
cs: ctx.client.commands
.filter(command => command.module == "General")
.map(c => c),
name: "General"
},
Settings: {
cs: ctx.client.commands
.filter(command => command.module == "Settings")
.map(c => c),
name: "Settings"
},
Images: {
cs: ctx.client.commands
.filter(command => command.module == "Images")
.map(c => c),
name: "Images"
},
Roleplay: {
cs: ctx.client.commands
.filter(command => command.module == "Roleplay")
.map(c => c),
name: "Roleplay"
}
};
let lengths = [];
let names = ["General", "Settings", "Images", "Roleplay"];
for (const i in commands) {
if (commands.hasOwnProperty(i)) {
const c = commands[i];
lengths.push(c.cs.length);
}
}
if (!ctx.args.length) {
const commands = [
[
'General',
ctx.client.commands
.filter((command) => command.module == 'General')
.map((command) => `${command.name}`)
.join(' | ')
],
/* [
'Images',
ctx.client.commands
.filter((command) => command.module == 'Images')
.map((command) => `${command.name}`)
.join(' | ')
], */
[
'Images',
ctx.client.commands
.filter((command) => command.module == 'Images')
.map((command) => `${command.name}`)
.join(' | ')
],
[
'Roleplay',
ctx.client.commands
.filter((command) => command.module == 'Roleplay')
.map((command) => `${command.name}`)
.join(' | ')
],
[
'Settings',
ctx.client.commands
.filter((command) => command.module == 'Settings')
.map((command) => `${command.name}`)
.join(' | ')
]
];
let start = 0;
if (ctx.isDeveloper)
commands.push([
'Developers',
ctx.client.commands
.filter((command) => command.module == 'Developers')
.map((command) => `${command.name}`)
.join(' | ')
]);
Help.setAuthor(ctx.author.tag, ctx.author.avatarURL())
.setTitle("Command Help")
.setTimestamp(new Date())
.setColor(ctx.vars.color)
.setFooter(`${ctx.client.user.username}`, ctx.client.user.avatarURL());
return ctx.send({
embed: {
description: `Use \`'help <command>\` to get help on a specific command`,
fields: commands.map((group) => {
return new Object({
name: group[0],
value: group[1]
});
}),
color: 0xff873f
}
if (ctx.args.length === 0) {
lengths.forEach(c => {
Help.addField(
`${names[start]} (${c})`,
`${ctx.utils.format.code(`'help --${names[start].toLowerCase()}`)}`,
true
);
start++;
});
return ctx.send(Help);
}
let category, cmd;
if (ctx.args.length > 0) {
category = ctx.args[0].slice(2);
cmd = ctx.args[1];
}
if (commands.hasOwnProperty(CapFirstLetter(category))) {
let short = [];
let long = [];
commands[`${CapFirstLetter(category)}`].cs.forEach(c => {
short.push(`${ctx.utils.format.code(c.name)} - ${c.description}`);
long.push(c);
});
if (ctx.args.length === 2) {
let c = long.filter(
c =>
c.name === cmd.toLowerCase() ||
(c.aliases && c.aliases.includes(cmd.toLowerCase()))
);
let Text;
if (c.length === 0) {
Text = "There is no command with that name in this category.";
Help.setDescription(Text);
return ctx.send(Help);
} else {
let fields = [{
name: "Module",
value: c[0].module,
inline: true
},
{
name: "Aliases",
value: c[0].aliases.length == 0 ?
"No aliases" : c[0].aliases.join(", "),
inline: true
},
{
name: "Cooldown",
value: c[0].cooldown == 0 ? "No cooldown" : `${c[0].cooldown}s`,
inline: true
},
{
name: "Server only?",
value: c[0].guildOnly ? "Yes" : "No",
inline: true
},
{
name: "Permissions needed",
value: c[0].AuthorPermissions ? c[0].AuthorPermissions : "None",
inline: true
},
{
name: "Developers only?",
value: c[0].developerOnly ? "Yes" : "No",
inline: true
}
];
fields.forEach(i => {
Help.addField(i.name, i.value, i.inline);
});
return ctx.send(Help);
}
} else {
Help.setDescription(
`Use ${ctx.utils.format.code(
`'help --<cagegory> <command> to get help on a specific command`
)}\n\n${short.join("\n")}`
);
return ctx.send(Help);
}
} else {
const command = ctx.client.commands.find(
(c) =>
c.name == ctx.args[0].toLowerCase() || (c.aliases && c.aliases.includes(ctx.args[0].toLowerCase()))
);
if (!command) return ctx.send(`That command couldn't be found. Use \`'help\` to see all commands.`);
let fields = [{
name: 'Module',
value: command.module,
inline: true
},
{
name: 'Aliases',
value: command.aliases.length == 0 ? 'No aliases' : command.aliases.join(', '),
inline: true
},
{
name: 'Cooldown',
value: command.cooldown == 0 ? 'No cooldown' : `${command.cooldown}s`,
inline: true
},
{
name: 'Server only?',
value: command.guildOnly ? 'Yes' : 'No',
inline: true
},
{
name: 'Permissions needed',
value: command.AuthorPermissions ? command.AuthorPermissions : 'None',
inline: true
},
{
name: 'Developers only?',
value: command.developerOnly ? 'Yes' : 'No',
inline: true
}
];
let embed = new MessageEmbed()
.setTitle(command.name)
.setDescription(command.description)
.setColor(0xff873f);
fields.forEach((i) => {
embed.addField(i.name, i.value, i.inline);
});
return ctx.send(embed);
Help.setDescription("This Category does not exist");
return ctx.send(Help);
}
}
};

View File

@ -1,5 +1,5 @@
const ora = require("ora");
const config = require("../../config");
const config = require("../../vars");
const chalk = require("chalk");
const BotSpinner = new ora({
discardStdin: false
@ -12,38 +12,38 @@ const ServerSpinner = new ora({
});
module.exports = async = {
starting: async function() {
BotSpinner.text = `${config.name} v${config.version} is starting`;
starting: async function () {
BotSpinner.text = `${config.name} - v${config.version} is starting`;
BotSpinner.spinner = "moon";
BotSpinner.start();
return BotSpinner;
},
stopSpinner: function() {
stopSpinner: function () {
return BotSpinner.stop();
},
hasStarted: async function() {
BotSpinner.succeed(`${config.name} v${config.version} has started`);
hasStarted: async function () {
BotSpinner.succeed(`${config.name} - v${config.version} has started`);
return;
},
shardReady: async function(text) {
shardReady: async function (text) {
shardSpinner.text = text;
shardSpinner.spinner = "moon";
return shardSpinner.start();
},
shardSpinnerStarted: function() {
shardSpinnerStarted: function () {
return shardSpinner.succeed();
},
servers: {
setup: async function(server) {
setup: async function (server) {
ServerSpinner.text = `Setting up ${chalk.red(server.name)} | ${chalk.red(
server.id
)}...`;
ServerSpinner.start();
},
fin: async function(server) {
fin: async function (server) {
ServerSpinner.succeed(
`${chalk.red(server.name)} | ${chalk.red(server.id)} has been set up.`
);
}
}
};
};

View File

@ -1,7 +1,7 @@
module.exports = {
name: 'Thaldrin',
version: '3.6.2',
color: '#ff995d',
name: 'thaldr.in',
hostname: '127.2.11.1',
//hostname: 'localhost',
port: '8080',