{"version":3,"file":"MessageCommandInteraction.mjs","sourceRoot":"","sources":["../../src/interactions/MessageCommandInteraction.mts"],"names":[],"mappings":"AAAA,OAAO,EAAoG,4BAA4B,EAA0B,MAAM,uBAAuB,CAAC;AAC/L,OAAO,6BAA6B,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAE,UAAU,EAAgB,MAAM,4BAA4B,CAAC;AAGtE,MAAM,CAAC,OAAO,OAAO,yBAA0B,SAAQ,6BAA6B;IAUhF,YAAY,WAAoD;QAC5D,KAAK,CAAC,WAAW,CAAC,CAAC;QARvB,sEAAsE;QACtE;;;;;WAA6C;QAC7C,gCAAgC;QAChC;;;;;WAAiB;QACjB,sBAAsB;QACtB;;;;;WAA0B;QAItB,IAAI,CAAC,OAAO,GAAG,IAAI,mCAAmC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEzE,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3E,CAAC;CAEJ;AAED,MAAM,OAAO,aAAc,SAAQ,UAAU;IAKzC,YAAY,IAAY,EAAE,KAAa,EAAE,OAAmB;QACxD,KAAK,CAAC,4BAA4B,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAHhE;;;;;WAAoB;QAIhB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;CACJ;AAGD,MAAM,OAAO,mCAAmC;IAG5C,YAAY,IAAiD;QAFpD;;;;mBAAmC,EAAE;WAAC;QAI3C,uEAAuE;QACvE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvD,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACpF,CAAC;IAKD,GAAG,CAAC,IAAY,EAAE,QAAkB;QAEhC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEvC,IAAI,QAAQ,IAAI,CAAC,MAAM,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,UAAU,IAAI,cAAc,CAAC,CAAC;SACjD;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAID,UAAU,CAAC,IAAY,EAAE,QAAkB;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAkB,CAAC;QACzD,OAAO,MAAM,EAAE,OAAO,CAAC;IAC3B,CAAC;CAEJ","sourcesContent":["import { APIMessage, APIMessageApplicationCommandInteraction, APIMessageApplicationCommandInteractionData, ApplicationCommandOptionType, ApplicationCommandType } from \"discord-api-types/v10\";\nimport ApplicationCommandInteraction from \"./ApplicationCommandInteraction.mjs\";\nimport { BaseOption, type Options } from \"./ChatInputInteraction.mjs\";\n\n\nexport default class MessageCommandInteraction extends ApplicationCommandInteraction {\n    declare commandType: ApplicationCommandType.Message;\n\n    /** The options that the invoking user has provided for the command */\n    options: MessageContextMenuInteractionOption;\n    /** The id of the target user */\n    targetId: string;\n    /** The target user */\n    targetMessage: APIMessage;\n\n    constructor(interaction: APIMessageApplicationCommandInteraction) {\n        super(interaction);\n        this.options = new MessageContextMenuInteractionOption(interaction.data);\n\n        this.targetId = interaction.data.target_id;\n        this.targetMessage = interaction.data.resolved.messages[this.targetId];\n    }\n\n}\n\nexport class MessageOption extends BaseOption {\n    declare type: ApplicationCommandOptionType;\n    declare value: string;\n    message: APIMessage;\n\n    constructor(name: string, value: string, message: APIMessage) {\n        super(ApplicationCommandOptionType.Attachment, name, value);\n        this.message = message;\n    }\n}\n\n\nexport class MessageContextMenuInteractionOption {\n    readonly options: Record<string, Options> = {};\n\n    constructor(data: APIMessageApplicationCommandInteractionData) {\n\n        // const message = new Message(data.resolved.messages[data.target_id]);\n        const message = data.resolved.messages[data.target_id];\n        this.options[\"message\"] = new MessageOption(\"message\", data.target_id, message);\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[\"message\"];\n\n        if (required && !option) {\n            throw new Error(`Option ${name} is required`);\n        }\n\n        return option;\n    }\n\n    getMessage(name: string, required: true): APIMessage;\n    getMessage(name: string, required?: boolean): APIMessage | undefined;\n    getMessage(name: string, required?: boolean): APIMessage | undefined {\n        const option = this.get(name, required) as MessageOption;\n        return option?.message;\n    }\n\n}"]}