mirror of
https://github.com/tiramisulabs/seyfert.git
synced 2025-07-02 04:56:07 +00:00
fix: guard types
This commit is contained in:
parent
d064b1b802
commit
942dbd12bf
@ -237,6 +237,50 @@ export class BaseInteraction<
|
||||
});
|
||||
}
|
||||
|
||||
isButton(): this is ButtonInteraction {
|
||||
return false;
|
||||
}
|
||||
|
||||
isChannelSelectMenu(): this is ChannelSelectMenuInteraction {
|
||||
return false;
|
||||
}
|
||||
|
||||
isRoleSelectMenu(): this is RoleSelectMenuInteraction {
|
||||
return false;
|
||||
}
|
||||
|
||||
isMentionableSelectMenu(): this is MentionableSelectMenuInteraction {
|
||||
return false;
|
||||
}
|
||||
|
||||
isUserSelectMenu(): this is UserSelectMenuInteraction {
|
||||
return false;
|
||||
}
|
||||
|
||||
isStringSelectMenu(): this is StringSelectMenuInteraction {
|
||||
return false;
|
||||
}
|
||||
|
||||
isChatInput(): this is ChatInputCommandInteraction {
|
||||
return false;
|
||||
}
|
||||
|
||||
isUser(): this is UserCommandInteraction {
|
||||
return false;
|
||||
}
|
||||
|
||||
isMessage(): this is MessageCommandInteraction {
|
||||
return false;
|
||||
}
|
||||
|
||||
isAutocomplete(): this is AutocompleteInteraction {
|
||||
return false;
|
||||
}
|
||||
|
||||
isModal(): this is ModalSubmitInteraction {
|
||||
return false;
|
||||
}
|
||||
|
||||
static from(client: UsingClient, gateway: GatewayInteractionCreateDispatchData, __reply?: __InternalReplyFunction) {
|
||||
switch (gateway.type) {
|
||||
case InteractionType.ApplicationCommandAutocomplete:
|
||||
@ -346,6 +390,10 @@ export class AutocompleteInteraction<FromGuild extends boolean = boolean> extend
|
||||
return super.reply({ data: { choices }, type: InteractionResponseType.ApplicationCommandAutocompleteResult });
|
||||
}
|
||||
|
||||
isAutocomplete(): this is AutocompleteInteraction {
|
||||
return true;
|
||||
}
|
||||
|
||||
/** @intenal */
|
||||
async reply(..._args: unknown[]) {
|
||||
throw new Error('Cannot use reply in this interaction');
|
||||
@ -420,7 +468,7 @@ export class ApplicationCommandInteraction<
|
||||
FromGuild extends boolean = boolean,
|
||||
Type extends APIApplicationCommandInteraction = APIApplicationCommandInteraction,
|
||||
> extends Interaction<FromGuild, Type> {
|
||||
type = ApplicationCommandType.ChatInput;
|
||||
type!: ApplicationCommandType;
|
||||
respond(
|
||||
data:
|
||||
| APIInteractionResponseChannelMessageWithSource
|
||||
@ -470,34 +518,14 @@ export class ComponentInteraction<
|
||||
get componentType() {
|
||||
return this.data.componentType;
|
||||
}
|
||||
|
||||
isButton(): this is ButtonInteraction {
|
||||
return this.data.componentType === ComponentType.Button;
|
||||
}
|
||||
|
||||
isChannelSelectMenu(): this is ChannelSelectMenuInteraction {
|
||||
return this.componentType === ComponentType.ChannelSelect;
|
||||
}
|
||||
|
||||
isRoleSelectMenu(): this is RoleSelectMenuInteraction {
|
||||
return this.componentType === ComponentType.RoleSelect;
|
||||
}
|
||||
|
||||
isMentionableSelectMenu(): this is MentionableSelectMenuInteraction {
|
||||
return this.componentType === ComponentType.MentionableSelect;
|
||||
}
|
||||
|
||||
isUserSelectMenu(): this is UserSelectMenuInteraction {
|
||||
return this.componentType === ComponentType.UserSelect;
|
||||
}
|
||||
|
||||
isStringSelectMenu(): this is StringSelectMenuInteraction {
|
||||
return this.componentType === ComponentType.StringSelect;
|
||||
}
|
||||
}
|
||||
|
||||
export class ButtonInteraction extends ComponentInteraction {
|
||||
declare data: ObjectToLower<APIMessageButtonInteractionData>;
|
||||
|
||||
isButton(): this is ButtonInteraction {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
export class SelectMenuInteraction extends ComponentInteraction {
|
||||
@ -519,11 +547,15 @@ export class SelectMenuInteraction extends ComponentInteraction {
|
||||
export class StringSelectMenuInteraction<
|
||||
T extends any[] = string[],
|
||||
> extends (SelectMenuInteraction as unknown as ToClass<
|
||||
Omit<SelectMenuInteraction, 'data'>,
|
||||
Omit<SelectMenuInteraction, 'data' | 'isStringSelectMenu'>,
|
||||
StringSelectMenuInteraction
|
||||
>) {
|
||||
declare data: OmitInsert<ObjectToLower<APIMessageStringSelectInteractionData>, 'values', { values: T }>;
|
||||
declare values: T;
|
||||
|
||||
isStringSelectMenu(): this is StringSelectMenuInteraction {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
export class ChannelSelectMenuInteraction extends SelectMenuInteraction {
|
||||
@ -537,6 +569,10 @@ export class ChannelSelectMenuInteraction extends SelectMenuInteraction {
|
||||
const resolved = (interaction.data as APIMessageChannelSelectInteractionData).resolved;
|
||||
this.channels = this.values.map(x => channelFrom(resolved.channels[x], this.client));
|
||||
}
|
||||
|
||||
isChannelSelectMenu(): this is ChannelSelectMenuInteraction {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
export class MentionableSelectMenuInteraction extends SelectMenuInteraction {
|
||||
@ -565,6 +601,10 @@ export class MentionableSelectMenuInteraction extends SelectMenuInteraction {
|
||||
: [];
|
||||
this.users = resolved.users ? this.values.map(x => Transformers.User(this.client, resolved.users![x])) : [];
|
||||
}
|
||||
|
||||
isMentionableSelectMenu(): this is MentionableSelectMenuInteraction {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
export class RoleSelectMenuInteraction extends SelectMenuInteraction {
|
||||
@ -578,6 +618,10 @@ export class RoleSelectMenuInteraction extends SelectMenuInteraction {
|
||||
const resolved = (interaction.data as APIMessageRoleSelectInteractionData).resolved;
|
||||
this.roles = this.values.map(x => Transformers.GuildRole(this.client, resolved.roles[x], this.guildId!));
|
||||
}
|
||||
|
||||
isRoleSelectMenu(): this is RoleSelectMenuInteraction {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
export class UserSelectMenuInteraction extends SelectMenuInteraction {
|
||||
@ -602,6 +646,10 @@ export class UserSelectMenuInteraction extends SelectMenuInteraction {
|
||||
)
|
||||
: [];
|
||||
}
|
||||
|
||||
isUserSelectMenu(): this is UserSelectMenuInteraction {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
export class ChatInputCommandInteraction<FromGuild extends boolean = boolean> extends ApplicationCommandInteraction<
|
||||
@ -609,6 +657,10 @@ export class ChatInputCommandInteraction<FromGuild extends boolean = boolean> ex
|
||||
APIChatInputApplicationCommandInteraction
|
||||
> {
|
||||
declare data: ObjectToLower<APIChatInputApplicationCommandInteractionData>;
|
||||
|
||||
isChatInput(): this is ChatInputCommandInteraction {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
export class UserCommandInteraction<FromGuild extends boolean = boolean> extends ApplicationCommandInteraction<
|
||||
@ -617,6 +669,10 @@ export class UserCommandInteraction<FromGuild extends boolean = boolean> extends
|
||||
> {
|
||||
declare type: ApplicationCommandType.User;
|
||||
declare data: ObjectToLower<APIUserApplicationCommandInteractionData>;
|
||||
|
||||
isUser(): this is UserCommandInteraction {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
export class MessageCommandInteraction<FromGuild extends boolean = boolean> extends ApplicationCommandInteraction<
|
||||
@ -625,6 +681,10 @@ export class MessageCommandInteraction<FromGuild extends boolean = boolean> exte
|
||||
> {
|
||||
declare type: ApplicationCommandType.Message;
|
||||
declare data: ObjectToLower<APIMessageApplicationCommandInteractionData>;
|
||||
|
||||
isMessage(): this is MessageCommandInteraction {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
export interface ModalSubmitInteraction<FromGuild extends boolean = boolean>
|
||||
@ -654,4 +714,8 @@ export class ModalSubmitInteraction<FromGuild extends boolean = boolean> extends
|
||||
if (!value && required) throw new Error(`${customId} component doesn't have a value`);
|
||||
return value;
|
||||
}
|
||||
|
||||
isModal(): this is ModalSubmitInteraction {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user