@pikokr/command.ts 4.0.0-dev.fddc66b → 4.0.2-dev.3677025

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 (151) hide show
  1. package/.github/workflows/codeql-analysis.yml +70 -0
  2. package/.github/workflows/docs.yml +79 -0
  3. package/.github/workflows/publish.stable.yml +18 -0
  4. package/dist/index.d.ts +310 -10
  5. package/dist/index.js +1 -25
  6. package/dist/index.js.map +1 -1
  7. package/docs/index.yml +5 -0
  8. package/package.json +9 -4
  9. package/scripts/docs.ts +11 -0
  10. package/src/structures/Registry.ts +37 -12
  11. package/test/modules/dev.ts +1 -0
  12. package/tsconfig.json +1 -1
  13. package/tsup.config.ts +14 -0
  14. package/dist/applicationCommand/AppCommand.d.ts +0 -18
  15. package/dist/applicationCommand/AppCommand.js +0 -25
  16. package/dist/applicationCommand/AppCommand.js.map +0 -1
  17. package/dist/applicationCommand/decorator.d.ts +0 -10
  18. package/dist/applicationCommand/decorator.js +0 -42
  19. package/dist/applicationCommand/decorator.js.map +0 -1
  20. package/dist/applicationCommand/index.d.ts +0 -2
  21. package/dist/applicationCommand/index.js +0 -18
  22. package/dist/applicationCommand/index.js.map +0 -1
  23. package/dist/builtinModules/BuiltInModule.d.ts +0 -4
  24. package/dist/builtinModules/BuiltInModule.js +0 -16
  25. package/dist/builtinModules/BuiltInModule.js.map +0 -1
  26. package/dist/builtinModules/BuiltinApplicationCommandConverters.d.ts +0 -8
  27. package/dist/builtinModules/BuiltinApplicationCommandConverters.js +0 -16
  28. package/dist/builtinModules/BuiltinApplicationCommandConverters.js.map +0 -1
  29. package/dist/builtinModules/BuiltinCommandConverters.d.ts +0 -16
  30. package/dist/builtinModules/BuiltinCommandConverters.js +0 -130
  31. package/dist/builtinModules/BuiltinCommandConverters.js.map +0 -1
  32. package/dist/builtinModules/CommandHandler.d.ts +0 -14
  33. package/dist/builtinModules/CommandHandler.js +0 -360
  34. package/dist/builtinModules/CommandHandler.js.map +0 -1
  35. package/dist/builtinModules/index.d.ts +0 -3
  36. package/dist/builtinModules/index.js +0 -19
  37. package/dist/builtinModules/index.js.map +0 -1
  38. package/dist/command/ArgumentConverter.d.ts +0 -15
  39. package/dist/command/ArgumentConverter.js +0 -28
  40. package/dist/command/ArgumentConverter.js.map +0 -1
  41. package/dist/command/Command.d.ts +0 -20
  42. package/dist/command/Command.js +0 -25
  43. package/dist/command/Command.js.map +0 -1
  44. package/dist/command/cooldown/adapter.d.ts +0 -10
  45. package/dist/command/cooldown/adapter.js +0 -34
  46. package/dist/command/cooldown/adapter.js.map +0 -1
  47. package/dist/command/cooldown/decorator.d.ts +0 -2
  48. package/dist/command/cooldown/decorator.js +0 -76
  49. package/dist/command/cooldown/decorator.js.map +0 -1
  50. package/dist/command/cooldown/error.d.ts +0 -4
  51. package/dist/command/cooldown/error.js +0 -14
  52. package/dist/command/cooldown/error.js.map +0 -1
  53. package/dist/command/cooldown/index.d.ts +0 -5
  54. package/dist/command/cooldown/index.js +0 -21
  55. package/dist/command/cooldown/index.js.map +0 -1
  56. package/dist/command/cooldown/type.d.ts +0 -8
  57. package/dist/command/cooldown/type.js +0 -16
  58. package/dist/command/cooldown/type.js.map +0 -1
  59. package/dist/command/decorator.d.ts +0 -17
  60. package/dist/command/decorator.js +0 -141
  61. package/dist/command/decorator.js.map +0 -1
  62. package/dist/command/index.d.ts +0 -5
  63. package/dist/command/index.js +0 -21
  64. package/dist/command/index.js.map +0 -1
  65. package/dist/command/utils.d.ts +0 -2
  66. package/dist/command/utils.js +0 -33
  67. package/dist/command/utils.js.map +0 -1
  68. package/dist/constants.d.ts +0 -14
  69. package/dist/constants.js +0 -21
  70. package/dist/constants.js.map +0 -1
  71. package/dist/error/ArgumentConverterNotFound.d.ts +0 -13
  72. package/dist/error/ArgumentConverterNotFound.js +0 -23
  73. package/dist/error/ArgumentConverterNotFound.js.map +0 -1
  74. package/dist/error/ArgumentNotProvided.d.ts +0 -8
  75. package/dist/error/ArgumentNotProvided.js +0 -16
  76. package/dist/error/ArgumentNotProvided.js.map +0 -1
  77. package/dist/error/CommandCheckFailed.d.ts +0 -13
  78. package/dist/error/CommandCheckFailed.js +0 -23
  79. package/dist/error/CommandCheckFailed.js.map +0 -1
  80. package/dist/error/CommandNotFound.d.ts +0 -7
  81. package/dist/error/CommandNotFound.js +0 -16
  82. package/dist/error/CommandNotFound.js.map +0 -1
  83. package/dist/error/InvalidTargetError.d.ts +0 -3
  84. package/dist/error/InvalidTargetError.js +0 -13
  85. package/dist/error/InvalidTargetError.js.map +0 -1
  86. package/dist/error/ModuleError.d.ts +0 -6
  87. package/dist/error/ModuleError.js +0 -17
  88. package/dist/error/ModuleError.js.map +0 -1
  89. package/dist/error/PermissionRequired.d.ts +0 -10
  90. package/dist/error/PermissionRequired.js +0 -22
  91. package/dist/error/PermissionRequired.js.map +0 -1
  92. package/dist/error/checks/DMOnlyCommand.d.ts +0 -3
  93. package/dist/error/checks/DMOnlyCommand.js +0 -13
  94. package/dist/error/checks/DMOnlyCommand.js.map +0 -1
  95. package/dist/error/checks/GuildOnlyCommand.d.ts +0 -3
  96. package/dist/error/checks/GuildOnlyCommand.js +0 -13
  97. package/dist/error/checks/GuildOnlyCommand.js.map +0 -1
  98. package/dist/error/checks/OwnerOnlyCommand.d.ts +0 -3
  99. package/dist/error/checks/OwnerOnlyCommand.js +0 -13
  100. package/dist/error/checks/OwnerOnlyCommand.js.map +0 -1
  101. package/dist/error/checks/SlashCommandGlobalCheckError.d.ts +0 -5
  102. package/dist/error/checks/SlashCommandGlobalCheckError.js +0 -14
  103. package/dist/error/checks/SlashCommandGlobalCheckError.js.map +0 -1
  104. package/dist/error/checks/index.d.ts +0 -3
  105. package/dist/error/checks/index.js +0 -19
  106. package/dist/error/checks/index.js.map +0 -1
  107. package/dist/error/index.d.ts +0 -7
  108. package/dist/error/index.js +0 -23
  109. package/dist/error/index.js.map +0 -1
  110. package/dist/interface/index.d.ts +0 -1
  111. package/dist/interface/index.js +0 -6
  112. package/dist/interface/index.js.map +0 -1
  113. package/dist/listener/Listener.d.ts +0 -5
  114. package/dist/listener/Listener.js +0 -14
  115. package/dist/listener/Listener.js.map +0 -1
  116. package/dist/listener/decorator.d.ts +0 -2
  117. package/dist/listener/decorator.js +0 -25
  118. package/dist/listener/decorator.js.map +0 -1
  119. package/dist/listener/index.d.ts +0 -2
  120. package/dist/listener/index.js +0 -18
  121. package/dist/listener/index.js.map +0 -1
  122. package/dist/messageComponents/base.d.ts +0 -10
  123. package/dist/messageComponents/base.js +0 -18
  124. package/dist/messageComponents/base.js.map +0 -1
  125. package/dist/messageComponents/button.d.ts +0 -5
  126. package/dist/messageComponents/button.js +0 -31
  127. package/dist/messageComponents/button.js.map +0 -1
  128. package/dist/messageComponents/index.d.ts +0 -2
  129. package/dist/messageComponents/index.js +0 -18
  130. package/dist/messageComponents/index.js.map +0 -1
  131. package/dist/messageComponents/selectMenu.d.ts +0 -5
  132. package/dist/messageComponents/selectMenu.js +0 -31
  133. package/dist/messageComponents/selectMenu.js.map +0 -1
  134. package/dist/structures/CommandClient.d.ts +0 -45
  135. package/dist/structures/CommandClient.js +0 -97
  136. package/dist/structures/CommandClient.js.map +0 -1
  137. package/dist/structures/Module.d.ts +0 -21
  138. package/dist/structures/Module.js +0 -41
  139. package/dist/structures/Module.js.map +0 -1
  140. package/dist/structures/Registry.d.ts +0 -30
  141. package/dist/structures/Registry.js +0 -229
  142. package/dist/structures/Registry.js.map +0 -1
  143. package/dist/structures/index.d.ts +0 -3
  144. package/dist/structures/index.js +0 -19
  145. package/dist/structures/index.js.map +0 -1
  146. package/dist/typings.d.ts +0 -30
  147. package/dist/typings.js +0 -6
  148. package/dist/typings.js.map +0 -1
  149. package/dist/utils.d.ts +0 -1
  150. package/dist/utils.js +0 -14
  151. package/dist/utils.js.map +0 -1
