@mephisto5558/command 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +20 -0
  3. package/dist/classes/command/index.d.ts +99 -0
  4. package/dist/classes/command/index.d.ts.map +1 -0
  5. package/dist/classes/command/index.js +378 -0
  6. package/dist/classes/command/index.js.map +1 -0
  7. package/dist/classes/command/utils.d.ts +29 -0
  8. package/dist/classes/command/utils.d.ts.map +1 -0
  9. package/dist/classes/command/utils.js +2 -0
  10. package/dist/classes/command/utils.js.map +1 -0
  11. package/dist/classes/commandManager/index.d.ts +43 -0
  12. package/dist/classes/commandManager/index.d.ts.map +1 -0
  13. package/dist/classes/commandManager/index.js +186 -0
  14. package/dist/classes/commandManager/index.js.map +1 -0
  15. package/dist/classes/commandOption/index.d.ts +124 -0
  16. package/dist/classes/commandOption/index.d.ts.map +1 -0
  17. package/dist/classes/commandOption/index.js +378 -0
  18. package/dist/classes/commandOption/index.js.map +1 -0
  19. package/dist/classes/commandOption/utils.d.ts +145 -0
  20. package/dist/classes/commandOption/utils.d.ts.map +1 -0
  21. package/dist/classes/commandOption/utils.js +3 -0
  22. package/dist/classes/commandOption/utils.js.map +1 -0
  23. package/dist/classes/utils.d.ts +42 -0
  24. package/dist/classes/utils.d.ts.map +1 -0
  25. package/dist/classes/utils.js +81 -0
  26. package/dist/classes/utils.js.map +1 -0
  27. package/dist/db.d.ts +22 -0
  28. package/dist/db.d.ts.map +1 -0
  29. package/dist/db.js +2 -0
  30. package/dist/db.js.map +1 -0
  31. package/dist/discord.js.d.ts +172 -0
  32. package/dist/discord.js.d.ts.map +1 -0
  33. package/dist/discord.js.js +2 -0
  34. package/dist/discord.js.js.map +1 -0
  35. package/dist/index.d.ts +71 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +22 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/tsconfig.tsbuildinfo +1 -0
  40. package/dist/utils/CooldownsManager.d.ts +8 -0
  41. package/dist/utils/CooldownsManager.d.ts.map +1 -0
  42. package/dist/utils/CooldownsManager.js +39 -0
  43. package/dist/utils/CooldownsManager.js.map +1 -0
  44. package/dist/utils/capitalize.d.ts +2 -0
  45. package/dist/utils/capitalize.d.ts.map +1 -0
  46. package/dist/utils/capitalize.js +4 -0
  47. package/dist/utils/capitalize.js.map +1 -0
  48. package/dist/utils/constants.d.ts +2 -0
  49. package/dist/utils/constants.d.ts.map +1 -0
  50. package/dist/utils/constants.js +2 -0
  51. package/dist/utils/constants.js.map +1 -0
  52. package/dist/utils/getCommands.d.ts +18 -0
  53. package/dist/utils/getCommands.d.ts.map +1 -0
  54. package/dist/utils/getCommands.js +36 -0
  55. package/dist/utils/getCommands.js.map +1 -0
  56. package/dist/utils/getDirectories.d.ts +2 -0
  57. package/dist/utils/getDirectories.d.ts.map +1 -0
  58. package/dist/utils/getDirectories.js +5 -0
  59. package/dist/utils/getDirectories.js.map +1 -0
  60. package/dist/utils/getFilename.d.ts +5 -0
  61. package/dist/utils/getFilename.d.ts.map +1 -0
  62. package/dist/utils/getFilename.js +5 -0
  63. package/dist/utils/getFilename.js.map +1 -0
  64. package/dist/utils/index.d.ts +9 -0
  65. package/dist/utils/index.d.ts.map +1 -0
  66. package/dist/utils/index.js +9 -0
  67. package/dist/utils/index.js.map +1 -0
  68. package/dist/utils/isSnowflake.d.ts +2 -0
  69. package/dist/utils/isSnowflake.d.ts.map +1 -0
  70. package/dist/utils/isSnowflake.js +4 -0
  71. package/dist/utils/isSnowflake.js.map +1 -0
  72. package/dist/utils/loadFile.d.ts +2 -0
  73. package/dist/utils/loadFile.d.ts.map +1 -0
  74. package/dist/utils/loadFile.js +32 -0
  75. package/dist/utils/loadFile.js.map +1 -0
  76. package/package.json +58 -0
  77. package/translationSchema.jsonc +114 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Mephisto5558
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,20 @@
1
+ # Command
2
+ [![Activity](https://img.shields.io/github/commit-activity/m/Mephisto5558/Command)](https://github.com/Mephisto5558/Command/pulse)
3
+ [![License](https://img.shields.io/github/license/Mephisto5558/Command)](https://github.com/Mephisto5558/Command/blob/main/LICENSE)
4
+ [![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=Mephisto5558_Command&metric=ncloc)](https://sonarcloud.io/component_measures?metric=ncloc&id=Mephisto5558_Command)
5
+ [![wakatime](https://wakatime.com/badge/github/Mephisto5558/Command.svg)](https://wakatime.com/badge/github/Mephisto5558/Command)<br>
6
+ [![npm version](https://badge.fury.io/js/@mephisto5558%2Fmongoose-db.svg)](https://www.npmjs.com/package/@mephisto5558/command)
7
+ [![npm downloads](https://img.shields.io/npm/dm/%40mephisto5558%2Fmongoose-db)](https://www.npmjs.com/package/@mephisto5558/command)<br>
8
+ [![CodeQL](https://github.com/Mephisto5558/Command/actions/workflows/github-code-scanning/codeql/badge.svg)](https://github.com/Mephisto5558/Command/actions/workflows/github-code-scanning/codeql)
9
+ [![ESLint](https://github.com/Mephisto5558/Command/actions/workflows/eslint.yml/badge.svg?branch=main)](https://github.com/Mephisto5558/Command/actions/workflows/eslint.yml)
10
+ [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=Mephisto5558_Command&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=Mephisto5558_Command)<br>
11
+ [![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=Mephisto5558_Command&metric=security_rating)](https://sonarcloud.io/component_measures?metric=Security&id=Mephisto5558_Command)
12
+ [![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=Mephisto5558_Command&metric=sqale_rating)](https://sonarcloud.io/component_measures?metric=Maintainability&id=Mephisto5558_Command)
13
+ [![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=Mephisto5558_Command&metric=reliability_rating)](https://sonarcloud.io/component_measures?metric=Reliability&id=Mephisto5558_Command)
14
+ [![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=Mephisto5558_Command&metric=duplicated_lines_density)](https://sonarcloud.io/component_measures?metric=Duplications&id=Mephisto5558_Command)<br>
15
+ [![Bugs](https://sonarcloud.io/api/project_badges/measure?project=Mephisto5558_Command&metric=bugs)](https://sonarcloud.io/summary/new_code?id=Mephisto5558_Command)
16
+ [![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=Mephisto5558_Command&metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=Mephisto5558_Command)
17
+ [![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=Mephisto5558_Command&metric=code_smells)](https://sonarcloud.io/summary/new_code?id=Mephisto5558_Command)
18
+ [![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=Mephisto5558_Command&metric=sqale_index)](https://sonarcloud.io/summary/new_code?id=Mephisto5558_Command)
19
+
20
+ [![Discord Server](https://discord.com/api/guilds/1011956895529041950/widget.png?style=shield)](https://discord.com/invite/yWwGTeppjR)
@@ -0,0 +1,99 @@
1
+ import * as Discord from 'discord.js';
2
+ import { ContextType, CooldownType, PermissionType } from '../../index.ts';
3
+ import { CommandOption, CommandOptionUninitialized } from '../commandOption/index.ts';
4
+ import { CommandType } from '../utils.ts';
5
+ import type { I18nProvider, Locale, Translator } from '@mephisto5558/i18n';
6
+ import type { AllContexts, ChatInputCommandInteraction, Message, MessageComponentInteraction, OptionsG } from '../../index.ts';
7
+ import type { CommandOptionConfig } from '../commandOption/utils.ts';
8
+ import type { CommandConfig, CommandMention, DeepOptions, ResolvedOption } from './utils.ts';
9
+ export declare class Command<const CT extends readonly CommandType[] = readonly [], const CTX extends AllContexts = readonly [ContextType.Guild], const Options extends OptionsG<CT, CTX> = readonly CommandOptionConfig<CT, CTX>[]> {
10
+ #private;
11
+ name: Lowercase<string>;
12
+ id: `commands.${Command['category']}.${Command['name']}`;
13
+ commandId?: [CommandType.Slash] extends NoInfer<CT> ? Snowflake : never;
14
+ nameLocalizations?: Partial<Record<Locale, Command['name']>>;
15
+ description: string;
16
+ descriptionLocalizations: Partial<Record<Locale, string>>;
17
+ category: Lowercase<string>;
18
+ readonly type = Discord.ApplicationCommandType.ChatInput;
19
+ types: CT;
20
+ usage: Record<'usage' | 'examples', string | undefined> & {};
21
+ usageLocalizations: Partial<Record<Locale, Command<NoInfer<CT>, NoInfer<CTX>>['usage']>>;
22
+ aliases: Record<NoInfer<CT>[number], Command['name'][]>;
23
+ cooldowns: Record<CooldownType, number>;
24
+ permissions: Record<PermissionType, Discord.PermissionFlags[keyof Discord.PermissionFlags][]>;
25
+ get defaultMemberPermissions(): Discord.PermissionsBitField['bitfield'];
26
+ contexts: CTX;
27
+ disabled: boolean;
28
+ disabledReason: string | undefined;
29
+ noDefer: boolean;
30
+ ephemeralDefer: boolean;
31
+ beta: boolean;
32
+ options: CommandOption<NoInfer<CT>, NoInfer<CTX>>[];
33
+ config: {
34
+ devIds: Set<`${bigint}`>;
35
+ devOnlyCategories: Set<Lowercase<string>>;
36
+ runBetaCommandsOnly: boolean;
37
+ replyOn: {
38
+ disabled: boolean;
39
+ nonBeta: boolean;
40
+ };
41
+ messagePrefixesArePreRemoved: boolean;
42
+ };
43
+ mention<SubCommandGroupName extends CommandOption['name'] | undefined = undefined, SubcommandName extends CommandOption['name'] | undefined = undefined>(subcommandGroup?: SubCommandGroupName, subcommand?: SubcommandName): CommandMention<SubCommandGroupName, SubcommandName, NoInfer<CT>>;
44
+ run: (this: ExtendsMultiMatch<CommandType, CT, [
45
+ [
46
+ CommandType.Slash,
47
+ ChatInputCommandInteraction<NoInfer<CTX>, NoInfer<Options>>
48
+ ],
49
+ [
50
+ CommandType.Component,
51
+ MessageComponentInteraction<NoInfer<CTX>> & {
52
+ commandName: Command['name'];
53
+ }
54
+ ],
55
+ [
56
+ CommandType.Prefix,
57
+ Message<NoInfer<CTX>>
58
+ ]
59
+ ]>, lang: Translator<false, Locale>, data: {
60
+ client: Discord.Client<true>;
61
+ command: Command<NoInfer<CT>, NoInfer<CTX>, NoInfer<Options>>;
62
+ }) => unknown;
63
+ runWrapper(interaction: ThisParameterType<this['run']>, i18n: I18nProvider, locale: Locale): Promise<void>;
64
+ findOption<O extends {
65
+ name: CommandOption['name'];
66
+ type?: CommandOption['type'];
67
+ } | {
68
+ name?: CommandOption['name'];
69
+ type: CommandOption['type'];
70
+ } | undefined>(option?: O, interaction?: ThisParameterType<Command<readonly [CommandType.Slash], NoInfer<CTX>>['run']>): IfExtendsStrict<O, undefined, {
71
+ ifTrue: If<IsEmptyArray<Options>, {
72
+ ifTrue: undefined;
73
+ ifFalse: CommandOption<NoInfer<CT>, NoInfer<CTX>>;
74
+ }>;
75
+ ifFalse: number extends Options['length'] ? ResolvedOption<NoInfer<CT>, NoInfer<CTX>, O> | undefined : Extract<DeepOptions<Options[number]>, O> extends infer E ? IfExtendsNever<E, {
76
+ ifTrue: undefined;
77
+ ifFalse: ResolvedOption<NoInfer<CT>, NoInfer<CTX>, E>;
78
+ }> : never;
79
+ }>;
80
+ isEqualTo(cmd?: Command<readonly CommandType[], AllContexts> | Discord.ApplicationCommand): boolean;
81
+ }
82
+ export declare class CommandUninitialized<const CT extends readonly CommandType[] = readonly [], const CTX extends AllContexts = readonly [ContextType.Guild], const Options extends OptionsG<CT, CTX> = readonly CommandOptionConfig<CT, CTX>[]> {
83
+ run: Command<NoInfer<CT>, NoInfer<CTX>, NoInfer<Options>>['run'];
84
+ options: CommandOptionUninitialized<NoInfer<CT>, NoInfer<CTX>>[];
85
+ usage: Command<NoInfer<CT>, NoInfer<CTX>, NoInfer<Options>>['usage'];
86
+ cooldowns: Command<NoInfer<CT>, NoInfer<CTX>, NoInfer<Options>>['cooldowns'];
87
+ permissions: Command<NoInfer<CT>, NoInfer<CTX>, NoInfer<Options>>['permissions'];
88
+ contexts: Command<NoInfer<CT>, NoInfer<CTX>, NoInfer<Options>>['contexts'];
89
+ disabled: Command<NoInfer<CT>, NoInfer<CTX>, NoInfer<Options>>['disabled'];
90
+ noDefer: Command<NoInfer<CT>, NoInfer<CTX>, NoInfer<Options>>['noDefer'];
91
+ ephemeralDefer: Command<NoInfer<CT>, NoInfer<CTX>, NoInfer<Options>>['ephemeralDefer'];
92
+ beta: Command<NoInfer<CT>, NoInfer<CTX>, NoInfer<Options>>['beta'];
93
+ aliases: Command<NoInfer<CT>, NoInfer<CTX>, NoInfer<Options>>['aliases'];
94
+ types: Command<NoInfer<CT>, NoInfer<CTX>, NoInfer<Options>>['types'];
95
+ disabledReason: Command<NoInfer<CT>, NoInfer<CTX>, NoInfer<Options>>['disabledReason'];
96
+ constructor(config: CommandConfig<CT, CTX, Options>);
97
+ init(...args: ConstructorParameters<typeof Command<CT, CTX, Options>> extends [unknown, ...infer R] ? R : never): Command<CT, CTX, Options>;
98
+ }
99
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/classes/command/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,378 @@
1
+ import * as Discord from 'discord.js';
2
+ import { toMS } from 'type-better-ms';
3
+ import { CommandExecutionError, ContextType, CooldownType, Permission, PermissionType } from "../../index.js";
4
+ import { descriptionMaxLength } from "../../utils/constants.js";
5
+ import { CooldownsManager } from "../../utils/index.js";
6
+ import { CommandOption, CommandOptionUninitialized } from "../commandOption/index.js";
7
+ import { CommandType, CommandValidationError, cooldownConverter, equal, isComponent, isInteraction, isMessage, isSlash, resolveCommandType } from "../utils.js";
8
+ const msInSeconds = toMS('1s'), CANNOT_SEND_MESSAGE_API_ERR = 50_007;
9
+ export class Command {
10
+ name;
11
+ id;
12
+ commandId;
13
+ nameLocalizations;
14
+ description;
15
+ descriptionLocalizations = {};
16
+ category;
17
+ type = Discord.ApplicationCommandType.ChatInput;
18
+ types;
19
+ usage;
20
+ usageLocalizations = {};
21
+ aliases;
22
+ cooldowns;
23
+ permissions;
24
+ get defaultMemberPermissions() {
25
+ return new Discord.PermissionsBitField(this.permissions[PermissionType.User]).bitfield;
26
+ }
27
+ contexts;
28
+ disabled;
29
+ disabledReason;
30
+ noDefer;
31
+ ephemeralDefer;
32
+ beta;
33
+ options;
34
+ config = {
35
+ devIds: new Set(), devOnlyCategories: new Set(),
36
+ runBetaCommandsOnly: false,
37
+ replyOn: { disabled: true, nonBeta: true },
38
+ messagePrefixesArePreRemoved: false
39
+ };
40
+ mention(subcommandGroup, subcommand) {
41
+ const path = [this.name, subcommandGroup, subcommand].filter(Boolean).join(' ');
42
+ return `</${path}:${this.commandId ?? 0}>`;
43
+ }
44
+ run;
45
+ #i18n;
46
+ #logger = console;
47
+ #doneFn;
48
+ #cooldownsManager;
49
+ #customPermissionChecks;
50
+ constructor(base, i18n, name, category, config = {}) {
51
+ this.#cooldownsManager = config.cooldownsManager ?? new CooldownsManager();
52
+ this.run = base.run;
53
+ this.usage = base.usage;
54
+ this.cooldowns = base.cooldowns;
55
+ this.permissions = base.permissions;
56
+ this.contexts = base.contexts;
57
+ this.disabled = base.disabled;
58
+ this.disabledReason = base.disabledReason;
59
+ this.noDefer = base.noDefer;
60
+ this.ephemeralDefer = base.ephemeralDefer;
61
+ this.beta = base.beta;
62
+ this.aliases = base.aliases;
63
+ this.types = base.types;
64
+ this.#i18n = i18n;
65
+ if (config.logger)
66
+ this.#logger = config.logger;
67
+ if (config.doneFn)
68
+ this.#doneFn = config.doneFn;
69
+ this.#customPermissionChecks = config.customPermissionChecks?.bind(this);
70
+ if (config.devIds)
71
+ this.config.devIds = config.devIds;
72
+ if (config.devOnlyCategories)
73
+ this.config.devOnlyCategories = config.devOnlyCategories;
74
+ this.config.runBetaCommandsOnly = !!config.runBetaCommandsOnly;
75
+ this.config.replyOn.disabled = !!config.replyOn?.disabled;
76
+ this.config.replyOn.nonBeta = !!config.replyOn?.nonBeta;
77
+ this.config.messagePrefixesArePreRemoved = !!config.messagePrefixesArePreRemoved;
78
+ this.name = name.toLowerCase();
79
+ this.category = category.toLowerCase();
80
+ this.id = `commands.${this.category}.${this.name}`;
81
+ this.options = base.options.map((e, i) => e.init(i18n, this.id, this.#cooldownsManager, this.#logger, i));
82
+ this.#validate();
83
+ this.#localize();
84
+ }
85
+ #validate() {
86
+ if (this.disabled) {
87
+ if (this.disabledReason)
88
+ return;
89
+ throw new CommandValidationError('A disabled command requires a disabledReason!', this);
90
+ }
91
+ if (!['function', 'async function', 'async run(', 'run('].some(e => String(this.run).startsWith(e)))
92
+ throw new CommandValidationError(`The "run" method of command "${this.id}" is an arrow function! You cannot use arrow functions!`, this);
93
+ CommandOption.validateOptionOrder(this);
94
+ }
95
+ #localize() {
96
+ for (const [locale] of this.#i18n.availableLocales) {
97
+ const requiredTranslator = this.#i18n.getTranslator({ locale, errorNotFound: true, backupPaths: [this.id] }), optionalTranslator = this.#i18n.getTranslator({ locale, undefinedNotFound: true, backupPaths: [this.id] }), localizedDescription = locale == this.#i18n.config.defaultLocale ? optionalTranslator('description') : requiredTranslator('description');
98
+ if (!localizedDescription) {
99
+ if (!this.disabled)
100
+ this.#logger.warn(`Missing "${locale}" description for command "${this.name}" (${this.id}.description)`);
101
+ }
102
+ else if (localizedDescription.length > descriptionMaxLength && !this.disabled)
103
+ this.#logger.warn(`"${locale}" description for command "${this.name}" (${this.id}.description) is too long (max length is 100)! Slicing.`);
104
+ if (localizedDescription) {
105
+ if (locale == this.#i18n.config.defaultLocale)
106
+ this.description = localizedDescription.slice(0, descriptionMaxLength);
107
+ else
108
+ this.descriptionLocalizations[locale] = localizedDescription.slice(0, descriptionMaxLength);
109
+ }
110
+ const localizedUsage = {
111
+ usage: this.usage.usage ?? optionalTranslator('usage.usage'),
112
+ examples: this.usage.examples ?? optionalTranslator('usage.examples')
113
+ };
114
+ localizedUsage.usage &&= `{prefix}{cmdName} ${localizedUsage.usage}`.replaceAll('{cmdName}', this.name);
115
+ localizedUsage.examples &&= `{prefix}{cmdName} ${localizedUsage.examples}`.replaceAll('{cmdName}', this.name);
116
+ if (locale == this.#i18n.config.defaultLocale)
117
+ this.usage = localizedUsage;
118
+ else
119
+ this.usageLocalizations[locale] = localizedUsage;
120
+ }
121
+ }
122
+ async runWrapper(interaction, i18n, locale) {
123
+ const wrapperTranslator = i18n.getTranslator({ locale, backupPaths: ['events.command'] }), commandTranslator = i18n.getTranslator({ locale, backupPaths: [this.id] }), errorKey = await this.#isRunable(interaction, wrapperTranslator);
124
+ if (errorKey === true)
125
+ return;
126
+ if (errorKey !== false) {
127
+ return interaction.reply({
128
+ embeds: [new Discord.EmbedBuilder({ description: wrapperTranslator(...errorKey), color: Discord.Colors.Red })],
129
+ flags: Discord.MessageFlags.Ephemeral
130
+ });
131
+ }
132
+ if (isComponent(interaction))
133
+ interaction.commandName = this.name;
134
+ const commandType = resolveCommandType(interaction);
135
+ this.#logger.debug(`Executing ${commandType} command ${this.name}`);
136
+ if (isSlash(interaction) && !this.noDefer && !interaction.replied)
137
+ await interaction.deferReply({ flags: this.ephemeralDefer ? Discord.MessageFlags.Ephemeral : undefined });
138
+ try {
139
+ await this.run.call(interaction, commandTranslator, { client: interaction.client, command: this });
140
+ await this.#doneFn?.call(interaction, this, commandTranslator);
141
+ }
142
+ catch (err) {
143
+ throw new CommandExecutionError(Error.isError(err) ? err.message : JSON.stringify(err), interaction, wrapperTranslator, { cause: err });
144
+ }
145
+ }
146
+ #updateCooldowns(interaction) {
147
+ const currentCooldowns = [this.#cooldownsManager.update(this.id, interaction, this.cooldowns)], { group, subcommand } = this.#getSubcommandNames(interaction) ?? {};
148
+ if (group) {
149
+ const groupOption = this.options.find(e => e.name == group && e.type == Discord.ApplicationCommandOptionType.SubcommandGroup);
150
+ if (groupOption) {
151
+ if (Object.values(groupOption.cooldowns).some(Boolean))
152
+ currentCooldowns.push(groupOption.updateCooldowns(interaction));
153
+ if (subcommand) {
154
+ const subOption = groupOption.options?.find(e => e.name == subcommand && e.type == Discord.ApplicationCommandOptionType.Subcommand);
155
+ if (subOption && Object.values(subOption.cooldowns).some(Boolean))
156
+ currentCooldowns.push(subOption.updateCooldowns(interaction));
157
+ }
158
+ }
159
+ }
160
+ else if (subcommand) {
161
+ const subOption = this.options.find(e => e.name == subcommand && e.type == Discord.ApplicationCommandOptionType.Subcommand);
162
+ if (subOption && Object.values(subOption.cooldowns).some(Boolean))
163
+ currentCooldowns.push(subOption.updateCooldowns(interaction));
164
+ }
165
+ return Math.max(0, ...currentCooldowns);
166
+ }
167
+ #getSubcommandNames(interaction) {
168
+ if (isSlash(interaction)) {
169
+ if (!interaction.options.getSubcommand(false))
170
+ return;
171
+ return { group: interaction.options.getSubcommandGroup(false) ?? undefined, subcommand: interaction.options.getSubcommand(true) };
172
+ }
173
+ if (isComponent(interaction))
174
+ return;
175
+ if (isMessage(interaction)) {
176
+ const args = interaction.content.split(/\s+/).slice(this.config.messagePrefixesArePreRemoved ? 0 : 1), option1 = this.options.find(e => e.name == args[0]);
177
+ if (option1?.type == Discord.ApplicationCommandOptionType.Subcommand)
178
+ return { group: undefined, subcommand: option1.name };
179
+ if (option1?.type == Discord.ApplicationCommandOptionType.SubcommandGroup) {
180
+ const subcommand = option1.options?.find(e => e.name == args[1] && e.type == Discord.ApplicationCommandOptionType.Subcommand);
181
+ if (subcommand)
182
+ return { group: option1.name, subcommand: subcommand.name };
183
+ }
184
+ }
185
+ }
186
+ async #permissionChecks(interaction, author, wrapperTranslator) {
187
+ if (!(interaction.inGuild() && interaction.guild && interaction.channel))
188
+ return false;
189
+ const botChannelPerms = interaction.guild.members.me ? interaction.channel.permissionsFor(interaction.guild.members.me) : undefined, userPermsMissing = interaction.channel.permissionsFor(author)?.missing(this.permissions[PermissionType.User]) ?? [], botPermsMissing = botChannelPerms?.missing(this.permissions[PermissionType.Client]);
190
+ if (!botPermsMissing?.length && !userPermsMissing.length)
191
+ return false;
192
+ const embed = new Discord.EmbedBuilder({
193
+ title: wrapperTranslator('permissionDenied.embedTitle'),
194
+ description: wrapperTranslator(`permissionDenied.embedDescription${botPermsMissing?.length ? 'Bot' : 'User'}`, {
195
+ permissions: (botPermsMissing?.length ? botPermsMissing : userPermsMissing).map(perm => Discord.inlineCode(this.#i18n.__({ locale: wrapperTranslator.config.locale ?? wrapperTranslator.defaultConfig.defaultLocale, undefinedNotFound: true }, `others.Perms.${perm}`) ?? perm)).join(', ')
196
+ }),
197
+ color: Discord.Colors.Red
198
+ });
199
+ if (botChannelPerms?.missing([Permission.SendMessages, Permission.ViewChannel]).length) {
200
+ if (isMessage(interaction) && botChannelPerms.has(Permission.AddReactions))
201
+ void interaction.react('\u274C').then(() => void interaction.react('\u270D\uFE0F'));
202
+ try {
203
+ await author.send({ content: isMessage(interaction) ? interaction.url : '', embeds: [embed] });
204
+ }
205
+ catch (err) {
206
+ if (!(Error.isError(err) && 'code' in err) || err.code != CANNOT_SEND_MESSAGE_API_ERR)
207
+ throw err;
208
+ }
209
+ }
210
+ else if (isInteraction(interaction))
211
+ await (interaction.isRepliable() ? interaction.reply({ embeds: [embed], ephemeral: true }) : interaction.channel.send({ embeds: [embed] }));
212
+ else
213
+ await interaction.reply({ embeds: [embed] });
214
+ return true;
215
+ }
216
+ async #isRunable(interaction, wrapperTranslator) {
217
+ const author = isInteraction(interaction) ? interaction.user : interaction.author, args = isMessage(interaction) ? interaction.content.split(/\s+/).slice(this.config.messagePrefixesArePreRemoved ? 0 : 1) : undefined, staticErr = this.#staticRunnableChecks(interaction, author);
218
+ if (staticErr)
219
+ return staticErr;
220
+ if (interaction.inGuild()) {
221
+ const err = await this.#permissionChecks(interaction, author, wrapperTranslator);
222
+ if (err)
223
+ return err;
224
+ }
225
+ if (this.#customPermissionChecks) {
226
+ const customErr = await this.#customPermissionChecks(interaction, author, wrapperTranslator);
227
+ if (customErr)
228
+ return customErr;
229
+ }
230
+ const activeOption = this.#resolveActiveOption(interaction, args);
231
+ for (const option of activeOption ? [activeOption] : this.options) {
232
+ const err = await option.isRunable(interaction, this, wrapperTranslator, args?.slice(activeOption && isMessage(interaction) ? 1 : 0));
233
+ if (err)
234
+ return err;
235
+ }
236
+ if (!this.config.runBetaCommandsOnly) {
237
+ const cooldown = this.#updateCooldowns(interaction);
238
+ if (cooldown)
239
+ return ['cooldown', Discord.inlineCode(Math.round(cooldown / msInSeconds).toString())];
240
+ }
241
+ return false;
242
+ }
243
+ #staticRunnableChecks(interaction, author) {
244
+ if (this.config.devOnlyCategories.has(this.category) && !this.config.devIds.has(author.id)
245
+ || (isMessage(interaction) && interaction.guild?.members.me?.communicationDisabledUntil))
246
+ return true;
247
+ if (this.config.runBetaCommandsOnly && !this.beta)
248
+ return this.config.replyOn.nonBeta ? ['nonBeta'] : true;
249
+ if (this.disabled)
250
+ return this.config.replyOn.disabled ? ['disabled', this.disabledReason] : true;
251
+ if (isMessage(interaction) && !this.types.includes(CommandType.Prefix))
252
+ return ['slashOnly', this.mention()];
253
+ if (!this.contexts.includes(ContextType.BotDM) && interaction.channel?.type == Discord.ChannelType.DM)
254
+ return ['guildOnly'];
255
+ if (this.category == 'nsfw' && interaction.channel && (!('nsfw' in interaction.channel) || !interaction.channel.nsfw))
256
+ return ['nsfw'];
257
+ return false;
258
+ }
259
+ #resolveActiveOption(interaction, args) {
260
+ if (isSlash(interaction)) {
261
+ const group = interaction.options.getSubcommandGroup(false);
262
+ if (group)
263
+ return this.options.find(e => e.name == group);
264
+ const subcommand = interaction.options.getSubcommand(false);
265
+ if (subcommand)
266
+ return this.options.find(e => e.name == subcommand);
267
+ }
268
+ else {
269
+ return this.options.find(e => (!args || e.name == args[0])
270
+ && [Discord.ApplicationCommandOptionType.Subcommand, Discord.ApplicationCommandOptionType.SubcommandGroup].includes(e.type));
271
+ }
272
+ }
273
+ findOption(option, interaction) {
274
+ const group = interaction?.options.getSubcommandGroup(false), subcommand = interaction?.options.getSubcommand(false);
275
+ let options = this.options;
276
+ if (group)
277
+ options = this.options.find(e => e.name == group)?.options ?? [];
278
+ if (subcommand)
279
+ options = options.find(e => e.name == subcommand)?.options ?? [];
280
+ return options.find(e => (!option?.name || e.name == option.name) && (!option?.type || e.type == option.type));
281
+ }
282
+ isEqualTo(cmd) {
283
+ if (!cmd)
284
+ return false;
285
+ if (this.name != cmd.name || this.description != cmd.description || this.type != cmd.type
286
+ || this.defaultMemberPermissions != (cmd.defaultMemberPermissions instanceof Discord.PermissionsBitField ? cmd.defaultMemberPermissions.bitfield : cmd.defaultMemberPermissions)
287
+ || !equal(this.contexts, cmd.contexts)
288
+ || !equal(this.nameLocalizations, cmd.nameLocalizations)
289
+ || !equal(this.descriptionLocalizations, cmd.descriptionLocalizations))
290
+ return false;
291
+ if (this.options.length != cmd.options.length)
292
+ return false;
293
+ if (this.options.length) {
294
+ for (const option of this.options) {
295
+ const other = cmd.options.find(e => e.name == option.name);
296
+ if (!other || !option.isEqualTo(other))
297
+ return false;
298
+ }
299
+ }
300
+ return true;
301
+ }
302
+ clone() {
303
+ return new CommandUninitialized(this);
304
+ }
305
+ }
306
+ export class CommandUninitialized {
307
+ run;
308
+ options = [];
309
+ usage = { usage: undefined, examples: undefined };
310
+ cooldowns = Object.fromEntries(Object.values(CooldownType).map(e => [e, 0]));
311
+ permissions = {
312
+ ...Object.fromEntries(Object.values(PermissionType).map(e => [e, []])),
313
+ [PermissionType.Client]: [Permission.ViewChannel, Permission.SendMessages],
314
+ [PermissionType.User]: [Permission.SendMessages]
315
+ };
316
+ contexts = [ContextType.Guild];
317
+ disabled = false;
318
+ noDefer = false;
319
+ ephemeralDefer = false;
320
+ beta = false;
321
+ aliases;
322
+ types = [];
323
+ disabledReason;
324
+ constructor(config) {
325
+ this.run = config.run;
326
+ if (config instanceof Command) {
327
+ for (const key of Object.getOwnPropertyNames(config)) {
328
+ const descriptor = Object.getOwnPropertyDescriptor(config, key)
329
+ ?? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(config), key);
330
+ if (!descriptor || descriptor.get || descriptor.writable === false)
331
+ continue;
332
+ const value = config[key];
333
+ if (key == 'options')
334
+ this.options = value.map(opt => opt.clone());
335
+ else if (value && typeof value == 'object' && typeof value != 'function')
336
+ this[key] = Array.isArray(value) ? [...value] : { ...value };
337
+ else
338
+ this[key] = value;
339
+ }
340
+ return;
341
+ }
342
+ if ('usage' in config) {
343
+ if (config.usage.usage)
344
+ this.usage.usage = config.usage.usage;
345
+ if (config.usage.examples)
346
+ this.usage.examples = config.usage.examples;
347
+ }
348
+ if ('cooldowns' in config) {
349
+ this.cooldowns = Object.fromEntries(Object.entries(this.cooldowns).map(([k, v]) => cooldownConverter(config.cooldowns, k, v)));
350
+ }
351
+ if ('permissions' in config) {
352
+ for (const permissionType of Object.values(PermissionType))
353
+ if (config.permissions[permissionType])
354
+ this.permissions[permissionType].push(...config.permissions[permissionType]);
355
+ }
356
+ if ('contexts' in config)
357
+ this.contexts = config.contexts;
358
+ if ('disabled' in config)
359
+ this.disabled = config.disabled;
360
+ if ('noDefer' in config)
361
+ this.noDefer = config.noDefer;
362
+ if ('ephemeralDefer' in config)
363
+ this.ephemeralDefer = config.ephemeralDefer;
364
+ if ('options' in config) {
365
+ this.options = config.options
366
+ .map(opt => (opt instanceof CommandOption ? opt : new CommandOptionUninitialized(opt)));
367
+ }
368
+ if (config.beta)
369
+ this.beta = config.beta;
370
+ this.aliases = Object.fromEntries(config.types.map((e) => [e, config.aliases?.[e] ?? []]));
371
+ this.types = config.types;
372
+ this.disabledReason = config.disabledReason;
373
+ }
374
+ init(...args) {
375
+ return new Command(this, ...args);
376
+ }
377
+ }
378
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/classes/command/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type * as Discord from 'discord.js';
2
+ import type { AllContexts, CommandInitialized as Command, CommandOptionInitialized as CommandOption, OptionsG, PermissionType, SharedConfig } from '../../index.ts';
3
+ import type { PrimitiveCommandOptionConfig, RunnableReturns as OptionRunnableReturns } from '../commandOption/utils.ts';
4
+ import type { CommandType } from '../utils.ts';
5
+ export type RunnableReturns = ['nonBeta'] | ['disabled', string] | ['slashOnly', ReturnType<Command['mention']>] | ['guildOnly'] | ['nsfw'] | ['cooldown', string] | OptionRunnableReturns;
6
+ type Space<T extends string | undefined> = T extends string ? ` ${T}` : '';
7
+ export type CommandMention<Group extends string | undefined, Subcommand extends string | undefined, CT extends readonly CommandType[] = CommandType[], Name extends Command['name'] = Command['name'], Id extends NonNullable<Command<NoInfer<CT>>['commandId']> | bigint = NonNullable<Command<NoInfer<CT>>['commandId']> | bigint> = `</${Name}${Space<Group>}${Space<Subcommand>}:${Id}>`;
8
+ export interface CommandConfig<CT extends readonly CommandType[], CTX extends AllContexts, Options extends OptionsG<CT, CTX> = readonly PrimitiveCommandOptionConfig<CT, CTX>[]> extends SharedConfig<CTX> {
9
+ types: CT;
10
+ usage?: {
11
+ usage?: string;
12
+ examples?: string;
13
+ };
14
+ aliases?: {
15
+ [K in NoInfer<CT>[number]]?: Command['name'][];
16
+ };
17
+ permissions?: Partial<Record<PermissionType, Discord.PermissionFlags[keyof Discord.PermissionFlags][]>>;
18
+ options?: Options;
19
+ noDefer?: boolean;
20
+ ephemeralDefer?: boolean;
21
+ beta?: true;
22
+ run: Command<NoInfer<CT>, NoInfer<CTX>, NoInfer<Options>>['run'];
23
+ }
24
+ export type DeepOptions<T> = T extends {
25
+ options: readonly (infer U)[];
26
+ } ? T | DeepOptions<U> : T;
27
+ export type ResolvedOption<CT extends readonly CommandType[], CTX extends AllContexts, E> = StrictOmit<CommandOption<NoInfer<CT>, NoInfer<CTX>>, keyof E & keyof CommandOption> & E;
28
+ export {};
29
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/classes/command/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/classes/command/utils.ts"],"names":[],"mappings":""}