Improving the dynamic help

This commit is contained in:
= 2021-07-18 22:23:40 -04:00
parent ab0f4b316d
commit 5236462efe
10 changed files with 49 additions and 69 deletions

View File

@ -14,6 +14,7 @@ let options = {
module.exports = { module.exports = {
name: 'airport', name: 'airport',
description: 'Get airport information by IATA code.', description: 'Get airport information by IATA code.',
usage: '<IATA>',
execute(message, file) { execute(message, file) {
options.params.airport_id = file.name; options.params.airport_id = file.name;
axios.request(options).then(function (response) { axios.request(options).then(function (response) {

View File

@ -10,6 +10,7 @@ const tenor = require('tenorjs').client({
module.exports = { module.exports = {
name: 'gif', name: 'gif',
description: 'Send a GIF', description: 'Send a GIF',
usage: '<GIF name or Search Query>',
execute(message, file) { execute(message, file) {
const client = message.client; const client = message.client;
if (!client.gifs.has(file.name)) { if (!client.gifs.has(file.name)) {

View File

@ -1,54 +1,13 @@
const functions = require('../functions.js');
module.exports = { module.exports = {
name: 'help', name: 'help',
description: 'Shows the help page.', description: 'Shows the help page.',
execute(message, file) { execute(message, file) {
const data = []; message.author.createDM()
const { commands } = message.client; .then(dmChannel => {
dmChannel.send(functions.createHelpEmbed(message)).then().catch(err => console.error(err));
if (!file.name) { message.reply('I\'ve DM\'d you a copy of my help message!');
// const helpStructure = { }).catch(err => console.error(err));
// commands = [
// {
// name: commandName,
// aliases: commandAliases,
// description: commandDescription,
// usage: commandUsage,
// cooldown: commandCooldown
// }
// ]
// };
data.push('Here\'s a list of all my commands:');
data.push(commands.map(command => command.name).join(', '));
data.push('\nYou can send `[command name].help` to get info on a specific command!');
return message.author.send(data, { split: true })
.then(() => {
if (message.channel.type === 'dm') return;
message.reply('I\'ve sent you a DM with all my commands!');
})
.catch(error => {
console.error(`Could not send help DM to ${message.author.tag}.\n`, error);
message.reply('It seems like I can\'t DM you! Do you have DMs disabled?');
});
}
const command = commands.get(file.name) || commands.find(c => c.aliases && c.aliases.includes(file.name));
if (!command) {
return message.reply('That\'s not a valid command!');
}
data.push(`**Name:** ${command.name}`);
if (command.aliases) data.push(`**Aliases:** ${command.aliases.join(', ')}`);
if (command.description) data.push(`**Description:** ${command.description}`);
if (command.usage) data.push(`**Usage:** \`${command.usage}.${command.name}\``);
data.push(`**Cooldown:** ${command.cooldown || 3} second(s)`);
message.channel.send(data, { split: true });
}, },
}; };

View File

@ -4,6 +4,6 @@ module.exports = {
name: 'mapcommands', name: 'mapcommands',
description: '', description: '',
execute(message, file) { execute(message, file) {
console.log(functions.mapCommands(message.client)); console.log(functions.mapCommands(message));
} }
} }

View File

@ -3,6 +3,7 @@ const functions = require('../functions.js');
module.exports = { module.exports = {
name: 'pasta', name: 'pasta',
description: 'Send a copypasta.', description: 'Send a copypasta.',
usage: '<Copypasta Name>',
execute(message, file) { execute(message, file) {
const client = message.client; const client = message.client;
const replyHeader = `\'${file.name}\' requested by: ${message.author.username}\n`; const replyHeader = `\'${file.name}\' requested by: ${message.author.username}\n`;

View File

@ -10,7 +10,7 @@ const { emoji } = require('../config.json');
module.exports = { module.exports = {
name: 'savegif', name: 'savegif',
description: 'Adds a given gif to the hardcoded list.', description: 'Saves a gif selected from a search to a given filename.',
usage: '<search query>', usage: '<search query>',
execute(message, file) { execute(message, file) {
const query = file.name; const query = file.name;

View File

@ -2,8 +2,8 @@ const functions = require('../functions.js');
module.exports = { module.exports = {
name: 'savepasta', name: 'savepasta',
description: 'Adds a given copypasta to the hardcoded list.', description: 'Saves a copypasta as pasta_name.pasta, just send the pasta name on the first message, and the bot will ask for the actual pasta afterwards.',
usage: '<Copy Pasta Text> <pasta_name>', usage: '<Pasta Name>',
execute(message, file) { execute(message, file) {
message.channel.send(`I'll be saving the next message you send as ${file.name}.pasta\nWhat is the content of the copypasta?`) message.channel.send(`I'll be saving the next message you send as ${file.name}.pasta\nWhat is the content of the copypasta?`)
.then(promptMessage => { .then(promptMessage => {

View File

@ -3,7 +3,7 @@ const functions = require('../functions.js');
module.exports = { module.exports = {
name: 'spongebob', name: 'spongebob',
description: 'SpOnGeBoB-iFy AnYtHiNg AuToMaTiCaLly', description: 'SpOnGeBoB-iFy AnYtHiNg AuToMaTiCaLly',
usage: '<text you want spongebob-ified', usage: '<text to convert>',
execute(message, file) { execute(message, file) {
let flipper = 0; let flipper = 0;
let newText = ''; let newText = '';

View File

@ -14,6 +14,7 @@ var options = {
module.exports = { module.exports = {
name: 'weather', name: 'weather',
description: 'Get the current weather by ZIP code or city name.', description: 'Get the current weather by ZIP code or city name.',
usage: '<ZIP code, City Name, etc>',
execute(message, file) { execute(message, file) {
options.params.q = file.name; options.params.q = file.name;
axios.request(options).then(function (response) { axios.request(options).then(function (response) {

View File

@ -115,22 +115,39 @@ module.exports = {
.setTimestamp() .setTimestamp()
.setFooter(`@${author.username}#${author.discriminator}`); .setFooter(`@${author.username}#${author.discriminator}`);
}, },
mapCommands(client) { createHelpEmbed(message) {
const { commands } = client; const { commands } = message.client;
// return new Promise((resolve, reject) => { let fields = [];
// let commandMap = [] for (const entry of commands.map(command => [command.name, command.description, command.usage])) {
// for (const [key, value] of commands.map()) { const name = entry[0];
// // commandMap.push({ const description = entry[1];
// // name: command.name, let usage;
// // aliases: command.aliases, if (entry[2] == undefined) {
// // description: command.description, usage = '';
// // usage: command.usage, } else {
// // cooldown: 0 // Set to 0 for now for the sake of simple code, will add cooldowns later usage = entry[2];
// // });
// }
// });
for (const entry of commands.map(command => [command.name, command.description, command.syntax])) {
console.log(entry);
} }
const excludeList = [
'kill',
'mapcommands',
'newgif',
'newpng',
'oldgif',
'strain',
'stonk',
'wrongbad'
];
if (excludeList.includes(name)) continue;
fields.push({
name: name,
value: `${description}\n**Usage:** \`${usage}.${name}\``
});
}
return new Discord.MessageEmbed()
.setAuthor('NodBot Help')
.setDescription('All commands are provided as "file extensions" instead of prefixes to the message.')
.addFields(fields)
.setTimestamp();
} }
} }