@@ -0,0 +1,70 @@
1
+ # For most projects, this workflow file will not need changing; you simply need
2
+ # to commit it to your repository.
3
+ #
4
+ # You may wish to alter this file to override the set of languages analyzed,
5
+ # or to provide custom queries or build logic.
6
+ #
7
+ # ******** NOTE ********
8
+ # We have attempted to detect the languages in your repository. Please check
9
+ # the `language` matrix defined below to confirm you have the correct set of
10
+ # supported CodeQL languages.
11
+ #
12
+ name: "CodeQL"
13
+
14
+ on:
15
+ push:
16
+ branches: [ dev ]
17
+ pull_request:
18
+ # The branches below must be a subset of the branches above
19
+ branches: [ dev ]
20
+ schedule:
21
+ - cron: '31 4 * * 2'
22
+
23
+ jobs:
24
+ analyze:
25
+ name: Analyze
26
+ runs-on: ubuntu-latest
27
+ permissions:
28
+ actions: read
29
+ contents: read
30
+ security-events: write
31
+
32
+ strategy:
33
+ fail-fast: false
34
+ matrix:
35
+ language: [ 'javascript' ]
36
+ # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
37
+ # Learn more about CodeQL language support at https://git.io/codeql-language-support
38
+
39
+ steps:
40
+ - name: Checkout repository
41
+ uses: actions/checkout@v2
42
+
43
+ # Initializes the CodeQL tools for scanning.
44
+ - name: Initialize CodeQL
45
+ uses: github/codeql-action/init@v1
46
+ with:
47
+ languages: ${{ matrix.language }}
48
+ # If you wish to specify custom queries, you can do so here or in a config file.
49
+ # By default, queries listed here will override any specified in a config file.
50
+ # Prefix the list here with "+" to use these queries and those in the config file.
51
+ # queries: ./path/to/local/query, your-org/your-repo/queries@main
52
+
53
+ # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
54
+ # If this step fails, then you should remove it and run the build manually (see below)
55
+ - name: Autobuild
56
+ uses: github/codeql-action/autobuild@v1
57
+
58
+ # ℹ️ Command-line programs to run using the OS shell.
59
+ # 📚 https://git.io/JvXDl
60
+
61
+ # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
62
+ # and modify them (or add more) to build your code if your project
63
+ # uses a compiled language
64
+
65
+ #- run: |
66
+ # make bootstrap
67
+ # make release
68
+
69
+ - name: Perform CodeQL Analysis
70
+ uses: github/codeql-action/analyze@v1
@@ -0,0 +1,79 @@
1
+ name: Documentation
2
+ on:
3
+ push:
4
+ branches:
5
+ - 'dev'
6
+ - 'master'
7
+ - '!docs'
8
+ tags:
9
+ - '*'
10
+ jobs:
11
+ build:
12
+ name: Build documentation
13
+ runs-on: ubuntu-latest
14
+ outputs:
15
+ BRANCH_NAME: ${{ steps.env.outputs.BRANCH_NAME }}
16
+ BRANCH_OR_TAG: ${{ steps.env.outputs.BRANCH_OR_TAG }}
17
+ SHA: ${{ steps.env.outputs.SHA }}
18
+ if: github.repository_owner == 'pikokr'
19
+ steps:
20
+ - name: Checkout repository
21
+ uses: actions/checkout@v2
22
+
23
+ - name: Install node.js v16
24
+ uses: actions/setup-node@v2
25
+ with:
26
+ node-version: 16
27
+ cache: 'yarn'
28
+ cache-dependency-path: yarn.lock
29
+ - name: Install dependencies
30
+ run: yarn --immutable
31
+
32
+ - name: Build docs
33
+ run: yarn docs
34
+
35
+ - name: Upload artifacts
36
+ uses: actions/upload-artifact@v2
37
+ with:
38
+ name: docs
39
+ path: docs/docs.json
40
+ - name: Set outputs for upload job
41
+ id: env
42
+ run: |
43
+ echo "::set-output name=BRANCH_NAME::${GITHUB_REF_NAME}"
44
+ echo "::set-output name=BRANCH_OR_TAG::${GITHUB_REF_TYPE}"
45
+ echo "::set-output name=SHA::${GITHUB_SHA}"
46
+ upload:
47
+ name: Upload Documentation
48
+ needs: build
49
+ runs-on: ubuntu-latest
50
+ env:
51
+ BRANCH_NAME: ${{ needs.build.outputs.BRANCH_NAME }}
52
+ BRANCH_OR_TAG: ${{ needs.build.outputs.BRANCH_OR_TAG }}
53
+ SHA: ${{ needs.build.outputs.SHA }}
54
+ steps:
55
+ - name: Download artifacts
56
+ uses: actions/download-artifact@v2
57
+ with:
58
+ name: docs
59
+ path: docs
60
+
61
+ - name: Checkout docs repository
62
+ uses: actions/checkout@v2
63
+ with:
64
+ repository: 'pikokr/docs'
65
+ token: ${{ secrets.PIKOKR_DOCS }}
66
+ path: 'out'
67
+
68
+ - name: Move docs to correct directory
69
+ run: |
70
+ mkdir -p out/command.ts
71
+ mv docs/docs.json out/command.ts/${BRANCH_NAME}.json
72
+ - name: Commit and push
73
+ run: |
74
+ cd out
75
+ git config user.name github-actions[bot]
76
+ git config user.email 41898282+github-actions[bot]@users.noreply.github.com
77
+ git add .
78
+ git commit -m "Docs build for ${BRANCH_OR_TAG} ${BRANCH_NAME}: ${SHA}" || true
79
+ git push
@@ -0,0 +1,18 @@
1
+ on:
2
+ push:
3
+ branches:
4
+ - stable
5
+
6
+ jobs:
7
+ publish:
8
+ runs-on: ubuntu-latest
9
+ if: "!contains(github.event.head_commit.message, '[skip ci]')"
10
+ steps:
11
+ - uses: actions/checkout@v1
12
+ - uses: actions/setup-node@v1
13
+ with:
14
+ node-version: 16.6
15
+ - run: yarn
16
+ - uses: JS-DevTools/npm-publish@v1
17
+ with:
18
+ token: ${{ secrets.NPM_TOKEN }}
package/dist/index.d.ts CHANGED
@@ -1,10 +1,310 @@
1
- import 'reflect-metadata';
2
- import './typings';
3
- export * from './interface';
4
- export * from './structures';
5
- export * from './error';
6
- export * from './command';
7
- export * from './listener';
8
- export * from './builtinModules/BuiltInModule';
9
- export * from './applicationCommand';
10
- export * from './messageComponents';
1
+ import * as tslog from 'tslog';
2
+ import { Logger } from 'tslog';
3
+ import { ApplicationCommandDataResolvable, Snowflake, MessageComponentInteraction, MessageComponentType, Collection, Message, CommandInteraction, Interaction, Client, ContextMenuInteraction, PermissionResolvable, GuildMember, Permissions } from 'discord.js';
4
+
5
+ declare class Listener {
6
+ name: string;
7
+ execute: Function;
8
+ constructor(name: string, execute: Function);
9
+ }
10
+
11
+ declare const listener: (event: string) => (target: Module, propertyKey: string) => void;
12
+
13
+ declare type ApplicationCommandOptions$1 = {
14
+ guild: Snowflake | Snowflake[];
15
+ optionTypes?: any[];
16
+ };
17
+ declare const applicationCommand: (opt: Partial<ApplicationCommandOptions$1> & {
18
+ command: ApplicationCommandDataResolvable;
19
+ }) => (target: Object, propertyKey: string) => void;
20
+ declare const option: (key: string) => ParameterDecorator;
21
+
22
+ declare type AppCommandArgument = {
23
+ type: any;
24
+ name?: string;
25
+ };
26
+ declare class AppCommand {
27
+ command: ApplicationCommandDataResolvable;
28
+ private run;
29
+ module: Module;
30
+ params: AppCommandArgument[];
31
+ guild: Snowflake | Snowflake[] | undefined;
32
+ private key;
33
+ get checks(): ApplicationCommandCheckFunction[];
34
+ execute(module: Module, args: any[]): any;
35
+ constructor(command: ApplicationCommandDataResolvable, run: Function, module: Module, params: AppCommandArgument[], guild: Snowflake | Snowflake[] | undefined, key: string | symbol);
36
+ }
37
+
38
+ declare type MessageComponentExecutor = (i: MessageComponentInteraction) => void | Promise<void>;
39
+ declare class MessageComponentHandler {
40
+ componentId: string;
41
+ componentType: Exclude<MessageComponentType, 'ACTION_ROW'>;
42
+ execute: MessageComponentExecutor;
43
+ constructor(componentId: string, componentType: Exclude<MessageComponentType, 'ACTION_ROW'>, execute: MessageComponentExecutor);
44
+ run(module: Module, i: MessageComponentInteraction): void | Promise<void>;
45
+ }
46
+
47
+ declare class Registry {
48
+ client: CommandClient;
49
+ constructor(client: CommandClient);
50
+ modules: Collection<symbol, Module>;
51
+ private get logger();
52
+ get commands(): Command[];
53
+ get argumentConverters(): ArgumentConverter[];
54
+ get applicationCommandArgumentConverters(): ApplicationCommandArgumentConverter[];
55
+ get applicationCommands(): AppCommand[];
56
+ get messageComponentHandlers(): MessageComponentHandler[];
57
+ registerModule(module: Module): Module;
58
+ loadModulesIn(dir: string, absolute?: boolean): Promise<void>;
59
+ loadModule(file: string, absolute?: boolean): Promise<Module>;
60
+ syncCommands(): Promise<void>;
61
+ unregisterModule(module: Module): Promise<Module>;
62
+ unloadModule(module: Module): Promise<void>;
63
+ reloadModule(module: Module): Promise<boolean>;
64
+ reloadAll(): Promise<{
65
+ path: string;
66
+ success: boolean;
67
+ error?: Error | undefined;
68
+ }[]>;
69
+ }
70
+
71
+ interface CommandOptions$1 {
72
+ prefix: string | ((msg: any) => string | Promise<string | string[]> | string[]) | string[];
73
+ check: (msg: Message) => boolean | Promise<boolean>;
74
+ globalAliases: (cmd: string, msg: Message) => string[] | Promise<string[]>;
75
+ }
76
+ interface SlashCommandOptions {
77
+ check: (i: CommandInteraction) => boolean | Promise<boolean>;
78
+ }
79
+ interface ApplicationCommandOptions {
80
+ guild?: Snowflake | Snowflake[];
81
+ autoSync: boolean;
82
+ beforeRunCheck: (i: Interaction) => void | Promise<void>;
83
+ }
84
+ interface CommandClientOptions {
85
+ command: CommandOptions$1;
86
+ owners: 'auto' | Snowflake[];
87
+ slashCommands: SlashCommandOptions;
88
+ applicationCommands: ApplicationCommandOptions;
89
+ }
90
+ interface CommandClientOptionsParam {
91
+ command: Partial<CommandOptions$1>;
92
+ owners: 'auto' | string[];
93
+ slashCommands: Partial<SlashCommandOptions>;
94
+ applicationCommands: Partial<ApplicationCommandOptions>;
95
+ }
96
+ declare class CommandClient {
97
+ options: CommandClientOptions;
98
+ owners: string[];
99
+ registry: Registry;
100
+ client: Client;
101
+ coolDownAdapter: CoolDownAdapter;
102
+ logger: Logger;
103
+ private _isReady;
104
+ private fetchOwners;
105
+ ready(): Promise<void>;
106
+ constructor({ client, coolDownAdapter, logger, ...options }: Partial<CommandClientOptionsParam> & {
107
+ client: Client;
108
+ coolDownAdapter?: CoolDownAdapter;
109
+ logger?: Logger;
110
+ });
111
+ }
112
+
113
+ declare abstract class Module {
114
+ commandClient: CommandClient;
115
+ get logger(): tslog.Logger;
116
+ get commands(): Command[];
117
+ get listeners(): Listener[];
118
+ get argumentConverters(): ArgumentConverter[];
119
+ get applicationCommandArgumentConverters(): ApplicationCommandArgumentConverter[];
120
+ get applicationCommands(): AppCommand[];
121
+ get messageComponentHandlers(): MessageComponentHandler[];
122
+ get path(): string | undefined;
123
+ load(): void;
124
+ unload(): void;
125
+ beforeReload(): void;
126
+ afterReload(): void;
127
+ }
128
+
129
+ declare type Argument = {
130
+ optional: boolean;
131
+ type: any;
132
+ rest: boolean;
133
+ };
134
+ declare type CheckFunction = (msg: Message) => boolean | Promise<boolean>;
135
+ declare type ApplicationCommandCheckFunction = (i: CommandInteraction | MessageComponentInteraction | ContextMenuInteraction) => boolean | Promise<boolean>;
136
+ declare class Command {
137
+ private run;
138
+ argTypes: Argument[];
139
+ name: string;
140
+ aliases: string[] | ((msg: Message) => string[] | Promise<string[]>);
141
+ module: Module;
142
+ key: symbol | string;
143
+ execute(module: Module, args: any[]): any;
144
+ get checks(): CheckFunction[];
145
+ constructor(run: Function, argTypes: Argument[], name: string, aliases: string[] | ((msg: Message) => string[] | Promise<string[]>), module: Module, key: symbol | string);
146
+ }
147
+
148
+ declare type CommandOptions = {
149
+ name: string;
150
+ aliases: string[] | ((msg: Message) => string[]);
151
+ optionTypes?: any[];
152
+ };
153
+ declare const command: (options?: Partial<CommandOptions>) => (target: Object, propertyKey: string) => void;
154
+ declare const argumentConverter: (type: object, requireParameter?: boolean) => (target: Object, propertyKey: string) => void;
155
+ declare const applicationCommandArgumentConverter: (type: object) => (target: Object, propertyKey: string) => void;
156
+ declare const optional: ParameterDecorator;
157
+ declare const rest: ParameterDecorator;
158
+ declare const ownerOnly: MethodDecorator;
159
+ declare const guildOnly: MethodDecorator;
160
+ declare const dmOnly: MethodDecorator;
161
+ declare const requireUserPermissions: (permission: PermissionResolvable) => MethodDecorator;
162
+ declare const requireClientPermissions: (permission: PermissionResolvable) => MethodDecorator;
163
+
164
+ declare class ArgumentConverter {
165
+ type: object;
166
+ private run;
167
+ withoutParameter: boolean;
168
+ execute(module: Module, msg: Message, arg?: string): any;
169
+ constructor(type: object, run: Function, withoutParameter: boolean);
170
+ }
171
+ declare class ApplicationCommandArgumentConverter {
172
+ type: object;
173
+ private run;
174
+ execute(module: Module, interaction: CommandInteraction | ContextMenuInteraction): any;
175
+ constructor(type: object, run: Function);
176
+ }
177
+
178
+ declare const createCheckDecorator: (execute: ((msg: Message) => boolean | Promise<boolean>) | null, executeApplicationCommand?: ((i: CommandInteraction | MessageComponentInteraction | ContextMenuInteraction) => boolean | Promise<boolean>) | undefined) => MethodDecorator;
179
+
180
+ declare enum CoolDownType {
181
+ USER = 0,
182
+ CHANNEL = 1,
183
+ GUILD = 2,
184
+ ROLE = 3,
185
+ CATEGORY = 4,
186
+ MEMBER = 5
187
+ }
188
+
189
+ declare const coolDown: (type: CoolDownType, seconds: number) => MethodDecorator;
190
+
191
+ interface CoolDownAdapter {
192
+ get(id: string): Promise<number | undefined>;
193
+ set(id: string, value: number): Promise<void>;
194
+ }
195
+ declare class DefaultCoolDownAdapter implements CoolDownAdapter {
196
+ map: Collection<string, number>;
197
+ get(id: string): Promise<number | undefined>;
198
+ set(id: string, value: number): Promise<void>;
199
+ }
200
+
201
+ declare class CoolDownError extends Error {
202
+ endsAt: Date;
203
+ constructor(endsAt: Date);
204
+ }
205
+
206
+ declare module 'discord.js' {
207
+ interface Message {
208
+ data: {
209
+ command: Command | null;
210
+ prefix: string;
211
+ cts: CommandClient;
212
+ };
213
+ }
214
+ interface CommandInteraction {
215
+ data: {
216
+ command: AppCommand;
217
+ cts: CommandClient;
218
+ };
219
+ }
220
+ interface MessageComponentInteraction {
221
+ data: {
222
+ command: AppCommand;
223
+ cts: CommandClient;
224
+ };
225
+ }
226
+ interface ContextMenuInteraction {
227
+ data: {
228
+ command: AppCommand;
229
+ cts: CommandClient;
230
+ };
231
+ }
232
+ }
233
+
234
+ declare class InvalidTargetError extends Error {
235
+ constructor();
236
+ }
237
+
238
+ declare class ModuleLoadError extends Error {
239
+ error: Error;
240
+ constructor(file: string, error: Error);
241
+ }
242
+ declare class InvalidModuleError extends Error {
243
+ }
244
+
245
+ declare class ArgumentNotProvided extends Error {
246
+ index: number;
247
+ command: Command;
248
+ msg: Message;
249
+ constructor(index: number, command: Command, msg: Message);
250
+ }
251
+
252
+ declare class ArgumentConverterNotFound extends Error {
253
+ type: Argument;
254
+ msg: Message;
255
+ constructor(type: Argument, msg: Message);
256
+ }
257
+ declare class ApplicationCommandArgumentConverterNotFound extends Error {
258
+ type: AppCommandArgument;
259
+ interaction: CommandInteraction | ContextMenuInteraction;
260
+ constructor(type: AppCommandArgument, interaction: CommandInteraction | ContextMenuInteraction);
261
+ }
262
+
263
+ declare class CommandCheckFailed extends Error {
264
+ msg: Message;
265
+ command: Command;
266
+ constructor(msg: Message, command: Command);
267
+ }
268
+ declare class ApplicationCommandCheckFailed extends Error {
269
+ interaction: CommandInteraction | MessageComponentInteraction | ContextMenuInteraction;
270
+ command: AppCommand;
271
+ constructor(interaction: CommandInteraction | MessageComponentInteraction | ContextMenuInteraction, command: AppCommand);
272
+ }
273
+
274
+ declare class UserPermissionRequired extends Error {
275
+ user: GuildMember;
276
+ permissions: Permissions;
277
+ constructor(user: GuildMember, permissions: Permissions);
278
+ }
279
+ declare class ClientPermissionRequired extends Error {
280
+ permissions: Permissions;
281
+ constructor(permissions: Permissions);
282
+ }
283
+
284
+ declare class OwnerOnlyCommandError extends Error {
285
+ constructor();
286
+ }
287
+
288
+ declare class GuildOnlyCommandError extends Error {
289
+ constructor();
290
+ }
291
+
292
+ declare class DMOnlyCommandError extends Error {
293
+ constructor();
294
+ }
295
+
296
+ declare class BuiltInModule extends Module {
297
+ constructor();
298
+ }
299
+
300
+ declare class ButtonInteractionHandler extends MessageComponentHandler {
301
+ constructor(id: string, execute: MessageComponentExecutor);
302
+ }
303
+ declare const messageButton: (id: string) => MethodDecorator;
304
+
305
+ declare class SelectMenuInteractionHandler extends MessageComponentHandler {
306
+ constructor(id: string, execute: MessageComponentExecutor);
307
+ }
308
+ declare const messageSelectMenu: (id: string) => MethodDecorator;
309
+
310
+ export { AppCommand, AppCommandArgument, ApplicationCommandArgumentConverter, ApplicationCommandArgumentConverterNotFound, ApplicationCommandCheckFailed, ApplicationCommandCheckFunction, ApplicationCommandOptions, Argument, ArgumentConverter, ArgumentConverterNotFound, ArgumentNotProvided, BuiltInModule, ButtonInteractionHandler, CheckFunction, ClientPermissionRequired, Command, CommandCheckFailed, CommandClient, CommandClientOptions, CommandClientOptionsParam, CommandOptions$1 as CommandOptions, CoolDownAdapter, CoolDownError, CoolDownType, DMOnlyCommandError, DefaultCoolDownAdapter, GuildOnlyCommandError, InvalidModuleError, InvalidTargetError, Listener, Module, ModuleLoadError, OwnerOnlyCommandError, Registry, SelectMenuInteractionHandler, SlashCommandOptions, UserPermissionRequired, applicationCommand, applicationCommandArgumentConverter, argumentConverter, command, coolDown, createCheckDecorator, dmOnly, guildOnly, listener, messageButton, messageSelectMenu, option, optional, ownerOnly, requireClientPermissions, requireUserPermissions, rest };
package/dist/index.js CHANGED
@@ -1,26 +1,2 @@
1
- "use strict";
2
- /*
3
- * Copyright (c) 2022 pikokr. Licensed under the MIT license
4
- */
5
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
8
- }) : (function(o, m, k, k2) {
9
- if (k2 === undefined) k2 = k;
10
- o[k2] = m[k];
11
- }));
12
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
13
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
14
- };
15
- Object.defineProperty(exports, "__esModule", { value: true });
16
- require("reflect-metadata");
17
- require("./typings");
18
- __exportStar(require("./interface"), exports);
19
- __exportStar(require("./structures"), exports);
20
- __exportStar(require("./error"), exports);
21
- __exportStar(require("./command"), exports);
22
- __exportStar(require("./listener"), exports);
23
- __exportStar(require("./builtinModules/BuiltInModule"), exports);
24
- __exportStar(require("./applicationCommand"), exports);
25
- __exportStar(require("./messageComponents"), exports);
1
+ var mt=Object.create;var W=Object.defineProperty;var ut=Object.getOwnPropertyDescriptor;var pt=Object.getOwnPropertyNames,ve=Object.getOwnPropertySymbols,ft=Object.getPrototypeOf,Oe=Object.prototype.hasOwnProperty,ht=Object.prototype.propertyIsEnumerable;var ke=n=>W(n,"__esModule",{value:!0}),i=(n,e)=>W(n,"name",{value:e,configurable:!0});var Ae=(n,e)=>{var t={};for(var r in n)Oe.call(n,r)&&e.indexOf(r)<0&&(t[r]=n[r]);if(n!=null&&ve)for(var r of ve(n))e.indexOf(r)<0&&ht.call(n,r)&&(t[r]=n[r]);return t};var gt=(n,e)=>{for(var t in e)W(n,t,{get:e[t],enumerable:!0})},Te=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of pt(e))!Oe.call(n,o)&&(t||o!=="default")&&W(n,o,{get:()=>e[o],enumerable:!(r=ut(e,o))||r.enumerable});return n},me=(n,e)=>Te(ke(W(n!=null?mt(ft(n)):{},"default",!e&&n&&n.__esModule?{get:()=>n.default,enumerable:!0}:{value:n,enumerable:!0})),n),yt=(n=>(e,t)=>n&&n.get(e)||(t=Te(ke({}),e,1),n&&n.set(e,t),t))(typeof WeakMap!="undefined"?new WeakMap:0);var jt={};gt(jt,{AppCommand:()=>de,ApplicationCommandArgumentConverter:()=>ce,ApplicationCommandArgumentConverterNotFound:()=>k,ApplicationCommandCheckFailed:()=>A,ArgumentConverter:()=>ae,ArgumentConverterNotFound:()=>D,ArgumentNotProvided:()=>K,BuiltInModule:()=>R,ButtonInteractionHandler:()=>ye,ClientPermissionRequired:()=>U,Command:()=>ie,CommandCheckFailed:()=>re,CommandClient:()=>Ee,CoolDownError:()=>G,CoolDownType:()=>g,DMOnlyCommandError:()=>H,DefaultCoolDownAdapter:()=>le,GuildOnlyCommandError:()=>N,InvalidModuleError:()=>L,InvalidTargetError:()=>O,Listener:()=>se,Module:()=>x,ModuleLoadError:()=>te,OwnerOnlyCommandError:()=>B,Registry:()=>oe,SelectMenuInteractionHandler:()=>we,UserPermissionRequired:()=>P,applicationCommand:()=>kt,applicationCommandArgumentConverter:()=>Ct,argumentConverter:()=>S,command:()=>wt,coolDown:()=>Ot,createCheckDecorator:()=>M,dmOnly:()=>Et,guildOnly:()=>Mt,listener:()=>pe,messageButton:()=>Tt,messageSelectMenu:()=>_t,option:()=>At,optional:()=>xt,ownerOnly:()=>bt,requireClientPermissions:()=>vt,requireUserPermissions:()=>St,rest:()=>Rt});var Yn=require("reflect-metadata");var q=Symbol("Command.TS Commands"),Y=Symbol("Command.TS Slash Commands"),ue=Symbol("Command.TS Slash Command Options"),J=Symbol("Command.TS Listeners"),I=Symbol("Command.TS Module Path"),xe=Symbol("Command.TS Module Identifier"),Q=Symbol("Command.TS Built-In Module"),Re=Symbol("Command.TS Optional Parameters"),be=Symbol("Command.TS Rest Parameter"),V=Symbol("Command.TS Argument Converter"),X=Symbol("Command.TS Slash Argument Converter"),Z=Symbol("Command.TS Command Checks"),ee=Symbol("Command.TS Slash Command Checks"),E=Symbol("Command.TS Message Component Handlers");var x=class{get logger(){return this.commandClient.logger.getChildLogger({name:this.constructor.name})}get commands(){return Reflect.getMetadata(q,this)||[]}get listeners(){return Reflect.getMetadata(J,this)||[]}get argumentConverters(){return Reflect.getMetadata(V,this)||[]}get applicationCommandArgumentConverters(){return Reflect.getMetadata(X,this)||[]}get applicationCommands(){return Reflect.getMetadata(Y,this)||[]}get messageComponentHandlers(){return Reflect.getMetadata(E,this)||[]}get path(){return Reflect.getMetadata(I,this)}load(){}unload(){}beforeReload(){}afterReload(){}};i(x,"Module");var ct=me(require("lodash"));var ne=me(require("path"));var O=class extends Error{constructor(){super('Class does not extend "Module" class.')}};i(O,"InvalidTargetError");var te=class extends Error{constructor(e,t){super("Failed to load module "+e);this.error=t}};i(te,"ModuleLoadError");var L=class extends Error{};i(L,"InvalidModuleError");var K=class extends Error{constructor(e,t,r){super(`Required argument #${e} not provided.`);this.index=e,this.command=t,this.msg=r}};i(K,"ArgumentNotProvided");var D=class extends Error{constructor(e,t){super(`Argument converter ${e.type.name} not found.`);this.type=e,this.msg=t}};i(D,"ArgumentConverterNotFound");var k=class extends Error{constructor(e,t){super(`Argument converter ${e.type.name} not found.`);this.type=e,this.interaction=t}};i(k,"ApplicationCommandArgumentConverterNotFound");var re=class extends Error{constructor(e,t){super();this.msg=e,this.command=t}};i(re,"CommandCheckFailed");var A=class extends Error{constructor(e,t){super();this.interaction=e,this.command=t}};i(A,"ApplicationCommandCheckFailed");var P=class extends Error{constructor(e,t){super();this.user=e,this.permissions=t}};i(P,"UserPermissionRequired");var U=class extends Error{constructor(e){super();this.permissions=e}};i(U,"ClientPermissionRequired");var B=class extends Error{constructor(){super()}};i(B,"OwnerOnlyCommandError");var N=class extends Error{constructor(){super()}};i(N,"GuildOnlyCommandError");var H=class extends Error{constructor(){super()}};i(H,"DMOnlyCommandError");var _e=require("discord.js"),je=me(require("walk-sync")),Ie=me(require("fs")),oe=class{constructor(e){this.client=e,this.modules=new _e.Collection}get logger(){return this.client.logger.getChildLogger({name:"Registry"})}get commands(){let e=[];for(let[,t]of this.modules)e.push(...t.commands);return e}get argumentConverters(){let e=[];for(let[,t]of this.modules)e.push(...t.argumentConverters);return e}get applicationCommandArgumentConverters(){let e=[];for(let[,t]of this.modules)e.push(...t.applicationCommandArgumentConverters);return e}get applicationCommands(){let e=[];for(let[,t]of this.modules)e.push(...t.applicationCommands);return e}get messageComponentHandlers(){let e=[];for(let[,t]of this.modules)e.push(...t.messageComponentHandlers);return e}registerModule(e){e.commandClient=this.client,this.modules.set(Symbol(e.constructor.name),e);let t=[];for(let r of e.listeners){let o=r.execute.bind(e);t.push({event:r.name,execute:o}),this.client.client.on(r.name,o)}return Reflect.defineMetadata(xe,t,e),e}async loadModulesIn(e,t=!1){let r=t?e:ne.default.join(require.main.path,e);for(let o of(0,je.default)(r))if(Ie.lstatSync(ne.default.join(r,o)).isFile()){if(o.endsWith(".map"))continue;await this.loadModule(ne.default.join(r,o),!0)}}async loadModule(e,t=!1){let r=t?e:ne.default.join(require.main.path,e),o;try{o=require(r)}catch(a){throw new te(r,a)}if(o.loaded)throw new Error("MODULE_ALREADY_LOADED");if(!o.install)throw new L("Install function not found.");let s=o.install(this.client);if(!(s instanceof x))throw new O;return Reflect.defineMetadata(I,require.resolve(r),s),this.registerModule(s),await s.load(),o.loaded=!0,s}async syncCommands(){var a,l;this.logger.debug("Syncing commands...");let e=this.applicationCommands.filter(c=>!c.guild),t=this.client.options.applicationCommands.guild,r=i(async(c,m)=>{this.logger.debug(`Syncing for guild ${c.name}(${c.id})`);let w=m.map(u=>u.command);this.logger.debug(`Command List: ${w.map(u=>u.name).join(", ")}`),await c.commands.set(w)},"syncForGuild"),o=this.applicationCommands.filter(c=>!!c.guild);if(t)if(typeof t=="string")await r(await this.client.client.guilds.fetch(t),[...e,...o.filter(c=>c.guild&&(typeof c.guild=="string"?t===c.guild:c.guild.includes(t)))]);else for(let c of t)await r(await this.client.client.guilds.fetch(c),[...e,...o.filter(m=>m.guild&&(typeof m.guild=="string"?c===m.guild:m.guild.includes(c)))]);else this.logger.debug("Syncing global..."),await((a=this.client.client.application)==null?void 0:a.commands.set(e.map(c=>c.command)));let s=new Set;for(let c of o)if(!!c.guild)if(typeof c.guild=="string")s.add(c.guild);else for(let m of c.guild)s.add(m);for(let c of s)((l=this.client.options.applicationCommands.guild)==null?void 0:l.includes(c))||await r(await this.client.client.guilds.fetch(c),o.filter(m=>m.guild&&(typeof m.guild=="string"?c===m.guild:m.guild.includes(c))));this.logger.debug("Syncing ended.")}async unregisterModule(e){if(Reflect.getMetadata(Q,e))throw new Error("Built-in modules cannot be unloaded");let t=this.modules.findKey(o=>o===e);if(!t)return e;await e.unload();let r=Reflect.getMetadata(xe,e);for(let o of r)this.client.client.removeListener(o.event,o.execute);return this.modules.delete(t),e}async unloadModule(e){let t=Reflect.getMetadata(I,e);if(!t)throw new L("This module is not loaded by loadModule.");await this.unregisterModule(e),delete require.cache[t]}async reloadModule(e){await e.beforeReload();let t=Reflect.getMetadata(I,e);return await this.unloadModule(e),await(await this.loadModule(t,!0)).afterReload(),!0}async reloadAll(){let e=[];for(let[,t]of this.modules.filter(r=>!!r.path&&!Reflect.getMetadata(Q,r)))try{await this.reloadModule(t),e.push({path:t.path,success:!0})}catch(r){e.push({error:r,path:t.path,success:!1})}return e}};i(oe,"Registry");var lt=require("discord.js");var R=class extends x{constructor(){super();Reflect.defineMetadata(Q,!0,this)}};i(R,"BuiltInModule");var se=class{constructor(e,t){this.name=e,this.execute=t}};i(se,"Listener");var y=i(n=>{if(!(n instanceof x))throw new O},"checkTarget");var pe=i(n=>(e,t)=>{y(e);let r=Reflect.getMetadata(J,e),o=new se(n,Reflect.get(e,t));r?r.push(o):(r=[o],Reflect.defineMetadata(J,r,e))},"listener");var f=require("discord.js");var fe=class extends Error{constructor(e,t,r){super(`Command ${e} not found.`);this.commandName=e,this.msg=t,this.args=r}};i(fe,"CommandNotFound");var he=class extends Error{constructor(e){super("Slash command before-run check failed.");this.i=e}};i(he,"SlashCommandGlobalCheckError");function Le(n,e,t,r,o){var s={};Object.keys(r).forEach(function(l){s[l]=r[l]}),s.enumerable=!!s.enumerable,s.configurable=!!s.configurable,("value"in s||s.initializer)&&(s.writable=!0),s=t.slice().reverse().reduce(function(l,c){return c&&c(n,e,l)||l},s),o&&s.initializer!==void 0&&(s.value=s.initializer?s.initializer.call(o):void 0,s.initializer=void 0);var a=Object.getOwnPropertyDescriptor(n,e);return a&&(a.get||a.set)&&(delete s.writable,delete s.initializer),s.initializer===void 0&&(Object.defineProperty(n,e,s),s=null),s}i(Le,"_applyDecoratedDescriptor");var b,Ke,De,Pe,Ue,Be,Ne,He=(b=i(class extends R{constructor(e){super();this.registry=e,this.client=e.client}async message(e){let t=i(r=>this.client.client.emit("commandError",r,e),"error1");try{let r=typeof this.client.options.command.prefix=="string"?this.client.options.command.prefix:typeof this.client.options.command.prefix=="function"?await this.client.options.command.prefix(e):this.client.options.command.prefix,o;if(typeof r=="object"){let u=r.find(C=>e.content.includes(C));if(!u)return;o=u}else{if(!e.content.includes(r))return;o=r}if(!e.content.startsWith(o))return;let s=e.content.slice(o.length).split(" "),a=s.shift();if(!a)return;let l=null,c=await this.client.options.command.globalAliases(a,e);for(let u of this.registry.commands){let C=await this.client.options.command.globalAliases(u.name,e);if([...typeof u.aliases=="function"?await u.aliases(e):u.aliases,u.name].some(v=>v===a)){l=u;break}if(c.every((v,$)=>C[$]===v)){l=u;break}}if(e.data={cts:this.client,command:l,prefix:o},!await this.client.options.command.check(e))return;if(!l)return t(new fe(a,e,s));let m=this.registry.modules.find(u=>u.commands.includes(l));if(!m)return;let w=[];for(let u of l.checks)if(!await u(e))return t(new re(e,l));for(let u=0;u<l.argTypes.length;u++){let C=l.argTypes[u],_=this.registry.argumentConverters.find(j=>j.type===C.type);if(C.rest){let j=s.join(" ");if(!j)break;w.push(j);break}if(!_)return t(new D(C,e));let v=this.registry.modules.find(j=>j.argumentConverters.includes(_));if(!v)return t(new D(C,e));if(_.withoutParameter){w.push(await _.execute(v,e));continue}let $=s.shift();if(C.optional&&!$)break;if(!$)return t(new K(u,l,e));let Ce=await _.execute(v,e,$);if(Ce==null&&!C.optional)return t(new K(u,l,e));w.push(Ce)}try{await l.execute(m,w)}catch(u){return t(u)}}catch(r){return t(r)}}async command(e){var r,o;let t=i(s=>this.client.client.emit("applicationCommandError",s,e),"error2");try{let s=this.registry.applicationCommands.find(c=>c.command.type==="CHAT_INPUT"&&c.command.name===e.commandName);if(!s)return;let a=this.registry.modules.find(c=>c.applicationCommands.includes(s));if(!a)return;let l=[];if(e.data={cts:this.client,command:s},!await this.client.options.slashCommands.check(e))return t(new he(e));for(let c of s.checks)if(!await c(e))return t(new A(e,s));for(let c=0;c<s.params.length;c++){let m=s.params[c],w=this.registry.applicationCommandArgumentConverters.find(u=>u.type===m.type);if(m.type===f.CommandInteraction){l.push(e);continue}if(m.type===f.CommandInteractionOptionResolver){l.push(e.options);continue}if(m.name){switch(m.type){case String:l.push(e.options.getString(m.name,!1)||void 0);break;case f.Role:l.push(e.options.getRole(m.name,!1)||void 0);break;case f.User:l.push(e.options.getUser(m.name,!1)||void 0);break;case f.GuildMember:l.push(e.options.getMember(m.name,!1)||void 0);break;case Boolean:l.push(e.options.getBoolean(m.name,!1)||void 0);break;case Number:let u=e.options.get(m.name,!1);if(!u){l.push(void 0);break}if(u.type=="NUMBER"){l.push((r=e.options.getNumber(m.name,!1))!=null?r:void 0);break}if(u.type=="INTEGER"){l.push((o=e.options.getInteger(m.name,!1))!=null?o:void 0);break}}continue}if(!w)return t(new k(m,e));l.push(await w.execute(a,e))}await s.execute(a,l)}catch(s){return t(s)}}async messageComponent(e){let t=i(r=>this.client.client.emit("messageComponentError",r),"error");try{let r=[];for(let o of this.registry.messageComponentHandlers)o.componentId===o.componentId&&o.componentType===e.componentType&&r.push(o);for(let o of r){let s=this.registry.modules.find(a=>a.messageComponentHandlers.includes(o));!s||await o.run(s,e)}}catch(r){t(r)}}async userContextMenu(e){let t=i(r=>this.client.client.emit("applicationCommandError",r,e),"error3");try{let r=this.registry.applicationCommands.find(a=>a.command.type==="USER"&&a.command.name===e.commandName);if(!r)return;let o=this.registry.modules.find(a=>a.applicationCommands.includes(r));if(!o)return;e.data={cts:this.client,command:r};for(let a of r.checks)if(!await a(e))return t(new A(e,r));let s=[];for(let a=0;a<r.params.length;a++){let l=r.params[a],c=this.registry.applicationCommandArgumentConverters.find(m=>m.type===l.type);if(l.type===f.UserContextMenuInteraction){s.push(e);continue}if(!c)return t(new k(l,e));s.push(await c.execute(o,e))}await r.execute(o,s)}catch(r){return t(r)}}async messageContextMenu(e){let t=i(r=>this.client.client.emit("applicationCommandError",r,e),"error4");try{let r=this.registry.applicationCommands.find(a=>a.command.type==="MESSAGE"&&a.command.name===e.commandName);if(!r)return;let o=this.registry.modules.find(a=>a.applicationCommands.includes(r));if(!o)return;e.data={cts:this.client,command:r};for(let a of r.checks)if(!await a(e))return t(new A(e,r));let s=[];for(let a=0;a<r.params.length;a++){let l=r.params[a],c=this.registry.applicationCommandArgumentConverters.find(m=>m.type===l.type);if(l.type===f.MessageContextMenuInteraction){s.push(e);continue}if(!c)return t(new k(l,e));s.push(await c.execute(o,e))}await r.execute(o,s)}catch(r){return t(r)}}async interaction(e){let t=i(r=>this.client.client.emit("interactionError",r,e),"error");try{if(await this.client.options.applicationCommands.beforeRunCheck(e),e.isCommand()){await this.command(e);return}if(e.isMessageComponent()){await this.messageComponent(e);return}if(e.isMessageContextMenu()){await this.messageContextMenu(e);return}if(e.isUserContextMenu()){await this.userContextMenu(e);return}}catch(r){return t(r)}}},"CommandHandler"),Ke=pe("messageCreate"),De=typeof Reflect!="undefined"&&typeof Reflect.metadata=="function"&&Reflect.metadata("design:type",Function),Pe=typeof Reflect!="undefined"&&typeof Reflect.metadata=="function"&&Reflect.metadata("design:paramtypes",[typeof f.Message=="undefined"?Object:f.Message]),Le(b.prototype,"message",[Ke,De,Pe],Object.getOwnPropertyDescriptor(b.prototype,"message"),b.prototype),Ue=pe("interactionCreate"),Be=typeof Reflect!="undefined"&&typeof Reflect.metadata=="function"&&Reflect.metadata("design:type",Function),Ne=typeof Reflect!="undefined"&&typeof Reflect.metadata=="function"&&Reflect.metadata("design:paramtypes",[typeof f.Interaction=="undefined"?Object:f.Interaction]),Le(b.prototype,"interaction",[Ue,Be,Ne],Object.getOwnPropertyDescriptor(b.prototype,"interaction"),b.prototype),b);var ie=class{execute(e,t){return this.run.apply(e,t)}get checks(){return Reflect.getMetadata(Z,this.module,this.key)||[]}constructor(e,t,r,o,s,a){this.run=e,this.argTypes=t,this.name=r,this.aliases=o,this.module=s,this.key=a}};i(ie,"Command");var ae=class{execute(e,t,r){return this.run.apply(e,[t,r])}constructor(e,t,r){this.type=e,this.run=t,this.withoutParameter=r}};i(ae,"ArgumentConverter");var ce=class{execute(e,t){return this.run.apply(e,[t])}constructor(e,t){this.type=e,this.run=t}};i(ce,"ApplicationCommandArgumentConverter");var M=i((n,e)=>(t,r)=>{if(n){let o=Reflect.getMetadata(Z,t,r);o?o.push(n):(o=[n],Reflect.defineMetadata(Z,o,t,r))}if(e){let o=Reflect.getMetadata(ee,t,r);o?o.push(e):(o=[e],Reflect.defineMetadata(ee,o,t,r))}},"createCheckDecorator");var T=require("discord.js");var wt=i((n={})=>(e,t)=>{var c;y(e);let r=Reflect.getMetadata(q,e),o=(c=n.optionTypes)!=null?c:Reflect.getMetadata("design:paramtypes",e,t),s=Reflect.getMetadata(Re,e,t)||-1,a=Reflect.getMetadata(be,e,t)||-1,l=new ie(Reflect.get(e,t),o.map((m,w)=>({type:m,optional:s===-1?!1:s<=w,rest:a===-1?!1:a===w})),n.name||t,n.aliases||[],e,t);r?r.push(l):(r=[l],Reflect.defineMetadata(q,r,e))},"command"),S=i((n,e=!0)=>(t,r)=>{y(t);let o=Reflect.getMetadata(V,t),s=new ae(n,Reflect.get(t,r),!e);o?o.push(s):(o=[s],Reflect.defineMetadata(V,o,t))},"argumentConverter"),Ct=i(n=>(e,t)=>{y(e);let r=Reflect.getMetadata(X,e),o=new ce(n,Reflect.get(e,t));r?r.push(o):(r=[o],Reflect.defineMetadata(X,r,e))},"applicationCommandArgumentConverter"),xt=i((n,e,t)=>{y(n),Reflect.defineMetadata(Re,t,n,e)},"optional"),Rt=i((n,e,t)=>{y(n);let r=Reflect.getMetadata("design:paramtypes",n,e);if(r.length-1!==t)throw new Error("Rest decorator must be used at last argument.");if(r[t]!==String)throw new Error('Rest argument type must be "String"');Reflect.defineMetadata(be,t,n,e)},"rest"),bt=M(n=>{if(n.data.cts.owners.includes(n.author.id))return!0;throw new B},n=>{if(n.data.cts.owners.includes(n.user.id))return!0;throw new B}),Mt=M(n=>{if(n.guild)return!0;throw new N},n=>{if(n.guildId)return!0;throw new N}),Et=M(n=>{if(!n.guild)return!0;throw new H},n=>{if(!n.guildId)return!0;throw new H}),St=i(n=>M(e=>{if(!e.guild||!e.member)throw new Error("This command must be used in guild.");if(e.member.permissionsIn(e.channel).has(n))return!0;throw new P(e.member,new T.Permissions(n))},e=>{if(!e.guild||!e.member)throw new Error("This command must be used in guild.");if(!(e.member instanceof T.GuildMember)||e.member.permissionsIn(e.channel).has(n))return!0;throw new P(e.member,new T.Permissions(n))}),"requireUserPermissions"),vt=i(n=>M(e=>{if(!e.guild)throw new Error("This command must be used in guild.");if(e.guild.me.permissionsIn(e.channel).has(n))return!0;throw new U(new T.Permissions(n))},e=>{if(!e.guild)throw new Error("This command must be used in guild.");if(e.guild.me.permissionsIn(e.channel).has(n))return!0;throw new U(new T.Permissions(n))}),"requireClientPermissions");var g;(function(n){n[n.USER=0]="USER",n[n.CHANNEL=1]="CHANNEL",n[n.GUILD=2]="GUILD",n[n.ROLE=3]="ROLE",n[n.CATEGORY=4]="CATEGORY",n[n.MEMBER=5]="MEMBER"})(g||(g={}));var Me=require("discord.js");var G=class extends Error{constructor(e){super();this.endsAt=e}};i(G,"CoolDownError");var Ot=i((n,e)=>M(async t=>{let r=t.data.cts.coolDownAdapter,s=i(()=>{var c;switch(n){case g.USER:return t.author.id;case g.GUILD:return(t.guild||t.author).id;case g.CHANNEL:return t.channel.id;case g.MEMBER:return`${(c=t.guild)==null?void 0:c.id}.${t.author.id}`;case g.ROLE:return(t.channel instanceof Me.DMChannel?t.channel:t.member.roles.highest).id;case g.CATEGORY:return(t.channel.parent||t.channel).id}},"getKey")(),a=await r.get(s),l=Date.now();if(!a||!(l-a<e*1e3))return await r.set(s,l),!0;throw new G(new Date(a+e*1e3))},async t=>{let r=t.data.cts.coolDownAdapter,s=i(()=>{var c;switch(n){case g.USER:return t.user.id;case g.GUILD:return(t.guild||t.user).id;case g.CHANNEL:return t.channel.id;case g.MEMBER:return`${(c=t.guild)==null?void 0:c.id}.${t.user.id}`;case g.ROLE:return(t.channel instanceof Me.DMChannel?t.channel:t.member.roles.highest).id;case g.CATEGORY:return(t.channel.parent||t.channel).id}},"getKey")(),a=await r.get(s),l=Date.now();if(!a||!(l-a<e*1e3))return await r.set(s,l),!0;throw new G(new Date(a+e*1e3))}),"coolDown");var Ge=require("discord.js"),le=class{async get(e){return this.map.get(e)}async set(e,t){this.map.set(e,t)}constructor(){this.map=new Ge.Collection}};i(le,"DefaultCoolDownAdapter");var h=require("discord.js");function z(n,e,t,r,o){var s={};Object.keys(r).forEach(function(l){s[l]=r[l]}),s.enumerable=!!s.enumerable,s.configurable=!!s.configurable,("value"in s||s.initializer)&&(s.writable=!0),s=t.slice().reverse().reduce(function(l,c){return c&&c(n,e,l)||l},s),o&&s.initializer!==void 0&&(s.value=s.initializer?s.initializer.call(o):void 0,s.initializer=void 0);var a=Object.getOwnPropertyDescriptor(n,e);return a&&(a.get||a.set)&&(delete s.writable,delete s.initializer),s.initializer===void 0&&(Object.defineProperty(n,e,s),s=null),s}i(z,"_applyDecoratedDescriptor");var p,ze,Fe,$e,We,qe,Ye,Je,Qe,Ve,Xe,Ze,et,tt,rt,nt,ot,st,it,at=(p=i(class extends R{constructor(e){super();this.cts=e,this.client=e.client}message(e){return e}string(e,t){return t}getUserIDByMention(e){if(!!e&&e.startsWith("<@")&&e.endsWith(">"))return e=e.slice(2,-1),e.startsWith("!")&&(e=e.slice(1)),e}user(e,t){let r=this.client.users.cache.get(t);if(r||(r=this.client.users.cache.find(s=>s.tag===t||s.username===t),r))return r;let o=this.getUserIDByMention(t);return o?(r=this.client.users.cache.get(o),r||null):null}member(e,t){var s,a,l;let r=(s=e.guild)==null?void 0:s.members.cache.get(t);if(!r||(r=(a=e.guild)==null?void 0:a.members.cache.find(c=>c.user.tag===t),r))return r;let o=this.getUserIDByMention(t);if(!!o)return r=(l=e.guild)==null?void 0:l.members.cache.get(o),r||void 0}number(e,t){let r=Number(t);return isNaN(r)?void 0:r}getRoleIDByMention(e){if(!!e&&e.startsWith("<@")&&e.endsWith(">"))return e=e.slice(2,-1),e.startsWith("&")&&(e=e.slice(1)),e}role(e,t){var s;let r=this.getRoleIDByMention(t);return r&&((s=e.guild)==null?void 0:s.roles.cache.get(r))||void 0}},"BuiltinCommandConverters"),ze=S(h.Message,!1),Fe=typeof Reflect!="undefined"&&typeof Reflect.metadata=="function"&&Reflect.metadata("design:type",Function),$e=typeof Reflect!="undefined"&&typeof Reflect.metadata=="function"&&Reflect.metadata("design:paramtypes",[typeof h.Message=="undefined"?Object:h.Message]),z(p.prototype,"message",[ze,Fe,$e],Object.getOwnPropertyDescriptor(p.prototype,"message"),p.prototype),We=S(String),qe=typeof Reflect!="undefined"&&typeof Reflect.metadata=="function"&&Reflect.metadata("design:type",Function),Ye=typeof Reflect!="undefined"&&typeof Reflect.metadata=="function"&&Reflect.metadata("design:paramtypes",[typeof h.Message=="undefined"?Object:h.Message,String]),z(p.prototype,"string",[We,qe,Ye],Object.getOwnPropertyDescriptor(p.prototype,"string"),p.prototype),Je=S(h.User),Qe=typeof Reflect!="undefined"&&typeof Reflect.metadata=="function"&&Reflect.metadata("design:type",Function),Ve=typeof Reflect!="undefined"&&typeof Reflect.metadata=="function"&&Reflect.metadata("design:paramtypes",[typeof h.Message=="undefined"?Object:h.Message,String]),z(p.prototype,"user",[Je,Qe,Ve],Object.getOwnPropertyDescriptor(p.prototype,"user"),p.prototype),Xe=S(h.GuildMember),Ze=typeof Reflect!="undefined"&&typeof Reflect.metadata=="function"&&Reflect.metadata("design:type",Function),et=typeof Reflect!="undefined"&&typeof Reflect.metadata=="function"&&Reflect.metadata("design:paramtypes",[typeof h.Message=="undefined"?Object:h.Message,String]),z(p.prototype,"member",[Xe,Ze,et],Object.getOwnPropertyDescriptor(p.prototype,"member"),p.prototype),tt=S(Number),rt=typeof Reflect!="undefined"&&typeof Reflect.metadata=="function"&&Reflect.metadata("design:type",Function),nt=typeof Reflect!="undefined"&&typeof Reflect.metadata=="function"&&Reflect.metadata("design:paramtypes",[typeof h.Message=="undefined"?Object:h.Message,String]),z(p.prototype,"number",[tt,rt,nt],Object.getOwnPropertyDescriptor(p.prototype,"number"),p.prototype),ot=S(h.Role),st=typeof Reflect!="undefined"&&typeof Reflect.metadata=="function"&&Reflect.metadata("design:type",Function),it=typeof Reflect!="undefined"&&typeof Reflect.metadata=="function"&&Reflect.metadata("design:paramtypes",[typeof h.Message=="undefined"?Object:h.Message,String]),z(p.prototype,"role",[ot,st,it],Object.getOwnPropertyDescriptor(p.prototype,"role"),p.prototype),p);var ge=class extends R{constructor(e){super();this.cts=e,this.client=e.client}};i(ge,"BuiltinApplicationCommandConverters");var dt=require("tslog"),Ee=class{async fetchOwners(){var t,r;await((t=this.client.application)==null?void 0:t.fetch());let e=(r=this.client.application)==null?void 0:r.owner;return e?e instanceof lt.User?[e.id]:e.members.map(o=>o.id):[]}async ready(){if(!this._isReady){if(this._isReady=!0,this.options.owners==="auto"){let e=await this.fetchOwners();this.owners.push(...e)}this.options.applicationCommands.autoSync&&await this.registry.syncCommands()}}constructor(s){var a=s,{client:e,coolDownAdapter:t,logger:r}=a,o=Ae(a,["client","coolDownAdapter","logger"]);this.owners=[],this.registry=new oe(this),this._isReady=!1,this.client=e,this.coolDownAdapter=t||new le,this.options=ct.default.merge({command:{prefix:"!",check:()=>!0,globalAliases:()=>[]},owners:"auto",slashCommands:{check:()=>!0},applicationCommands:{autoSync:!1,beforeRunCheck:()=>{}}},o),this.logger=r!=null?r:new dt.Logger({name:"Command.TS"}),this.options.owners!=="auto"&&(this.owners=this.options.owners),this.client.once("ready",()=>this.ready()),this.registry.registerModule(new He(this.registry)),this.registry.registerModule(new at(this)),this.registry.registerModule(new ge(this))}};i(Ee,"CommandClient");var Se=require("discord.js");var de=class{get checks(){return Reflect.getMetadata(ee,this.module,this.key)||[]}execute(e,t){return this.run.apply(e,t)}constructor(e,t,r,o,s,a){this.command=e,this.run=t,this.module=r,this.params=o,this.guild=s,this.key=a}};i(de,"AppCommand");var kt=i(n=>(e,t)=>{var l;y(e);let r=Reflect.getMetadata(Y,e),o=(l=n.optionTypes)!=null?l:Reflect.getMetadata("design:paramtypes",e,t),s=Reflect.getMetadata(ue,e,t)||new Se.Collection,a=new de(n.command,Reflect.get(e,t),e,o.map((c,m)=>({type:c,name:s.get(m)})),n.guild,t);r?r.push(a):(r=[a],Reflect.defineMetadata(Y,r,e))},"applicationCommand"),At=i(n=>(e,t,r)=>{y(e);let o=Reflect.getMetadata(ue,e,t);o||(o=new Se.Collection,Reflect.defineMetadata(ue,o,e,t)),o.set(r,n)},"option");var F=class{constructor(e,t,r){this.componentId=e,this.componentType=t,this.execute=r}run(e,t){return this.execute.apply(e,[t])}};i(F,"MessageComponentHandler");var ye=class extends F{constructor(e,t){super(e,"BUTTON",t)}};i(ye,"ButtonInteractionHandler");var Tt=i(n=>(e,t)=>{y(e);let r=new ye(n,Reflect.get(e,t)),o=Reflect.getMetadata(E,e);o?o.push(r):(o=[r],Reflect.defineMetadata(E,o,e))},"messageButton");var we=class extends F{constructor(e,t){super(e,"SELECT_MENU",t)}};i(we,"SelectMenuInteractionHandler");var _t=i(n=>(e,t)=>{y(e);let r=new we(n,Reflect.get(e,t)),o=Reflect.getMetadata(E,e);o?o.push(r):(o=[r],Reflect.defineMetadata(E,o,e))},"messageSelectMenu");module.exports=yt(jt);0&&(module.exports={AppCommand,ApplicationCommandArgumentConverter,ApplicationCommandArgumentConverterNotFound,ApplicationCommandCheckFailed,ArgumentConverter,ArgumentConverterNotFound,ArgumentNotProvided,BuiltInModule,ButtonInteractionHandler,ClientPermissionRequired,Command,CommandCheckFailed,CommandClient,CoolDownError,CoolDownType,DMOnlyCommandError,DefaultCoolDownAdapter,GuildOnlyCommandError,InvalidModuleError,InvalidTargetError,Listener,Module,ModuleLoadError,OwnerOnlyCommandError,Registry,SelectMenuInteractionHandler,UserPermissionRequired,applicationCommand,applicationCommandArgumentConverter,argumentConverter,command,coolDown,createCheckDecorator,dmOnly,guildOnly,listener,messageButton,messageSelectMenu,option,optional,ownerOnly,requireClientPermissions,requireUserPermissions,rest});
26
2
  //# sourceMappingURL=index.js.map