reciple 6.0.0-dev.25 → 6.0.0-dev.26
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 +674 -674
- package/README.md +183 -183
- package/dist/lib/bin.mjs +67 -66
- package/dist/lib/esm.mjs +1 -1
- package/dist/lib/index.js +33 -33
- package/dist/lib/reciple/classes/RecipleClient.js +307 -296
- package/dist/lib/reciple/classes/RecipleConfig.js +106 -106
- package/dist/lib/reciple/classes/RecipleModule.js +94 -94
- package/dist/lib/reciple/classes/builders/MessageCommandBuilder.js +309 -309
- package/dist/lib/reciple/classes/builders/MessageCommandOptionBuilder.js +126 -126
- package/dist/lib/reciple/classes/builders/SlashCommandBuilder.js +246 -246
- package/dist/lib/reciple/classes/managers/ApplicationCommandManager.js +178 -178
- package/dist/lib/reciple/classes/managers/CommandCooldownManager.js +99 -99
- package/dist/lib/reciple/classes/managers/CommandManager.js +60 -59
- package/dist/lib/reciple/classes/managers/MessageCommandOptionManager.js +25 -25
- package/dist/lib/reciple/classes/managers/ModuleManager.js +176 -176
- package/dist/lib/reciple/flags.js +31 -31
- package/dist/lib/reciple/permissions.js +30 -30
- package/dist/lib/reciple/types/builders.js +11 -11
- package/dist/lib/reciple/types/commands.js +15 -15
- package/dist/lib/reciple/types/paramOptions.js +2 -2
- package/dist/lib/reciple/util.js +71 -69
- package/dist/lib/reciple/version.js +47 -47
- package/dist/types/bin.d.mts +2 -2
- package/dist/types/esm.d.mts +1 -1
- package/dist/types/index.d.ts +17 -17
- package/dist/types/reciple/classes/RecipleClient.d.ts +114 -104
- package/dist/types/reciple/classes/RecipleConfig.d.ts +100 -100
- package/dist/types/reciple/classes/RecipleModule.d.ts +56 -56
- package/dist/types/reciple/classes/builders/MessageCommandBuilder.d.ts +189 -189
- package/dist/types/reciple/classes/builders/MessageCommandOptionBuilder.d.ts +53 -53
- package/dist/types/reciple/classes/builders/SlashCommandBuilder.d.ts +98 -98
- package/dist/types/reciple/classes/managers/ApplicationCommandManager.d.ts +53 -53
- package/dist/types/reciple/classes/managers/CommandCooldownManager.d.ts +70 -70
- package/dist/types/reciple/classes/managers/CommandManager.d.ts +34 -34
- package/dist/types/reciple/classes/managers/MessageCommandOptionManager.d.ts +22 -22
- package/dist/types/reciple/classes/managers/ModuleManager.d.ts +49 -49
- package/dist/types/reciple/flags.d.ts +17 -17
- package/dist/types/reciple/permissions.d.ts +15 -15
- package/dist/types/reciple/types/builders.d.ts +205 -205
- package/dist/types/reciple/types/commands.d.ts +81 -81
- package/dist/types/reciple/types/paramOptions.d.ts +101 -101
- package/dist/types/reciple/util.d.ts +26 -26
- package/dist/types/reciple/version.d.ts +25 -25
- package/package.json +2 -2
- package/resource/reciple.yml +120 -120
|
@@ -1,246 +1,246 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SlashCommandBuilder = void 0;
|
|
4
|
-
const builders_1 = require("../../types/builders");
|
|
5
|
-
const util_1 = require("../../util");
|
|
6
|
-
const discord_js_1 = require("discord.js");
|
|
7
|
-
/**
|
|
8
|
-
* Reciple builder for slash command
|
|
9
|
-
*/
|
|
10
|
-
class SlashCommandBuilder extends discord_js_1.SlashCommandBuilder {
|
|
11
|
-
constructor(data) {
|
|
12
|
-
super();
|
|
13
|
-
this.type = builders_1.CommandType.SlashCommand;
|
|
14
|
-
this._cooldown = 0;
|
|
15
|
-
this._requiredBotPermissions = [];
|
|
16
|
-
this._requiredMemberPermissions = [];
|
|
17
|
-
this._execute = () => {
|
|
18
|
-
/* Execute */
|
|
19
|
-
};
|
|
20
|
-
// TODO: WTH
|
|
21
|
-
if (data?.name !== undefined)
|
|
22
|
-
this.setName(data.name);
|
|
23
|
-
if (data?.description !== undefined)
|
|
24
|
-
this.setDescription(data.description);
|
|
25
|
-
if (data?.cooldown !== undefined)
|
|
26
|
-
this.setCooldown(Number(data?.cooldown));
|
|
27
|
-
if (data?.requiredBotPermissions !== undefined)
|
|
28
|
-
this.setRequiredBotPermissions(data.requiredBotPermissions);
|
|
29
|
-
if (data?.requiredMemberPermissions !== undefined)
|
|
30
|
-
this.setRequiredMemberPermissions(data.requiredMemberPermissions);
|
|
31
|
-
if (data?.halt !== undefined)
|
|
32
|
-
this.setHalt(data.halt);
|
|
33
|
-
if (data?.execute !== undefined)
|
|
34
|
-
this.setExecute(data.execute);
|
|
35
|
-
if (data?.metadata !== undefined)
|
|
36
|
-
this.setMetadata(data.metadata);
|
|
37
|
-
if (data?.nameLocalizations !== undefined)
|
|
38
|
-
this.setNameLocalizations(data.nameLocalizations);
|
|
39
|
-
if (data?.descriptionLocalizations !== undefined)
|
|
40
|
-
this.setDescriptionLocalizations(data.descriptionLocalizations);
|
|
41
|
-
if (data?.defaultMemberPermissions !== undefined)
|
|
42
|
-
this.setDefaultMemberPermissions(data.defaultMemberPermissions);
|
|
43
|
-
if (data?.dmPermission !== undefined)
|
|
44
|
-
this.setDMPermission(true);
|
|
45
|
-
if (data?.defaultPermission !== undefined)
|
|
46
|
-
this.setDefaultPermission(true);
|
|
47
|
-
if (data?.options) {
|
|
48
|
-
for (const option of data.options) {
|
|
49
|
-
SlashCommandBuilder.addOption(this, (0, util_1.isClass)(option) ? option : SlashCommandBuilder.resolveOption(option));
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
get cooldown() {
|
|
54
|
-
return this._cooldown;
|
|
55
|
-
}
|
|
56
|
-
get requiredBotPermissions() {
|
|
57
|
-
return this._requiredBotPermissions;
|
|
58
|
-
}
|
|
59
|
-
get requiredMemberPermissions() {
|
|
60
|
-
return this._requiredMemberPermissions;
|
|
61
|
-
}
|
|
62
|
-
get halt() {
|
|
63
|
-
return this._halt;
|
|
64
|
-
}
|
|
65
|
-
get execute() {
|
|
66
|
-
return this._execute;
|
|
67
|
-
}
|
|
68
|
-
set cooldown(cooldown) {
|
|
69
|
-
this.setCooldown(cooldown);
|
|
70
|
-
}
|
|
71
|
-
set requiredBotPermissions(permissions) {
|
|
72
|
-
this.setRequiredBotPermissions(permissions);
|
|
73
|
-
}
|
|
74
|
-
set requiredMemberPermissions(permissions) {
|
|
75
|
-
this.setRequiredMemberPermissions(permissions);
|
|
76
|
-
}
|
|
77
|
-
set halt(halt) {
|
|
78
|
-
this.setHalt(halt);
|
|
79
|
-
}
|
|
80
|
-
set execute(execute) {
|
|
81
|
-
this.setExecute(execute);
|
|
82
|
-
}
|
|
83
|
-
setCooldown(cooldown) {
|
|
84
|
-
this._cooldown = cooldown;
|
|
85
|
-
return this;
|
|
86
|
-
}
|
|
87
|
-
setRequiredBotPermissions(...permissions) {
|
|
88
|
-
this._requiredBotPermissions = (0, discord_js_1.normalizeArray)(permissions);
|
|
89
|
-
return this;
|
|
90
|
-
}
|
|
91
|
-
setRequiredMemberPermissions(...permissions) {
|
|
92
|
-
this._requiredMemberPermissions = (0, discord_js_1.normalizeArray)(permissions);
|
|
93
|
-
this.setDefaultMemberPermissions(this.requiredMemberPermissions.length ? new discord_js_1.PermissionsBitField(this.requiredMemberPermissions).bitfield : undefined);
|
|
94
|
-
return this;
|
|
95
|
-
}
|
|
96
|
-
setHalt(halt) {
|
|
97
|
-
this._halt = halt || undefined;
|
|
98
|
-
return this;
|
|
99
|
-
}
|
|
100
|
-
setExecute(execute) {
|
|
101
|
-
if ((0, discord_js_1.isValidationEnabled)() && (!execute || typeof execute !== 'function'))
|
|
102
|
-
throw new Error('execute must be a function.');
|
|
103
|
-
this._execute = execute;
|
|
104
|
-
return this;
|
|
105
|
-
}
|
|
106
|
-
setMetadata(metadata) {
|
|
107
|
-
this.metadata = metadata;
|
|
108
|
-
return this;
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Add option builder to command builder
|
|
112
|
-
* @param builder Command/Subcommand builder
|
|
113
|
-
* @param option Option builder
|
|
114
|
-
*/
|
|
115
|
-
static addOption(builder, option) {
|
|
116
|
-
if (option instanceof discord_js_1.SlashCommandAttachmentOption) {
|
|
117
|
-
builder.addAttachmentOption(option);
|
|
118
|
-
}
|
|
119
|
-
else if (option instanceof discord_js_1.SlashCommandBooleanOption) {
|
|
120
|
-
builder.addBooleanOption(option);
|
|
121
|
-
}
|
|
122
|
-
else if (option instanceof discord_js_1.SlashCommandChannelOption) {
|
|
123
|
-
builder.addChannelOption(option);
|
|
124
|
-
}
|
|
125
|
-
else if (option instanceof discord_js_1.SlashCommandIntegerOption) {
|
|
126
|
-
builder.addIntegerOption(option);
|
|
127
|
-
}
|
|
128
|
-
else if (option instanceof discord_js_1.SlashCommandMentionableOption) {
|
|
129
|
-
builder.addMentionableOption(option);
|
|
130
|
-
}
|
|
131
|
-
else if (option instanceof discord_js_1.SlashCommandNumberOption) {
|
|
132
|
-
builder.addNumberOption(option);
|
|
133
|
-
}
|
|
134
|
-
else if (option instanceof discord_js_1.SlashCommandRoleOption) {
|
|
135
|
-
builder.addRoleOption(option);
|
|
136
|
-
}
|
|
137
|
-
else if (option instanceof discord_js_1.SlashCommandStringOption) {
|
|
138
|
-
builder.addStringOption(option);
|
|
139
|
-
}
|
|
140
|
-
else if (option instanceof discord_js_1.SlashCommandUserOption) {
|
|
141
|
-
builder.addUserOption(option);
|
|
142
|
-
}
|
|
143
|
-
else if (builder instanceof SlashCommandBuilder) {
|
|
144
|
-
if (option instanceof discord_js_1.SlashCommandSubcommandBuilder) {
|
|
145
|
-
builder.addSubcommand(option);
|
|
146
|
-
}
|
|
147
|
-
else if (option instanceof discord_js_1.SlashCommandSubcommandGroupBuilder) {
|
|
148
|
-
builder.addSubcommandGroup(option);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
return builder;
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Resolve option data
|
|
155
|
-
* @param option Option dara to resolve
|
|
156
|
-
*/
|
|
157
|
-
static resolveOption(option) {
|
|
158
|
-
let builder;
|
|
159
|
-
// TODO: I can do better than this
|
|
160
|
-
switch (option.type) {
|
|
161
|
-
case discord_js_1.ApplicationCommandOptionType.Attachment:
|
|
162
|
-
builder = new discord_js_1.SlashCommandAttachmentOption();
|
|
163
|
-
break;
|
|
164
|
-
case discord_js_1.ApplicationCommandOptionType.Boolean:
|
|
165
|
-
builder = new discord_js_1.SlashCommandBooleanOption();
|
|
166
|
-
break;
|
|
167
|
-
case discord_js_1.ApplicationCommandOptionType.Channel:
|
|
168
|
-
builder = new discord_js_1.SlashCommandChannelOption().addChannelTypes(...(option.channelTypes ?? []));
|
|
169
|
-
break;
|
|
170
|
-
case discord_js_1.ApplicationCommandOptionType.Integer:
|
|
171
|
-
builder = new discord_js_1.SlashCommandIntegerOption().addChoices(...(option.choices ?? [])).setAutocomplete(!!option.autocomplete);
|
|
172
|
-
if (option.maxValue)
|
|
173
|
-
builder.setMaxValue(option.maxValue);
|
|
174
|
-
if (option.minValue)
|
|
175
|
-
builder.setMinValue(option.minValue);
|
|
176
|
-
break;
|
|
177
|
-
case discord_js_1.ApplicationCommandOptionType.Mentionable:
|
|
178
|
-
builder = new discord_js_1.SlashCommandMentionableOption();
|
|
179
|
-
break;
|
|
180
|
-
case discord_js_1.ApplicationCommandOptionType.Number:
|
|
181
|
-
builder = new discord_js_1.SlashCommandNumberOption().addChoices(...(option.choices ?? [])).setAutocomplete(!!option.autocomplete);
|
|
182
|
-
if (option.maxValue)
|
|
183
|
-
builder.setMaxValue(option.maxValue);
|
|
184
|
-
if (option.minValue)
|
|
185
|
-
builder.setMinValue(option.minValue);
|
|
186
|
-
break;
|
|
187
|
-
case discord_js_1.ApplicationCommandOptionType.Role:
|
|
188
|
-
builder = new discord_js_1.SlashCommandRoleOption();
|
|
189
|
-
break;
|
|
190
|
-
case discord_js_1.ApplicationCommandOptionType.String:
|
|
191
|
-
builder = new discord_js_1.SlashCommandStringOption().addChoices(...(option.choices ?? [])).setAutocomplete(!!option.autocomplete);
|
|
192
|
-
if (option.maxLength)
|
|
193
|
-
builder.setMaxLength(option.maxLength);
|
|
194
|
-
if (option.minLength)
|
|
195
|
-
builder.setMinLength(option.minLength);
|
|
196
|
-
break;
|
|
197
|
-
case discord_js_1.ApplicationCommandOptionType.User:
|
|
198
|
-
builder = new discord_js_1.SlashCommandUserOption();
|
|
199
|
-
break;
|
|
200
|
-
case discord_js_1.ApplicationCommandOptionType.Subcommand:
|
|
201
|
-
builder = new discord_js_1.SlashCommandSubcommandBuilder();
|
|
202
|
-
for (const optionData of option.options) {
|
|
203
|
-
this.addOption(builder, this.resolveOption(optionData));
|
|
204
|
-
}
|
|
205
|
-
break;
|
|
206
|
-
case discord_js_1.ApplicationCommandOptionType.SubcommandGroup:
|
|
207
|
-
builder = new discord_js_1.SlashCommandSubcommandGroupBuilder();
|
|
208
|
-
for (const subCommandData of option.options) {
|
|
209
|
-
builder.addSubcommand(subCommandData instanceof discord_js_1.SlashCommandSubcommandBuilder ? subCommandData : this.resolveOption(subCommandData));
|
|
210
|
-
}
|
|
211
|
-
break;
|
|
212
|
-
default:
|
|
213
|
-
throw new TypeError('Unknown option data');
|
|
214
|
-
}
|
|
215
|
-
if (!(builder instanceof discord_js_1.SlashCommandSubcommandBuilder) && !(builder instanceof discord_js_1.SlashCommandSubcommandGroupBuilder) && option.type !== discord_js_1.ApplicationCommandOptionType.Subcommand && option.type !== discord_js_1.ApplicationCommandOptionType.SubcommandGroup) {
|
|
216
|
-
builder.setRequired(option.required ?? false);
|
|
217
|
-
}
|
|
218
|
-
return builder
|
|
219
|
-
.setName(option.name)
|
|
220
|
-
.setDescription(option.description)
|
|
221
|
-
.setNameLocalizations(option.nameLocalizations ?? null)
|
|
222
|
-
.setDescriptionLocalizations(option.descriptionLocalizations ?? null);
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* Resolve slash command data/builder
|
|
226
|
-
* @param commandData Command data to resolve
|
|
227
|
-
*/
|
|
228
|
-
static resolveSlashCommand(commandData) {
|
|
229
|
-
return this.isSlashCommandBuilder(commandData) ? commandData : new SlashCommandBuilder(commandData);
|
|
230
|
-
}
|
|
231
|
-
/**
|
|
232
|
-
* Is a slash command builder
|
|
233
|
-
* @param builder data to check
|
|
234
|
-
*/
|
|
235
|
-
static isSlashCommandBuilder(builder) {
|
|
236
|
-
return builder instanceof SlashCommandBuilder;
|
|
237
|
-
}
|
|
238
|
-
/**
|
|
239
|
-
* Is a slash command execute data
|
|
240
|
-
* @param executeData data to check
|
|
241
|
-
*/
|
|
242
|
-
static isSlashCommandExecuteData(executeData) {
|
|
243
|
-
return executeData.builder !== undefined && this.isSlashCommandBuilder(executeData.builder);
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
exports.SlashCommandBuilder = SlashCommandBuilder;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SlashCommandBuilder = void 0;
|
|
4
|
+
const builders_1 = require("../../types/builders");
|
|
5
|
+
const util_1 = require("../../util");
|
|
6
|
+
const discord_js_1 = require("discord.js");
|
|
7
|
+
/**
|
|
8
|
+
* Reciple builder for slash command
|
|
9
|
+
*/
|
|
10
|
+
class SlashCommandBuilder extends discord_js_1.SlashCommandBuilder {
|
|
11
|
+
constructor(data) {
|
|
12
|
+
super();
|
|
13
|
+
this.type = builders_1.CommandType.SlashCommand;
|
|
14
|
+
this._cooldown = 0;
|
|
15
|
+
this._requiredBotPermissions = [];
|
|
16
|
+
this._requiredMemberPermissions = [];
|
|
17
|
+
this._execute = () => {
|
|
18
|
+
/* Execute */
|
|
19
|
+
};
|
|
20
|
+
// TODO: WTH
|
|
21
|
+
if (data?.name !== undefined)
|
|
22
|
+
this.setName(data.name);
|
|
23
|
+
if (data?.description !== undefined)
|
|
24
|
+
this.setDescription(data.description);
|
|
25
|
+
if (data?.cooldown !== undefined)
|
|
26
|
+
this.setCooldown(Number(data?.cooldown));
|
|
27
|
+
if (data?.requiredBotPermissions !== undefined)
|
|
28
|
+
this.setRequiredBotPermissions(data.requiredBotPermissions);
|
|
29
|
+
if (data?.requiredMemberPermissions !== undefined)
|
|
30
|
+
this.setRequiredMemberPermissions(data.requiredMemberPermissions);
|
|
31
|
+
if (data?.halt !== undefined)
|
|
32
|
+
this.setHalt(data.halt);
|
|
33
|
+
if (data?.execute !== undefined)
|
|
34
|
+
this.setExecute(data.execute);
|
|
35
|
+
if (data?.metadata !== undefined)
|
|
36
|
+
this.setMetadata(data.metadata);
|
|
37
|
+
if (data?.nameLocalizations !== undefined)
|
|
38
|
+
this.setNameLocalizations(data.nameLocalizations);
|
|
39
|
+
if (data?.descriptionLocalizations !== undefined)
|
|
40
|
+
this.setDescriptionLocalizations(data.descriptionLocalizations);
|
|
41
|
+
if (data?.defaultMemberPermissions !== undefined)
|
|
42
|
+
this.setDefaultMemberPermissions(data.defaultMemberPermissions);
|
|
43
|
+
if (data?.dmPermission !== undefined)
|
|
44
|
+
this.setDMPermission(true);
|
|
45
|
+
if (data?.defaultPermission !== undefined)
|
|
46
|
+
this.setDefaultPermission(true);
|
|
47
|
+
if (data?.options) {
|
|
48
|
+
for (const option of data.options) {
|
|
49
|
+
SlashCommandBuilder.addOption(this, (0, util_1.isClass)(option) ? option : SlashCommandBuilder.resolveOption(option));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
get cooldown() {
|
|
54
|
+
return this._cooldown;
|
|
55
|
+
}
|
|
56
|
+
get requiredBotPermissions() {
|
|
57
|
+
return this._requiredBotPermissions;
|
|
58
|
+
}
|
|
59
|
+
get requiredMemberPermissions() {
|
|
60
|
+
return this._requiredMemberPermissions;
|
|
61
|
+
}
|
|
62
|
+
get halt() {
|
|
63
|
+
return this._halt;
|
|
64
|
+
}
|
|
65
|
+
get execute() {
|
|
66
|
+
return this._execute;
|
|
67
|
+
}
|
|
68
|
+
set cooldown(cooldown) {
|
|
69
|
+
this.setCooldown(cooldown);
|
|
70
|
+
}
|
|
71
|
+
set requiredBotPermissions(permissions) {
|
|
72
|
+
this.setRequiredBotPermissions(permissions);
|
|
73
|
+
}
|
|
74
|
+
set requiredMemberPermissions(permissions) {
|
|
75
|
+
this.setRequiredMemberPermissions(permissions);
|
|
76
|
+
}
|
|
77
|
+
set halt(halt) {
|
|
78
|
+
this.setHalt(halt);
|
|
79
|
+
}
|
|
80
|
+
set execute(execute) {
|
|
81
|
+
this.setExecute(execute);
|
|
82
|
+
}
|
|
83
|
+
setCooldown(cooldown) {
|
|
84
|
+
this._cooldown = cooldown;
|
|
85
|
+
return this;
|
|
86
|
+
}
|
|
87
|
+
setRequiredBotPermissions(...permissions) {
|
|
88
|
+
this._requiredBotPermissions = (0, discord_js_1.normalizeArray)(permissions);
|
|
89
|
+
return this;
|
|
90
|
+
}
|
|
91
|
+
setRequiredMemberPermissions(...permissions) {
|
|
92
|
+
this._requiredMemberPermissions = (0, discord_js_1.normalizeArray)(permissions);
|
|
93
|
+
this.setDefaultMemberPermissions(this.requiredMemberPermissions.length ? new discord_js_1.PermissionsBitField(this.requiredMemberPermissions).bitfield : undefined);
|
|
94
|
+
return this;
|
|
95
|
+
}
|
|
96
|
+
setHalt(halt) {
|
|
97
|
+
this._halt = halt || undefined;
|
|
98
|
+
return this;
|
|
99
|
+
}
|
|
100
|
+
setExecute(execute) {
|
|
101
|
+
if ((0, discord_js_1.isValidationEnabled)() && (!execute || typeof execute !== 'function'))
|
|
102
|
+
throw new Error('execute must be a function.');
|
|
103
|
+
this._execute = execute;
|
|
104
|
+
return this;
|
|
105
|
+
}
|
|
106
|
+
setMetadata(metadata) {
|
|
107
|
+
this.metadata = metadata;
|
|
108
|
+
return this;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Add option builder to command builder
|
|
112
|
+
* @param builder Command/Subcommand builder
|
|
113
|
+
* @param option Option builder
|
|
114
|
+
*/
|
|
115
|
+
static addOption(builder, option) {
|
|
116
|
+
if (option instanceof discord_js_1.SlashCommandAttachmentOption) {
|
|
117
|
+
builder.addAttachmentOption(option);
|
|
118
|
+
}
|
|
119
|
+
else if (option instanceof discord_js_1.SlashCommandBooleanOption) {
|
|
120
|
+
builder.addBooleanOption(option);
|
|
121
|
+
}
|
|
122
|
+
else if (option instanceof discord_js_1.SlashCommandChannelOption) {
|
|
123
|
+
builder.addChannelOption(option);
|
|
124
|
+
}
|
|
125
|
+
else if (option instanceof discord_js_1.SlashCommandIntegerOption) {
|
|
126
|
+
builder.addIntegerOption(option);
|
|
127
|
+
}
|
|
128
|
+
else if (option instanceof discord_js_1.SlashCommandMentionableOption) {
|
|
129
|
+
builder.addMentionableOption(option);
|
|
130
|
+
}
|
|
131
|
+
else if (option instanceof discord_js_1.SlashCommandNumberOption) {
|
|
132
|
+
builder.addNumberOption(option);
|
|
133
|
+
}
|
|
134
|
+
else if (option instanceof discord_js_1.SlashCommandRoleOption) {
|
|
135
|
+
builder.addRoleOption(option);
|
|
136
|
+
}
|
|
137
|
+
else if (option instanceof discord_js_1.SlashCommandStringOption) {
|
|
138
|
+
builder.addStringOption(option);
|
|
139
|
+
}
|
|
140
|
+
else if (option instanceof discord_js_1.SlashCommandUserOption) {
|
|
141
|
+
builder.addUserOption(option);
|
|
142
|
+
}
|
|
143
|
+
else if (builder instanceof SlashCommandBuilder) {
|
|
144
|
+
if (option instanceof discord_js_1.SlashCommandSubcommandBuilder) {
|
|
145
|
+
builder.addSubcommand(option);
|
|
146
|
+
}
|
|
147
|
+
else if (option instanceof discord_js_1.SlashCommandSubcommandGroupBuilder) {
|
|
148
|
+
builder.addSubcommandGroup(option);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return builder;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Resolve option data
|
|
155
|
+
* @param option Option dara to resolve
|
|
156
|
+
*/
|
|
157
|
+
static resolveOption(option) {
|
|
158
|
+
let builder;
|
|
159
|
+
// TODO: I can do better than this
|
|
160
|
+
switch (option.type) {
|
|
161
|
+
case discord_js_1.ApplicationCommandOptionType.Attachment:
|
|
162
|
+
builder = new discord_js_1.SlashCommandAttachmentOption();
|
|
163
|
+
break;
|
|
164
|
+
case discord_js_1.ApplicationCommandOptionType.Boolean:
|
|
165
|
+
builder = new discord_js_1.SlashCommandBooleanOption();
|
|
166
|
+
break;
|
|
167
|
+
case discord_js_1.ApplicationCommandOptionType.Channel:
|
|
168
|
+
builder = new discord_js_1.SlashCommandChannelOption().addChannelTypes(...(option.channelTypes ?? []));
|
|
169
|
+
break;
|
|
170
|
+
case discord_js_1.ApplicationCommandOptionType.Integer:
|
|
171
|
+
builder = new discord_js_1.SlashCommandIntegerOption().addChoices(...(option.choices ?? [])).setAutocomplete(!!option.autocomplete);
|
|
172
|
+
if (option.maxValue)
|
|
173
|
+
builder.setMaxValue(option.maxValue);
|
|
174
|
+
if (option.minValue)
|
|
175
|
+
builder.setMinValue(option.minValue);
|
|
176
|
+
break;
|
|
177
|
+
case discord_js_1.ApplicationCommandOptionType.Mentionable:
|
|
178
|
+
builder = new discord_js_1.SlashCommandMentionableOption();
|
|
179
|
+
break;
|
|
180
|
+
case discord_js_1.ApplicationCommandOptionType.Number:
|
|
181
|
+
builder = new discord_js_1.SlashCommandNumberOption().addChoices(...(option.choices ?? [])).setAutocomplete(!!option.autocomplete);
|
|
182
|
+
if (option.maxValue)
|
|
183
|
+
builder.setMaxValue(option.maxValue);
|
|
184
|
+
if (option.minValue)
|
|
185
|
+
builder.setMinValue(option.minValue);
|
|
186
|
+
break;
|
|
187
|
+
case discord_js_1.ApplicationCommandOptionType.Role:
|
|
188
|
+
builder = new discord_js_1.SlashCommandRoleOption();
|
|
189
|
+
break;
|
|
190
|
+
case discord_js_1.ApplicationCommandOptionType.String:
|
|
191
|
+
builder = new discord_js_1.SlashCommandStringOption().addChoices(...(option.choices ?? [])).setAutocomplete(!!option.autocomplete);
|
|
192
|
+
if (option.maxLength)
|
|
193
|
+
builder.setMaxLength(option.maxLength);
|
|
194
|
+
if (option.minLength)
|
|
195
|
+
builder.setMinLength(option.minLength);
|
|
196
|
+
break;
|
|
197
|
+
case discord_js_1.ApplicationCommandOptionType.User:
|
|
198
|
+
builder = new discord_js_1.SlashCommandUserOption();
|
|
199
|
+
break;
|
|
200
|
+
case discord_js_1.ApplicationCommandOptionType.Subcommand:
|
|
201
|
+
builder = new discord_js_1.SlashCommandSubcommandBuilder();
|
|
202
|
+
for (const optionData of option.options) {
|
|
203
|
+
this.addOption(builder, this.resolveOption(optionData));
|
|
204
|
+
}
|
|
205
|
+
break;
|
|
206
|
+
case discord_js_1.ApplicationCommandOptionType.SubcommandGroup:
|
|
207
|
+
builder = new discord_js_1.SlashCommandSubcommandGroupBuilder();
|
|
208
|
+
for (const subCommandData of option.options) {
|
|
209
|
+
builder.addSubcommand(subCommandData instanceof discord_js_1.SlashCommandSubcommandBuilder ? subCommandData : this.resolveOption(subCommandData));
|
|
210
|
+
}
|
|
211
|
+
break;
|
|
212
|
+
default:
|
|
213
|
+
throw new TypeError('Unknown option data');
|
|
214
|
+
}
|
|
215
|
+
if (!(builder instanceof discord_js_1.SlashCommandSubcommandBuilder) && !(builder instanceof discord_js_1.SlashCommandSubcommandGroupBuilder) && option.type !== discord_js_1.ApplicationCommandOptionType.Subcommand && option.type !== discord_js_1.ApplicationCommandOptionType.SubcommandGroup) {
|
|
216
|
+
builder.setRequired(option.required ?? false);
|
|
217
|
+
}
|
|
218
|
+
return builder
|
|
219
|
+
.setName(option.name)
|
|
220
|
+
.setDescription(option.description)
|
|
221
|
+
.setNameLocalizations(option.nameLocalizations ?? null)
|
|
222
|
+
.setDescriptionLocalizations(option.descriptionLocalizations ?? null);
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Resolve slash command data/builder
|
|
226
|
+
* @param commandData Command data to resolve
|
|
227
|
+
*/
|
|
228
|
+
static resolveSlashCommand(commandData) {
|
|
229
|
+
return this.isSlashCommandBuilder(commandData) ? commandData : new SlashCommandBuilder(commandData);
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Is a slash command builder
|
|
233
|
+
* @param builder data to check
|
|
234
|
+
*/
|
|
235
|
+
static isSlashCommandBuilder(builder) {
|
|
236
|
+
return builder instanceof SlashCommandBuilder;
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Is a slash command execute data
|
|
240
|
+
* @param executeData data to check
|
|
241
|
+
*/
|
|
242
|
+
static isSlashCommandExecuteData(executeData) {
|
|
243
|
+
return executeData.builder !== undefined && this.isSlashCommandBuilder(executeData.builder);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
exports.SlashCommandBuilder = SlashCommandBuilder;
|