lunibee 0.2.0 → 0.2.2

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 (45) hide show
  1. package/README.md +6 -6
  2. package/dist/builders/attachment.d.ts +5 -1
  3. package/dist/builders/commands.d.ts +131 -45
  4. package/dist/builders/components.d.ts +183 -41
  5. package/dist/builders/embed.d.ts +12 -8
  6. package/dist/builders/index.d.ts +9 -4
  7. package/dist/builders/index.js +234 -110
  8. package/dist/builders/index.js.map +8 -8
  9. package/dist/core/events.d.ts +28 -12
  10. package/dist/core/index.d.ts +5 -3
  11. package/dist/core/index.js +414 -78
  12. package/dist/core/index.js.map +18 -18
  13. package/dist/core/permissions.d.ts +6 -2
  14. package/dist/index.d.ts +5 -4
  15. package/dist/index.js +869 -194
  16. package/dist/index.js.map +25 -24
  17. package/dist/managers/guild-resources.d.ts +22 -2
  18. package/dist/managers/guild.d.ts +3 -1
  19. package/dist/managers/index.d.ts +7 -3
  20. package/dist/managers/index.js +167 -33
  21. package/dist/managers/index.js.map +13 -13
  22. package/dist/managers/member.d.ts +13 -12
  23. package/dist/managers/message.d.ts +16 -4
  24. package/dist/rest/index.js +2 -2
  25. package/dist/rest/index.js.map +1 -1
  26. package/dist/sharding/index.js +3 -2
  27. package/dist/sharding/index.js.map +4 -4
  28. package/dist/structures/base.d.ts +36 -0
  29. package/dist/structures/index.d.ts +38 -3
  30. package/dist/structures/index.js +240 -34
  31. package/dist/structures/index.js.map +11 -11
  32. package/dist/structures/interactions.d.ts +110 -12
  33. package/dist/structures/options.d.ts +2 -0
  34. package/dist/structures/resources.d.ts +40 -4
  35. package/dist/types/gateway.d.ts +14 -0
  36. package/dist/types/index.d.ts +185 -10
  37. package/dist/types/index.js +37 -10
  38. package/dist/types/index.js.map +4 -4
  39. package/dist/utils/args.d.ts +79 -0
  40. package/dist/utils/index.d.ts +1 -0
  41. package/dist/utils/index.js +190 -2
  42. package/dist/utils/index.js.map +5 -4
  43. package/dist/ws/index.js +2 -1
  44. package/dist/ws/index.js.map +4 -4
  45. package/package.json +14 -14
