/[sudobot]/branches/4.x/src/services/CommandMetaDataManager.ts
ViewVC logotype

Contents of /branches/4.x/src/services/CommandMetaDataManager.ts

Parent Directory Parent Directory | Revision Log Revision Log


Revision 577 - (show annotations)
Mon Jul 29 18:52:37 2024 UTC (8 months ago) by rakinar2
File MIME type: application/typescript
File size: 2933 byte(s)
chore: add old version archive branches (2.x to 9.x-dev)
1 /**
2 * This file is part of SudoBot.
3 *
4 * Copyright (C) 2021-2022 OSN Inc.
5 *
6 * SudoBot is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU Affero General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * SudoBot is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU Affero General Public License for more details.
15 *
16 * You should have received a copy of the GNU Affero General Public License
17 * along with SudoBot. If not, see <https://www.gnu.org/licenses/>.
18 */
19
20 import DiscordClient from "../client/Client";
21 import MessageEmbed from "../client/MessageEmbed";
22 import { CommandHelpData } from "../types/CommandHelpData";
23 import Help from "../utils/Help";
24 import BaseCommand from "../utils/structures/BaseCommand";
25
26 export function getAllCommandData() {
27 return Help;
28 }
29
30 export function findCommandData(callback: (data: CommandHelpData) => boolean) {
31 return Help.find(callback);
32 }
33
34 export function renderCommandList(limit = 60): string {
35 let str = `Type \`${DiscordClient.client.config.get('prefix')}help <CommandName>\` for more information about a specific command.\n\n`;
36 let index = 0;
37
38 for (const cmd of Help) {
39 if (limit <= index)
40 break;
41
42 str += `**${cmd.name}**\n${cmd.shortBrief}\n\n`;
43 index++;
44 }
45
46 return str;
47 }
48
49 export function renderCommandMeta(cmd: CommandHelpData | string, commandObj?: BaseCommand): MessageEmbed {
50 let str = '';
51 const command = typeof cmd === 'string' ? findCommandData(c => c.name === cmd) : cmd;
52
53 if (!command)
54 throw new Error('Command not found: ' + cmd);
55
56 const cmdObj = commandObj ?? DiscordClient.client.commands.get(command.name)!;
57
58 str += `${command.description ?? command.shortBrief}\n\n`;
59 str += `**Usage**\n\`${DiscordClient.client.config.get('prefix')}${command.name} ${command.structure}\`\n\n`;
60
61 if (command.subcommands) {
62 str += `**Subcommands**\n`;
63
64 for (let key in command.subcommands)
65 str += `\`${key}\` - ${command.subcommands[key]}\n`
66
67 str += '\n\n';
68 }
69
70 str += `**Examples**\n${command.example.replace(/\%\%/g, DiscordClient.client.config.get('prefix'))}\n\n`;
71 str += `**Legacy Commands Support**\n${command.legacyCommand ? 'Available' : 'Not supported'}\n\n`;
72 str += `**Slash Commands Support**\n${command.slashCommand ? 'Available' : 'Not supported'}\n\n`;
73 str += `**Category**\n\`${cmdObj.getCategory()}\`\n\n`;
74 str += `**Notes**\n${command.notes ?? '*No notes available*'}`;
75
76 return new MessageEmbed({
77 author: {
78 name: `${DiscordClient.client.config.get('prefix')}${command.name}`
79 },
80 description: str
81 });
82 }

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26