From 1fcb2f8ab8447203c99ca51ed3d4a1d257f0c18d Mon Sep 17 00:00:00 2001 From: 7cc5c4f330d47060 Date: Thu, 24 Oct 2024 21:03:20 -0400 Subject: [PATCH] Add help command --- commands/help.js | 202 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 202 insertions(+) create mode 100755 commands/help.js diff --git a/commands/help.js b/commands/help.js new file mode 100755 index 0000000..9a1e575 --- /dev/null +++ b/commands/help.js @@ -0,0 +1,202 @@ +import cmds from "../util/commands.js" +import { getMessage } from '../util/lang.js' + +const sortHelp = function sortHelp (c1, c2) { + const level1 = cmds[c1.with[0].text].level ? cmds[c1.with[0].text].level : 0 + const level2 = cmds[c2.with[0].text].level ? cmds[c2.with[0].text].level : 0 + return level1 - level2 +} + +const printHelp = (c) => { + const commandList = [] + const permsN = getMessage(c.lang, 'command.help.permsNormal') + const permsT = getMessage(c.lang, 'command.help.permsTrusted') + const permsO = getMessage(c.lang, 'command.help.permsOwner') + const permList = [permsN, permsT, permsO] + const colorList = ['green', 'red', 'dark_red'] + for (const i in cmds) { + if (cmds[i].hidden) continue + let cmdColor + if (colorList[cmds[i].level]) { + cmdColor = colorList[cmds[i].level] + } else { + cmdColor = colorList[0] + } + let usage = getMessage(c.lang, `command.${i}.usage`).split('||') + let desc = getMessage(c.lang, `command.${i}.desc`) + if (cmds[i].usage) { + usage = cmds[i].usage.split('||') + } + if (cmds[i].desc) { + desc = cmds[i].desc + } + const hoverText = [] + for (const item of usage) { + hoverText.push({ + translate: getMessage(c.lang, 'command.help.commandUsage.lf'), + color: c.colors.secondary, + with: [ + { + text: i, + color: c.colors.primary + }, + { + text: item, + color: c.colors.primary + } + ] + }) + } + hoverText.push({ + translate: getMessage(c.lang, 'command.help.commandDesc.lf'), + color: c.colors.secondary, + with: [ + { + text: desc, + color: c.colors.primary + } + ] + }) + const rPerms = cmds[i].level ? cmds[i].level : 0 + hoverText.push({ + translate: getMessage(c.lang, 'command.help.commandPerms.lf'), + color: c.colors.secondary, + with: [ + { + text: permList[rPerms], + color: c.colors.primary + } + ] + }) + hoverText.push({ + translate: getMessage(c.lang, 'command.help.runCommand'), + color: c.colors.secondary + }) + commandList.push( + { + translate: '%s ', + color: cmdColor, + with: [ + { + text: i, + hoverEvent: { + action: 'show_text', + value: hoverText, + contents: hoverText + }, + clickEvent: { + action: 'suggest_command', + value: `${c.prefix}${i}` + } + } + ] + } + ) + } + const permListFormat = [] + permList.forEach((item, i) => { + permListFormat.push({ + translate: i === permList.length - 1 ? '%s' : '%s ', + color: colorList[i], + with: [ + item + ] + }) + }) + + c.reply({ + translate: '%s %s', + with: [ + { + translate: '%s (%s):', + with: [ + getMessage(c.lang, 'command.help.cmdList'), + permListFormat + ] + }, + commandList.sort(sortHelp) + ] + }) +} + +const printCmdHelp = (c) => { + let cmd + if (c.args.length >= 1) cmd = c.args[0].toLowerCase() + if (!cmds[cmd] || (cmds[cmd].hidden && c.type !== 'console')) { + c.reply({ text: getMessage(c.lang, 'command.help.noCommand') }) + return + } + let usage = getMessage(c.lang, `command.${cmd}.usage`).split('||') + let desc = getMessage(c.lang, `command.${cmd}.desc`) + if (cmds[cmd].usage) { + usage = cmds[cmd].usage.split('||') + } + if (cmds[cmd].desc) { + desc = cmds[cmd].desc + } + if (cmds[cmd].alias) { + console.log(cmds[cmds[cmd].alias]) + usage = getMessage(c.lang, `command.${cmds[cmd].alias}.usage`).split('||') + desc = getMessage(c.lang, 'command.help.alias', [cmds[cmd].alias]) + if (cmds[cmds[cmd].alias].usage) { + usage = cmds[cmds[cmd].alias].usage.split('||') + } + if (cmds[cmds[cmd].alias].desc) { + desc = cmds[cmds[cmd].alias].desc + } + } + for (const item of usage) { + c.reply({ + translate: getMessage(c.lang, 'command.help.commandUsage'), + color: c.colors.secondary, + with: [ + { + text: cmd, + color: c.colors.primary + }, + { + text: item, + color: c.colors.primary + } + ] + }) + } + c.reply({ + translate: getMessage(c.lang, 'command.help.commandDesc'), + color: c.colors.secondary, + with: [ + { + text: desc, + color: c.colors.primary + } + ] + }) + const permsN = getMessage(c.lang, 'command.help.permsNormal') + const permsT = getMessage(c.lang, 'command.help.permsTrusted') + const permsO = getMessage(c.lang, 'command.help.permsOwner') + const rPerms = cmds[cmd].level ? cmds[cmd].level : 0 + c.reply({ + translate: getMessage(c.lang, 'command.help.commandPerms'), + color: c.colors.secondary, + with: [ + { + text: [permsN, permsT, permsO][rPerms], + color: c.colors.primary + } + ] + }) +} + + +const execute = (c) => { + if (c.args.length > 0) { + printCmdHelp(c) + } else { + printHelp(c) + } +} +const aliases = [ + 'heko' // Parker2991 request +] +export { execute, aliases } +