{"version":3,"file":"UserCommandInteraction.mjs","sourceRoot":"","sources":["../../src/interactions/UserCommandInteraction.mts"],"names":[],"mappings":"AACA,OAAO,EAA4F,4BAA4B,EAA0B,MAAM,uBAAuB,CAAC;AACvL,OAAO,EAAE,kCAAkC,IAAI,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AAC9G,OAAO,IAAI,MAAM,sBAAsB,CAAC;AACxC,OAAO,6BAA6B,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAuB,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG/E,MAAM,CAAC,OAAO,OAAO,sBAAuB,SAAQ,6BAA6B;IAY7E,YAAY,WAAiD;QACzD,KAAK,CAAC,WAAW,CAAC,CAAC;QAVvB,sEAAsE;QACtE;;;;;WAA0C;QAC1C,gCAAgC;QAChC;;;;;WAAiB;QACjB,sBAAsB;QACtB;;;;;WAAiB;QACjB,wBAAwB;QACxB;;;;;WAA8C;QAK1C,IAAI,CAAC,OAAO,GAAG,IAAI,gCAAgC,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACpF,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;QAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAE3E,IAAI,IAAI,CAAC,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;YAClE,IAAI,CAAC,YAAY,GAAG,IAAI,8BAA8B,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE9I,CAAC;CAEJ;AAED,MAAM,OAAO,gCAAgC;IAGzC,YAAY,IAA8C,EAAE,OAAgB;QAFnE;;;;mBAAmC,EAAE;WAAC;QAG3C,MAAM,MAAM,GAAmD,EAAE,IAAI,EAAE,4BAA4B,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QAEhJ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC;IAKD,GAAG,CAAC,IAAY,EAAE,QAAkB;QAEhC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEpC,IAAI,QAAQ,IAAI,CAAC,MAAM,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,UAAU,IAAI,cAAc,CAAC,CAAC;SACjD;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAID,OAAO,CAAC,IAAY,EAAE,QAAkB;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAe,CAAC;QACtD,OAAO,MAAM,EAAE,IAAI,CAAC;IACxB,CAAC;IAID,SAAS,CAAC,IAAY,EAAE,QAAkB;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAe,CAAC;QACtD,OAAO,MAAM,EAAE,MAAM,CAAC;IAC1B,CAAC;CACJ","sourcesContent":["import type { APIUserApplicationCommandInteraction } from \"discord-api-types/v10\";\nimport { APIApplicationCommandInteractionDataUserOption, APIUserApplicationCommandInteractionData, ApplicationCommandOptionType, ApplicationCommandType } from \"discord-api-types/v10\";\nimport { InteractionDataResolvedGuildMember as InteractionResolvedGuildMember } from \"../payloads/Member.mjs\";\nimport User from \"../payloads/User.mjs\";\nimport ApplicationCommandInteraction from \"./ApplicationCommandInteraction.mjs\";\nimport { Options, UserOption, formatOption } from \"./ChatInputInteraction.mjs\";\n\n\nexport default class UserCommandInteraction extends ApplicationCommandInteraction {\n    declare commandType: ApplicationCommandType.User;\n\n    /** The options that the invoking user has provided for the command */\n    options: UserContextMenuInteractionOption;\n    /** The id of the target user */\n    targetId: string;\n    /** The target user */\n    targetUser: User;\n    /** The target member */\n    targetMember?: InteractionResolvedGuildMember;\n\n    constructor(interaction: APIUserApplicationCommandInteraction) {\n        super(interaction);\n\n        this.options = new UserContextMenuInteractionOption(interaction.data, this.guildId);\n        this.targetId = interaction.data.target_id;\n        this.targetUser = new User(interaction.data.resolved.users[this.targetId]);\n\n        if (this.guildId && interaction.data.resolved.members?.[this.targetId])\n            this.targetMember = new InteractionResolvedGuildMember(interaction.data.resolved.members[this.targetId], this.guildId, this.targetId);\n\n    }\n\n}\n\nexport class UserContextMenuInteractionOption {\n    readonly options: Record<string, Options> = {};\n\n    constructor(data: APIUserApplicationCommandInteractionData, guildId?: string) {\n        const option: APIApplicationCommandInteractionDataUserOption = { type: ApplicationCommandOptionType.User, name: \"user\", value: data.target_id };\n\n        this.options[\"user\"] = formatOption(option, data.resolved, guildId);\n    }\n\n\n    get(name: string, required: true): Options;\n    get(name: string, required?: boolean): Options | undefined;\n    get(name: string, required?: boolean): Options | undefined {\n\n        const option = this.options[\"user\"];\n\n        if (required && !option) {\n            throw new Error(`Option ${name} is required`);\n        }\n\n        return option;\n    }\n\n    getUser(name: string, required: true): User;\n    getUser(name: string, required?: boolean): User | undefined;\n    getUser(name: string, required?: boolean): User | undefined {\n        const option = this.get(name, required) as UserOption;\n        return option?.user;\n    }\n\n    getMember(name: string, required: true): InteractionResolvedGuildMember;\n    getMember(name: string, required?: boolean): InteractionResolvedGuildMember | undefined;\n    getMember(name: string, required?: boolean): InteractionResolvedGuildMember | undefined {\n        const option = this.get(name, required) as UserOption;\n        return option?.member;\n    }\n}"]}