import type { Model } from '../Base.ts'; import type { Snowflake } from '../../Snowflake.ts'; import type { Session } from '../../Session.ts'; import type { ApplicationCommandTypes, DiscordInteraction, InteractionTypes } from '../../../discordeno/mod.ts'; import type { ApplicationCommandOptionChoice } from './BaseInteraction.ts'; import { InteractionResponseTypes } from '../../../discordeno/mod.ts'; import BaseInteraction from './BaseInteraction.ts'; import * as Routes from '../../Routes.ts'; export class AutoCompleteInteraction extends BaseInteraction implements Model { constructor(session: Session, data: DiscordInteraction) { super(session, data); this.type = data.type as number; this.commandId = data.data!.id; this.commandName = data.data!.name; this.commandType = data.data!.type; this.commandGuildId = data.data!.guild_id; } override type: InteractionTypes.ApplicationCommandAutocomplete; commandId: Snowflake; commandName: string; commandType: ApplicationCommandTypes; commandGuildId?: Snowflake; async respondWithChoices(choices: ApplicationCommandOptionChoice[]): Promise { await this.session.rest.runMethod( this.session.rest, 'POST', Routes.INTERACTION_ID_TOKEN(this.id, this.token), { data: { choices }, type: InteractionResponseTypes.ApplicationCommandAutocompleteResult, }, ); } } export default AutoCompleteInteraction;