···
20
+
SUB_COMMAND_GROUP = 2,
28
-
SUB_COMMAND_GROUP = 2,
32
-
export type RegisteredCommandOption = {
32
+
export enum ChannelType {
38
+
GUILD_ANNOUNCEMENT = 5,
40
+
ANNOUNCEMENT_THREAD = 10,
42
+
PRIVATE_THREAD = 12,
43
+
GUILD_STAGE_VOICE = 13,
44
+
GUILD_DIRECTORY = 14,
51
+
export type RegisteredCommandOption = MoonlightCommandOption & {
36
-
description: string;
displayDescription: string;
40
-
export type MoonlightCommandOption = {
56
+
export type CommandOptionChoice<T> = {
61
+
type CommandOptionBase<T> = {
65
+
required?: T extends OptionType.SUB_COMMAND
67
+
: T extends OptionType.SUB_COMMAND_GROUP
69
+
: boolean | undefined;
70
+
choices?: T extends OptionType.STRING
71
+
? CommandOptionChoice<string>[]
72
+
: T extends OptionType.INTEGER
73
+
? CommandOptionChoice<number>[]
74
+
: T extends OptionType.NUMBER
75
+
? CommandOptionChoice<number>[]
77
+
options?: T extends OptionType.SUB_COMMAND
78
+
? MoonlightCommandOption[]
79
+
: T extends OptionType.SUB_COMMAND_GROUP
80
+
? MoonlightCommandOption[]
82
+
channelTypes?: T extends OptionType.CHANNEL ? ChannelType[] : never;
83
+
minValue?: T extends OptionType.INTEGER ? number : T extends OptionType.NUMBER ? number : never;
84
+
maxValue?: T extends OptionType.INTEGER ? number : T extends OptionType.NUMBER ? number : never;
85
+
minLength?: T extends OptionType.STRING ? number : never;
86
+
maxLength?: T extends OptionType.STRING ? number : never;
90
+
export type MoonlightCommandOption =
91
+
| CommandOptionBase<OptionType.SUB_COMMAND>
92
+
| CommandOptionBase<OptionType.SUB_COMMAND_GROUP>
93
+
| CommandOptionBase<OptionType.STRING>
94
+
| CommandOptionBase<OptionType.INTEGER>
95
+
| CommandOptionBase<OptionType.BOOLEAN>
96
+
| CommandOptionBase<OptionType.USER>
97
+
| CommandOptionBase<OptionType.CHANNEL>
98
+
| CommandOptionBase<OptionType.ROLE>
99
+
| CommandOptionBase<OptionType.MENTIONABLE>
100
+
| CommandOptionBase<OptionType.NUMBER>
101
+
| CommandOptionBase<OptionType.ATTACHMENT>;
export type CommandPredicateState = {
···
applicationId: string; // set to -3!
untranslatedDescription: string;
displayDescription: string;
61
-
options: RegisteredCommandOption[];
118
+
options?: RegisteredCommandOption[];
predicate?: (state: CommandPredicateState) => boolean;
execute: (options: CommandOption[]) => void;
···
* You likely want BUILT_IN (or BUILT_IN_TEXT if usable with replies)
79
-
options: MoonlightCommandOption[];
136
+
options?: MoonlightCommandOption[];
predicate?: (state: CommandPredicateState) => boolean;
execute: (options: CommandOption[]) => void;
···
153
+
type: OptionType.NUMBER | OptionType.INTEGER;
157
+
type: OptionType.BOOLEAN;
161
+
type: OptionType.SUB_COMMAND | OptionType.SUB_COMMAND_GROUP;
162
+
options: CommandOption[];