@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.
- package/LICENSE +21 -0
- package/README.md +20 -0
- package/dist/classes/command/index.d.ts +99 -0
- package/dist/classes/command/index.d.ts.map +1 -0
- package/dist/classes/command/index.js +378 -0
- package/dist/classes/command/index.js.map +1 -0
- package/dist/classes/command/utils.d.ts +29 -0
- package/dist/classes/command/utils.d.ts.map +1 -0
- package/dist/classes/command/utils.js +2 -0
- package/dist/classes/command/utils.js.map +1 -0
- package/dist/classes/commandManager/index.d.ts +43 -0
- package/dist/classes/commandManager/index.d.ts.map +1 -0
- package/dist/classes/commandManager/index.js +186 -0
- package/dist/classes/commandManager/index.js.map +1 -0
- package/dist/classes/commandOption/index.d.ts +124 -0
- package/dist/classes/commandOption/index.d.ts.map +1 -0
- package/dist/classes/commandOption/index.js +378 -0
- package/dist/classes/commandOption/index.js.map +1 -0
- package/dist/classes/commandOption/utils.d.ts +145 -0
- package/dist/classes/commandOption/utils.d.ts.map +1 -0
- package/dist/classes/commandOption/utils.js +3 -0
- package/dist/classes/commandOption/utils.js.map +1 -0
- package/dist/classes/utils.d.ts +42 -0
- package/dist/classes/utils.d.ts.map +1 -0
- package/dist/classes/utils.js +81 -0
- package/dist/classes/utils.js.map +1 -0
- package/dist/db.d.ts +22 -0
- package/dist/db.d.ts.map +1 -0
- package/dist/db.js +2 -0
- package/dist/db.js.map +1 -0
- package/dist/discord.js.d.ts +172 -0
- package/dist/discord.js.d.ts.map +1 -0
- package/dist/discord.js.js +2 -0
- package/dist/discord.js.js.map +1 -0
- package/dist/index.d.ts +71 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/utils/CooldownsManager.d.ts +8 -0
- package/dist/utils/CooldownsManager.d.ts.map +1 -0
- package/dist/utils/CooldownsManager.js +39 -0
- package/dist/utils/CooldownsManager.js.map +1 -0
- package/dist/utils/capitalize.d.ts +2 -0
- package/dist/utils/capitalize.d.ts.map +1 -0
- package/dist/utils/capitalize.js +4 -0
- package/dist/utils/capitalize.js.map +1 -0
- package/dist/utils/constants.d.ts +2 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +2 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/getCommands.d.ts +18 -0
- package/dist/utils/getCommands.d.ts.map +1 -0
- package/dist/utils/getCommands.js +36 -0
- package/dist/utils/getCommands.js.map +1 -0
- package/dist/utils/getDirectories.d.ts +2 -0
- package/dist/utils/getDirectories.d.ts.map +1 -0
- package/dist/utils/getDirectories.js +5 -0
- package/dist/utils/getDirectories.js.map +1 -0
- package/dist/utils/getFilename.d.ts +5 -0
- package/dist/utils/getFilename.d.ts.map +1 -0
- package/dist/utils/getFilename.js +5 -0
- package/dist/utils/getFilename.js.map +1 -0
- package/dist/utils/index.d.ts +9 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +9 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/isSnowflake.d.ts +2 -0
- package/dist/utils/isSnowflake.d.ts.map +1 -0
- package/dist/utils/isSnowflake.js +4 -0
- package/dist/utils/isSnowflake.js.map +1 -0
- package/dist/utils/loadFile.d.ts +2 -0
- package/dist/utils/loadFile.d.ts.map +1 -0
- package/dist/utils/loadFile.js +32 -0
- package/dist/utils/loadFile.js.map +1 -0
- package/package.json +58 -0
- 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
|
+
[](https://github.com/Mephisto5558/Command/pulse)
|
|
3
|
+
[](https://github.com/Mephisto5558/Command/blob/main/LICENSE)
|
|
4
|
+
[](https://sonarcloud.io/component_measures?metric=ncloc&id=Mephisto5558_Command)
|
|
5
|
+
[](https://wakatime.com/badge/github/Mephisto5558/Command)<br>
|
|
6
|
+
[](https://www.npmjs.com/package/@mephisto5558/command)
|
|
7
|
+
[](https://www.npmjs.com/package/@mephisto5558/command)<br>
|
|
8
|
+
[](https://github.com/Mephisto5558/Command/actions/workflows/github-code-scanning/codeql)
|
|
9
|
+
[](https://github.com/Mephisto5558/Command/actions/workflows/eslint.yml)
|
|
10
|
+
[](https://sonarcloud.io/summary/new_code?id=Mephisto5558_Command)<br>
|
|
11
|
+
[](https://sonarcloud.io/component_measures?metric=Security&id=Mephisto5558_Command)
|
|
12
|
+
[](https://sonarcloud.io/component_measures?metric=Maintainability&id=Mephisto5558_Command)
|
|
13
|
+
[](https://sonarcloud.io/component_measures?metric=Reliability&id=Mephisto5558_Command)
|
|
14
|
+
[](https://sonarcloud.io/component_measures?metric=Duplications&id=Mephisto5558_Command)<br>
|
|
15
|
+
[](https://sonarcloud.io/summary/new_code?id=Mephisto5558_Command)
|
|
16
|
+
[](https://sonarcloud.io/summary/new_code?id=Mephisto5558_Command)
|
|
17
|
+
[](https://sonarcloud.io/summary/new_code?id=Mephisto5558_Command)
|
|
18
|
+
[](https://sonarcloud.io/summary/new_code?id=Mephisto5558_Command)
|
|
19
|
+
|
|
20
|
+
[](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 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/classes/command/utils.ts"],"names":[],"mappings":""}
|