package/README.md CHANGED
@@ -162,12 +162,12 @@ Available lifecycle methods include `reply()`, `deferReply()`, `editReply()`, `d
162
162
 
163
163
  Lunibee provides strict builders for Discord payloads (Discord.js V2 compatible), including:
164
164
 
165
- - `ActionRowBuilder`
166
- - `ButtonBuilder`
167
- - `StringSelectBuilder`
168
- - `EmbedBuilder`
169
- - `ModalBuilder`
170
- - `TextInputBuilder`
165
+ - `CreateActionRow`
166
+ - `CreateButton`
167
+ - `CreateStringSelect`
168
+ - `CreateEmbed`
169
+ - `CreateModal`
170
+ - `CreateTextInput`
171
171
 
172
172
  Builders validate Discord limits before serialization and expose typed `toJSON()` payloads.
173
173
 
@@ -4,7 +4,7 @@ export interface AttachmentData {
4
4
  file: Uint8Array | ArrayBuffer | Blob | Buffer | string;
5
5
  }
6
6
  /** Builder for message attachments and file uploads. */
7
- export declare class AttachmentBuilder {
7
+ export declare class CreateAttachment {
8
8
  name: string;
9
9
  description?: string;
10
10
  file: Uint8Array | ArrayBuffer | Blob | Buffer | string;
@@ -18,3 +18,7 @@ export declare class AttachmentBuilder {
18
18
  /** Resolves the attachment payload to a binary Uint8Array. */
19
19
  toBuffer(): Promise<Uint8Array>;
20
20
  }
21
+ /** @deprecated Use {@link CreateAttachment}. Removed in 2.0. */
22
+ export declare const AttachmentBuilder: typeof CreateAttachment;
23
+ /** @deprecated Use {@link CreateAttachment}. Removed in 2.0. */
24
+ export type AttachmentBuilder = CreateAttachment;
@@ -1,5 +1,5 @@
1
1
  /** Discord application command option types. */
2
- export declare const ApplicationCommandOptionType: {
2
+ export declare const ApplicationCommandOptionEnum: {
3
3
  readonly Subcommand: 1;
4
4
  readonly SubcommandGroup: 2;
5
5
  readonly String: 3;
@@ -12,8 +12,10 @@ export declare const ApplicationCommandOptionType: {
12
12
  readonly Number: 10;
13
13
  readonly Attachment: 11;
14
14
  };
15
+ /** One {@link ApplicationCommandOptionEnum} value, usable as a type. */
16
+ export type ApplicationCommandOptionEnum = (typeof ApplicationCommandOptionEnum)[keyof typeof ApplicationCommandOptionEnum];
15
17
  /** Builds Discord application command payloads. */
16
- export declare class SlashCommandBuilder {
18
+ export declare class CreateSlashCommand {
17
19
  #private;
18
20
  /** Sets the command name. */ setName(name: string): this;
19
21
  /** Sets the command description. */ setDescription(description: string): this;
@@ -24,22 +26,22 @@ export declare class SlashCommandBuilder {
24
26
  setNsfw(nsfw?: boolean): this;
25
27
  /** Sets command default member permissions. */ setDefaultMemberPermissions(permissions: bigint | number | string | null): this;
26
28
  /** Sets command integration types. */ setIntegrationTypes(...types: number[]): this;
27
- /** Adds a string option. */ addStringOption(configure: (option: StringOptionBuilder) => StringOptionBuilder): this;
28
- /** Adds an integer option. */ addIntegerOption(configure: (option: IntegerOptionBuilder) => IntegerOptionBuilder): this;
29
- /** Adds a number option. */ addNumberOption(configure: (option: NumberOptionBuilder) => NumberOptionBuilder): this;
30
- /** Adds a boolean option. */ addBooleanOption(configure: (option: BooleanOptionBuilder) => BooleanOptionBuilder): this;
31
- /** Adds a user option. */ addUserOption(configure: (option: UserOptionBuilder) => UserOptionBuilder): this;
32
- /** Adds a channel option. */ addChannelOption(configure: (option: ChannelOptionBuilder) => ChannelOptionBuilder): this;
33
- /** Adds a role option. */ addRoleOption(configure: (option: RoleOptionBuilder) => RoleOptionBuilder): this;
34
- /** Adds a mentionable option. */ addMentionableOption(configure: (option: MentionableOptionBuilder) => MentionableOptionBuilder): this;
35
- /** Adds an attachment option. */ addAttachmentOption(configure: (option: AttachmentOptionBuilder) => AttachmentOptionBuilder): this;
36
- /** Adds a subcommand. */ addSubcommand(configure: (option: SubcommandBuilder) => SubcommandBuilder): this;
37
- /** Adds a subcommand group. */ addSubcommandGroup(configure: (option: SubcommandGroupBuilder) => SubcommandGroupBuilder): this;
29
+ /** Adds a string option. */ addStringOption(configure: (option: CreateStringOption) => CreateStringOption): this;
30
+ /** Adds an integer option. */ addIntegerOption(configure: (option: CreateIntegerOption) => CreateIntegerOption): this;
31
+ /** Adds a number option. */ addNumberOption(configure: (option: CreateNumberOption) => CreateNumberOption): this;
32
+ /** Adds a boolean option. */ addBooleanOption(configure: (option: CreateBooleanOption) => CreateBooleanOption): this;
33
+ /** Adds a user option. */ addUserOption(configure: (option: CreateUserOption) => CreateUserOption): this;
34
+ /** Adds a channel option. */ addChannelOption(configure: (option: CreateChannelOption) => CreateChannelOption): this;
35
+ /** Adds a role option. */ addRoleOption(configure: (option: CreateRoleOption) => CreateRoleOption): this;
36
+ /** Adds a mentionable option. */ addMentionableOption(configure: (option: CreateMentionableOption) => CreateMentionableOption): this;
37
+ /** Adds an attachment option. */ addAttachmentOption(configure: (option: CreateAttachmentOption) => CreateAttachmentOption): this;
38
+ /** Adds a subcommand. */ addSubcommand(configure: (option: CreateSubcommand) => CreateSubcommand): this;
39
+ /** Adds a subcommand group. */ addSubcommandGroup(configure: (option: CreateSubcommandGroup) => CreateSubcommandGroup): this;
38
40
  /** Serializes the command payload. */ toJSON(): Record<string, unknown>;
39
- /** Adds a validated top-level command option. */ protected addOption(option: CommandOptionBuilder): this;
41
+ /** Adds a validated top-level command option. */ protected addOption(option: CreateCommandOption): this;
40
42
  }
41
43
  /** Base builder for command options. */
42
- export declare class CommandOptionBuilder {
44
+ export declare class CreateCommandOption {
43
45
  protected readonly data: Record<string, unknown>;
44
46
  /** Creates an option builder. */ constructor(type: number);
45
47
  /** Sets the option name. */ setName(name: string): this;
@@ -49,7 +51,7 @@ export declare class CommandOptionBuilder {
49
51
  /** Serializes the option payload. */ toJSON(): Record<string, unknown>;
50
52
  }
51
53
  /** Builds a string command option. */
52
- export declare class StringOptionBuilder extends CommandOptionBuilder {
54
+ export declare class CreateStringOption extends CreateCommandOption {
53
55
  /** Creates a string option. */ constructor();
54
56
  /** Adds string choices. */ addChoices(...choices: Array<{
55
57
  name: string;
@@ -59,7 +61,7 @@ export declare class StringOptionBuilder extends CommandOptionBuilder {
59
61
  /** Sets the maximum string length. */ setMaxLength(value: number): this;
60
62
  }
61
63
  /** Builds an integer command option. */
62
- export declare class IntegerOptionBuilder extends CommandOptionBuilder {
64
+ export declare class CreateIntegerOption extends CreateCommandOption {
63
65
  constructor();
64
66
  setMinValue(value: number): this;
65
67
  setMaxValue(value: number): this;
@@ -70,7 +72,7 @@ export declare class IntegerOptionBuilder extends CommandOptionBuilder {
70
72
  }[]): this;
71
73
  }
72
74
  /** Builds a number command option. */
73
- export declare class NumberOptionBuilder extends CommandOptionBuilder {
75
+ export declare class CreateNumberOption extends CreateCommandOption {
74
76
  constructor();
75
77
  setMinValue(value: number): this;
76
78
  setMaxValue(value: number): this;
@@ -80,45 +82,45 @@ export declare class NumberOptionBuilder extends CommandOptionBuilder {
80
82
  value: number;
81
83
  }[]): this;
82
84
  }
83
- /** Builds a boolean command option. */ export declare class BooleanOptionBuilder extends CommandOptionBuilder {
85
+ /** Builds a boolean command option. */ export declare class CreateBooleanOption extends CreateCommandOption {
84
86
  /** Creates a boolean option. */ constructor();
85
87
  }
86
- /** Builds a user command option. */ export declare class UserOptionBuilder extends CommandOptionBuilder {
88
+ /** Builds a user command option. */ export declare class CreateUserOption extends CreateCommandOption {
87
89
  /** Creates a user option. */ constructor();
88
90
  }
89
- /** Builds a role command option. */ export declare class RoleOptionBuilder extends CommandOptionBuilder {
91
+ /** Builds a role command option. */ export declare class CreateRoleOption extends CreateCommandOption {
90
92
  /** Creates a role option. */ constructor();
91
93
  }
92
- /** Builds a mentionable command option. */ export declare class MentionableOptionBuilder extends CommandOptionBuilder {
94
+ /** Builds a mentionable command option. */ export declare class CreateMentionableOption extends CreateCommandOption {
93
95
  /** Creates a mentionable option. */ constructor();
94
96
  }
95
- /** Builds an attachment command option. */ export declare class AttachmentOptionBuilder extends CommandOptionBuilder {
97
+ /** Builds an attachment command option. */ export declare class CreateAttachmentOption extends CreateCommandOption {
96
98
  /** Creates an attachment option. */ constructor();
97
99
  }
98
- /** Builds a channel command option. */ export declare class ChannelOptionBuilder extends CommandOptionBuilder {
100
+ /** Builds a channel command option. */ export declare class CreateChannelOption extends CreateCommandOption {
99
101
  /** Creates a channel option. */ constructor();
100
102
  /** Restricts accepted channel types. */ addChannelTypes(...types: number[]): this;
101
103
  }
102
- /** Builds a nested subcommand. */ export declare class SubcommandBuilder extends CommandOptionBuilder {
104
+ /** Builds a nested subcommand. */ export declare class CreateSubcommand extends CreateCommandOption {
103
105
  /** Creates a subcommand. */ constructor();
104
- /** Adds a string option to this subcommand. */ addStringOption(configure: (option: StringOptionBuilder) => StringOptionBuilder): this;
105
- /** Adds an integer option to this subcommand. */ addIntegerOption(configure: (option: IntegerOptionBuilder) => IntegerOptionBuilder): this;
106
- /** Adds a number option to this subcommand. */ addNumberOption(configure: (option: NumberOptionBuilder) => NumberOptionBuilder): this;
107
- /** Adds a boolean option to this subcommand. */ addBooleanOption(configure: (option: BooleanOptionBuilder) => BooleanOptionBuilder): this;
108
- /** Adds a user option to this subcommand. */ addUserOption(configure: (option: UserOptionBuilder) => UserOptionBuilder): this;
109
- /** Adds a channel option to this subcommand. */ addChannelOption(configure: (option: ChannelOptionBuilder) => ChannelOptionBuilder): this;
110
- /** Adds a role option to this subcommand. */ addRoleOption(configure: (option: RoleOptionBuilder) => RoleOptionBuilder): this;
111
- /** Adds a mentionable option to this subcommand. */ addMentionableOption(configure: (option: MentionableOptionBuilder) => MentionableOptionBuilder): this;
112
- /** Adds an attachment option to this subcommand. */ addAttachmentOption(configure: (option: AttachmentOptionBuilder) => AttachmentOptionBuilder): this;
113
- protected addChildOption(option: CommandOptionBuilder): this;
114
- }
115
- /** Builds a nested subcommand group. */ export declare class SubcommandGroupBuilder extends CommandOptionBuilder {
106
+ /** Adds a string option to this subcommand. */ addStringOption(configure: (option: CreateStringOption) => CreateStringOption): this;
107
+ /** Adds an integer option to this subcommand. */ addIntegerOption(configure: (option: CreateIntegerOption) => CreateIntegerOption): this;
108
+ /** Adds a number option to this subcommand. */ addNumberOption(configure: (option: CreateNumberOption) => CreateNumberOption): this;
109
+ /** Adds a boolean option to this subcommand. */ addBooleanOption(configure: (option: CreateBooleanOption) => CreateBooleanOption): this;
110
+ /** Adds a user option to this subcommand. */ addUserOption(configure: (option: CreateUserOption) => CreateUserOption): this;
111
+ /** Adds a channel option to this subcommand. */ addChannelOption(configure: (option: CreateChannelOption) => CreateChannelOption): this;
112
+ /** Adds a role option to this subcommand. */ addRoleOption(configure: (option: CreateRoleOption) => CreateRoleOption): this;
113
+ /** Adds a mentionable option to this subcommand. */ addMentionableOption(configure: (option: CreateMentionableOption) => CreateMentionableOption): this;
114
+ /** Adds an attachment option to this subcommand. */ addAttachmentOption(configure: (option: CreateAttachmentOption) => CreateAttachmentOption): this;
115
+ protected addChildOption(option: CreateCommandOption): this;
116
+ }
117
+ /** Builds a nested subcommand group. */ export declare class CreateSubcommandGroup extends CreateCommandOption {
116
118
  /** Creates a subcommand group. */ constructor();
117
- /** Adds a subcommand to this group. */ addSubcommand(configure: (option: SubcommandBuilder) => SubcommandBuilder): this;
119
+ /** Adds a subcommand to this group. */ addSubcommand(configure: (option: CreateSubcommand) => CreateSubcommand): this;
118
120
  }
119
121
  /** Builder for application commands that appear in right-click context menus.
120
- * Discord.js-familiar: `new ContextMenuCommandBuilder().setName("x").setType(2)`. */
121
- export declare class ContextMenuCommandBuilder {
122
+ * Discord.js-familiar: `new CreateContextMenuCommand().setName("x").setType(2)`. */
123
+ export declare class CreateContextMenuCommand {
122
124
  protected readonly data: Record<string, unknown>;
123
125
  constructor(type?: 2 | 3);
124
126
  /** Sets the command type: 2 = USER, 3 = MESSAGE. @throws {RangeError} For any other type. */
@@ -136,22 +138,106 @@ export declare class ContextMenuCommandBuilder {
136
138
  setDefaultMemberPermissions(permissions: bigint | number | string | null): this;
137
139
  /** Sets whether the command is available in direct messages. */
138
140
  setDMPermission(enabled: boolean): this;
139
- /** Sets command integration types. */
141
+ /** Sets command integration types (0 guild install, 1 user install). */
140
142
  setIntegrationTypes(...types: number[]): this;
143
+ /** Sets where the command can be used: 0 guilds, 1 the bot's DMs, 2 other DMs. @throws {RangeError} For any other value. */
144
+ setContexts(...contexts: number[]): this;
145
+ /** Sets the name shown per locale, e.g. `{ "es-ES": "Ver perfil" }`; null clears it. */
146
+ setNameLocalizations(localizations: Record<string, string> | null): this;
141
147
  /** Serializes the command payload for the Discord API. */
142
148
  toJSON(): Record<string, unknown>;
143
149
  }
144
150
  /** Builds a User context menu command (appears when right-clicking a user, type 2).
145
151
  * @example
146
- * new UserCommandBuilder().setName("View Profile").toJSON()
152
+ * new CreateUserCommand().setName("View Profile").toJSON()
147
153
  */
148
- export declare class UserCommandBuilder extends ContextMenuCommandBuilder {
154
+ export declare class CreateUserCommand extends CreateContextMenuCommand {
149
155
  constructor();
150
156
  }
151
157
  /** Builds a Message context menu command (appears when right-clicking a message, type 3).
152
158
  * @example
153
- * new MessageCommandBuilder().setName("Translate Message").toJSON()
159
+ * new CreateMessageCommand().setName("Translate Message").toJSON()
154
160
  */
155
- export declare class MessageCommandBuilder extends ContextMenuCommandBuilder {
161
+ export declare class CreateMessageCommand extends CreateContextMenuCommand {
156
162
  constructor();
157
163
  }
164
+ /** @deprecated Use {@link CreateAttachmentOption}. Removed in 2.0. */
165
+ export declare const AttachmentOptionBuilder: typeof CreateAttachmentOption;
166
+ /** @deprecated Use {@link CreateAttachmentOption}. Removed in 2.0. */
167
+ export type AttachmentOptionBuilder = CreateAttachmentOption;
168
+ /** @deprecated Use {@link CreateBooleanOption}. Removed in 2.0. */
169
+ export declare const BooleanOptionBuilder: typeof CreateBooleanOption;
170
+ /** @deprecated Use {@link CreateBooleanOption}. Removed in 2.0. */
171
+ export type BooleanOptionBuilder = CreateBooleanOption;
172
+ /** @deprecated Use {@link CreateChannelOption}. Removed in 2.0. */
173
+ export declare const ChannelOptionBuilder: typeof CreateChannelOption;
174
+ /** @deprecated Use {@link CreateChannelOption}. Removed in 2.0. */
175
+ export type ChannelOptionBuilder = CreateChannelOption;
176
+ /** @deprecated Use {@link CreateCommandOption}. Removed in 2.0. */
177
+ export declare const CommandOptionBuilder: typeof CreateCommandOption;
178
+ /** @deprecated Use {@link CreateCommandOption}. Removed in 2.0. */
179
+ export type CommandOptionBuilder = CreateCommandOption;
180
+ /** @deprecated Use {@link CreateContextMenuCommand}. Removed in 2.0. */
181
+ export declare const ContextMenuCommandBuilder: typeof CreateContextMenuCommand;
182
+ /** @deprecated Use {@link CreateContextMenuCommand}. Removed in 2.0. */
183
+ export type ContextMenuCommandBuilder = CreateContextMenuCommand;
184
+ /** @deprecated Use {@link CreateIntegerOption}. Removed in 2.0. */
185
+ export declare const IntegerOptionBuilder: typeof CreateIntegerOption;
186
+ /** @deprecated Use {@link CreateIntegerOption}. Removed in 2.0. */
187
+ export type IntegerOptionBuilder = CreateIntegerOption;
188
+ /** @deprecated Use {@link CreateMentionableOption}. Removed in 2.0. */
189
+ export declare const MentionableOptionBuilder: typeof CreateMentionableOption;
190
+ /** @deprecated Use {@link CreateMentionableOption}. Removed in 2.0. */
191
+ export type MentionableOptionBuilder = CreateMentionableOption;
192
+ /** @deprecated Use {@link CreateMessageCommand}. Removed in 2.0. */
193
+ export declare const MessageCommandBuilder: typeof CreateMessageCommand;
194
+ /** @deprecated Use {@link CreateMessageCommand}. Removed in 2.0. */
195
+ export type MessageCommandBuilder = CreateMessageCommand;
196
+ /** @deprecated Use {@link CreateNumberOption}. Removed in 2.0. */
197
+ export declare const NumberOptionBuilder: typeof CreateNumberOption;
198
+ /** @deprecated Use {@link CreateNumberOption}. Removed in 2.0. */
199
+ export type NumberOptionBuilder = CreateNumberOption;
200
+ /** @deprecated Use {@link CreateRoleOption}. Removed in 2.0. */
201
+ export declare const RoleOptionBuilder: typeof CreateRoleOption;
202
+ /** @deprecated Use {@link CreateRoleOption}. Removed in 2.0. */
203
+ export type RoleOptionBuilder = CreateRoleOption;
204
+ /** @deprecated Use {@link CreateSlashCommand}. Removed in 2.0. */
205
+ export declare const SlashCommandBuilder: typeof CreateSlashCommand;
206
+ /** @deprecated Use {@link CreateSlashCommand}. Removed in 2.0. */
207
+ export type SlashCommandBuilder = CreateSlashCommand;
208
+ /** @deprecated Use {@link CreateStringOption}. Removed in 2.0. */
209
+ export declare const StringOptionBuilder: typeof CreateStringOption;
210
+ /** @deprecated Use {@link CreateStringOption}. Removed in 2.0. */
211
+ export type StringOptionBuilder = CreateStringOption;
212
+ /** @deprecated Use {@link CreateSubcommand}. Removed in 2.0. */
213
+ export declare const SubcommandBuilder: typeof CreateSubcommand;
214
+ /** @deprecated Use {@link CreateSubcommand}. Removed in 2.0. */
215
+ export type SubcommandBuilder = CreateSubcommand;
216
+ /** @deprecated Use {@link CreateSubcommandGroup}. Removed in 2.0. */
217
+ export declare const SubcommandGroupBuilder: typeof CreateSubcommandGroup;
218
+ /** @deprecated Use {@link CreateSubcommandGroup}. Removed in 2.0. */
219
+ export type SubcommandGroupBuilder = CreateSubcommandGroup;
220
+ /** @deprecated Use {@link CreateUserCommand}. Removed in 2.0. */
221
+ export declare const UserCommandBuilder: typeof CreateUserCommand;
222
+ /** @deprecated Use {@link CreateUserCommand}. Removed in 2.0. */
223
+ export type UserCommandBuilder = CreateUserCommand;
224
+ /** @deprecated Use {@link CreateUserOption}. Removed in 2.0. */
225
+ export declare const UserOptionBuilder: typeof CreateUserOption;
226
+ /** @deprecated Use {@link CreateUserOption}. Removed in 2.0. */
227
+ export type UserOptionBuilder = CreateUserOption;
228
+ /** @deprecated Use {@link ApplicationCommandOptionEnum}. Removed in 2.0. */
229
+ export declare const ApplicationCommandOptionType: {
230
+ readonly Subcommand: 1;
231
+ readonly SubcommandGroup: 2;
232
+ readonly String: 3;
233
+ readonly Integer: 4;
234
+ readonly Boolean: 5;
235
+ readonly User: 6;
236
+ readonly Channel: 7;
237
+ readonly Role: 8;
238
+ readonly Mentionable: 9;
239
+ readonly Number: 10;
240
+ readonly Attachment: 11;
241
+ };
242
+ /** @deprecated Use {@link ApplicationCommandOptionEnum}. Removed in 2.0. */
243
+ export type ApplicationCommandOptionType = ApplicationCommandOptionEnum;