diff --git a/lib/util/parsing/message-components.ts b/lib/util/parsing/message-components.ts index af3b6d2e..ad1a8672 100644 --- a/lib/util/parsing/message-components.ts +++ b/lib/util/parsing/message-components.ts @@ -5,6 +5,7 @@ import type * as Types from "../../types/namespaced"; const FROM_RAW: { [K in ComponentTypes]: (input: Types.Channels.RawMessageComponentTypeMap[K]) => Types.Channels.MessageComponentTypeMap[K] } = { [ComponentTypes.ACTION_ROW]: component => ({ components: component.components.map(c => fromRaw(c) as never), + id: component.id, type: component.type }), [ComponentTypes.BUTTON]: component => { @@ -13,6 +14,7 @@ const FROM_RAW: { [K in ComponentTypes]: (input: Types.Channels.RawMessageCompon if (component.style === ButtonStyles.PREMIUM) { return { disabled: component.disabled, + id: component.id, skuID: component.sku_id, style: component.style, type: component.type @@ -23,6 +25,7 @@ const FROM_RAW: { [K in ComponentTypes]: (input: Types.Channels.RawMessageCompon customID: component.custom_id, disabled: component.disabled, emoji: component.emoji, + id: component.id, label: component.label, style: component.style, type: component.type @@ -31,6 +34,7 @@ const FROM_RAW: { [K in ComponentTypes]: (input: Types.Channels.RawMessageCompon [ComponentTypes.STRING_SELECT]: component => ({ customID: component.custom_id, disabled: component.disabled, + id: component.id, maxValues: component.max_values, minValues: component.min_values, placeholder: component.placeholder, @@ -40,6 +44,7 @@ const FROM_RAW: { [K in ComponentTypes]: (input: Types.Channels.RawMessageCompon }), [ComponentTypes.TEXT_INPUT]: component => ({ customID: component.custom_id, + id: component.id, label: component.label, maxLength: component.max_length, minLength: component.min_length, @@ -53,6 +58,7 @@ const FROM_RAW: { [K in ComponentTypes]: (input: Types.Channels.RawMessageCompon customID: component.custom_id, defaultValues: component.default_values, disabled: component.disabled, + id: component.id, maxValues: component.max_values, minValues: component.min_values, placeholder: component.placeholder, @@ -63,6 +69,7 @@ const FROM_RAW: { [K in ComponentTypes]: (input: Types.Channels.RawMessageCompon customID: component.custom_id, defaultValues: component.default_values, disabled: component.disabled, + id: component.id, maxValues: component.max_values, minValues: component.min_values, placeholder: component.placeholder, @@ -73,6 +80,7 @@ const FROM_RAW: { [K in ComponentTypes]: (input: Types.Channels.RawMessageCompon customID: component.custom_id, defaultValues: component.default_values, disabled: component.disabled, + id: component.id, maxValues: component.max_values, minValues: component.min_values, placeholder: component.placeholder, @@ -84,6 +92,7 @@ const FROM_RAW: { [K in ComponentTypes]: (input: Types.Channels.RawMessageCompon channelTypes: component.channel_types, defaultValues: component.default_values, disabled: component.disabled, + id: component.id, maxValues: component.max_values, minValues: component.min_values, placeholder: component.placeholder, @@ -92,31 +101,40 @@ const FROM_RAW: { [K in ComponentTypes]: (input: Types.Channels.RawMessageCompon }), [ComponentTypes.TEXT_DISPLAY]: component => ({ content: component.content, + id: component.id, type: component.type }), [ComponentTypes.THUMBNAIL]: component => ({ description: component.description, + id: component.id, media: { - attachmentID: component.media.attachment_id, - contentType: component.media.content_type, - height: component.media.height, - proxyURL: component.media.proxy_url, - url: component.media.url, - width: component.media.width + attachmentID: component.media.attachment_id, + contentType: component.media.content_type, + flags: component.media.flags, + height: component.media.height, + placeholder: component.media.placeholder, + placeholderVersion: component.media.placeholder_version, + proxyURL: component.media.proxy_url, + url: component.media.url, + width: component.media.width }, spoiler: component.spoiler, type: component.type }), [ComponentTypes.MEDIA_GALLERY]: component => ({ + id: component.id, items: component.items.map(i => ({ description: i.description, media: { - attachmentID: i.media.attachment_id, - contentType: i.media.content_type, - height: i.media.height, - proxyURL: i.media.proxy_url, - url: i.media.url, - width: i.media.width + attachmentID: i.media.attachment_id, + contentType: i.media.content_type, + flags: i.media.flags, + height: i.media.height, + placeholder: i.media.placeholder, + placeholderVersion: i.media.placeholder_version, + proxyURL: i.media.proxy_url, + url: i.media.url, + width: i.media.width }, spoiler: i.spoiler })), @@ -124,18 +142,25 @@ const FROM_RAW: { [K in ComponentTypes]: (input: Types.Channels.RawMessageCompon }), [ComponentTypes.FILE]: component => ({ file: { - attachmentID: component.file.attachment_id, - contentType: component.file.content_type, - height: component.file.height, - proxyURL: component.file.proxy_url, - url: component.file.url, - width: component.file.width + attachmentID: component.file.attachment_id, + contentType: component.file.content_type, + flags: component.file.flags, + height: component.file.height, + placeholder: component.file.placeholder, + placeholderVersion: component.file.placeholder_version, + proxyURL: component.file.proxy_url, + url: component.file.url, + width: component.file.width }, + id: component.id, + name: component.name, + size: component.size, spoiler: component.spoiler, - type: component.type + type: component.type }), [ComponentTypes.SEPARATOR]: component => ({ divider: component.divider, + id: component.id, spacing: component.spacing, type: component.type }), @@ -143,19 +168,22 @@ const FROM_RAW: { [K in ComponentTypes]: (input: Types.Channels.RawMessageCompon [ComponentTypes.CONTAINER]: component => ({ accentColor: component.accent_color, components: component.components.map(c => fromRaw(c)), + id: component.id, spoiler: component.spoiler, type: component.type }), [ComponentTypes.SECTION]: component => ({ type: component.type, accessory: fromRaw(component.accessory), - components: component.components.map(c => fromRaw(c)) + components: component.components.map(c => fromRaw(c)), + id: component.id }), [ComponentTypes.LABEL]: component => ({ type: component.type, label: component.label, description: component.description, - component: fromRaw(component.component) + component: fromRaw(component.component), + id: component.id }), [ComponentTypes.FILE_UPLOAD]: component => ({ customID: component.custom_id, @@ -168,6 +196,7 @@ const FROM_RAW: { [K in ComponentTypes]: (input: Types.Channels.RawMessageCompon }), [ComponentTypes.RADIO_GROUP]: component => ({ customID: component.custom_id, + id: component.id, required: component.required, options: component.options.map(o => ({ default: o.default, @@ -180,10 +209,12 @@ const FROM_RAW: { [K in ComponentTypes]: (input: Types.Channels.RawMessageCompon [ComponentTypes.CHECKBOX]: component => ({ customID: component.custom_id, default: component.default, + id: component.id, type: component.type }), [ComponentTypes.CHECKBOX_GROUP]: component => ({ customID: component.custom_id, + id: component.id, maxValues: component.max_values, minValues: component.min_values, options: component.options.map(o => ({ @@ -204,24 +235,25 @@ export function fromRaw(component: T): Ty const TO_RAW: { [K in ComponentTypes]: (input: Types.Channels.MessageComponentTypeMap[K]) => Types.Channels.RawMessageComponentTypeMap[K] } = { [ComponentTypes.ACTION_ROW]: component => ({ type: component.type, - components: component.components.map(c => toRaw(c) as never) + components: component.components.map(c => toRaw(c) as never), + id: component.id }), [ComponentTypes.BUTTON]: component => { if (component.style === ButtonStyles.LINK) return component; - if (component.style === ButtonStyles.PREMIUM) { return { disabled: component.disabled, + id: component.id, sku_id: component.skuID, style: component.style, type: component.type }; } - return { custom_id: component.customID, disabled: component.disabled, emoji: component.emoji, + id: component.id, label: component.label, style: component.style, type: component.type @@ -230,6 +262,7 @@ const TO_RAW: { [K in ComponentTypes]: (input: Types.Channels.MessageComponentTy [ComponentTypes.STRING_SELECT]: component => ({ custom_id: component.customID, disabled: component.disabled, + id: component.id, max_values: component.maxValues, min_values: component.minValues, placeholder: component.placeholder, @@ -239,6 +272,7 @@ const TO_RAW: { [K in ComponentTypes]: (input: Types.Channels.MessageComponentTy }), [ComponentTypes.TEXT_INPUT]: component => ({ custom_id: component.customID, + id: component.id, label: component.label, max_length: component.maxLength, min_length: component.minLength, @@ -249,69 +283,86 @@ const TO_RAW: { [K in ComponentTypes]: (input: Types.Channels.MessageComponentTy value: component.value }), [ComponentTypes.USER_SELECT]: component => ({ - custom_id: component.customID, - disabled: component.disabled, - max_values: component.maxValues, - min_values: component.minValues, - placeholder: component.placeholder, - required: component.required, - type: component.type + custom_id: component.customID, + default_values: component.defaultValues, + disabled: component.disabled, + id: component.id, + max_values: component.maxValues, + min_values: component.minValues, + placeholder: component.placeholder, + required: component.required, + type: component.type }), [ComponentTypes.ROLE_SELECT]: component => ({ - custom_id: component.customID, - disabled: component.disabled, - max_values: component.maxValues, - min_values: component.minValues, - placeholder: component.placeholder, - required: component.required, - type: component.type + custom_id: component.customID, + default_values: component.defaultValues, + disabled: component.disabled, + id: component.id, + max_values: component.maxValues, + min_values: component.minValues, + placeholder: component.placeholder, + required: component.required, + type: component.type }), [ComponentTypes.MENTIONABLE_SELECT]: component => ({ - custom_id: component.customID, - disabled: component.disabled, - max_values: component.maxValues, - min_values: component.minValues, - placeholder: component.placeholder, - required: component.required, - type: component.type + custom_id: component.customID, + default_values: component.defaultValues, + disabled: component.disabled, + id: component.id, + max_values: component.maxValues, + min_values: component.minValues, + placeholder: component.placeholder, + required: component.required, + type: component.type }), [ComponentTypes.CHANNEL_SELECT]: component => ({ - channel_types: component.channelTypes, - custom_id: component.customID, - disabled: component.disabled, - max_values: component.maxValues, - min_values: component.minValues, - placeholder: component.placeholder, - required: component.required, - type: component.type + channel_types: component.channelTypes, + custom_id: component.customID, + default_values: component.defaultValues, + disabled: component.disabled, + id: component.id, + max_values: component.maxValues, + min_values: component.minValues, + placeholder: component.placeholder, + required: component.required, + type: component.type }), [ComponentTypes.TEXT_DISPLAY]: component => ({ content: component.content, + id: component.id, type: component.type }), [ComponentTypes.THUMBNAIL]: component => ({ description: component.description, + id: component.id, media: { - attachment_id: component.media.attachmentID, - content_type: component.media.contentType, - height: component.media.height, - proxy_url: component.media.proxyURL, - url: component.media.url, - width: component.media.width + attachment_id: component.media.attachmentID, + content_type: component.media.contentType, + flags: component.media.flags, + height: component.media.height, + placeholder: component.media.placeholder, + placeholder_version: component.media.placeholderVersion, + proxy_url: component.media.proxyURL, + url: component.media.url, + width: component.media.width }, spoiler: component.spoiler, type: component.type }), [ComponentTypes.MEDIA_GALLERY]: component => ({ + id: component.id, items: component.items.map(i => ({ description: i.description, media: { - attachment_id: i.media.attachmentID, - content_type: i.media.contentType, - height: i.media.height, - proxy_url: i.media.proxyURL, - url: i.media.url, - width: i.media.width + attachment_id: i.media.attachmentID, + content_type: i.media.contentType, + flags: i.media.flags, + height: i.media.height, + placeholder: i.media.placeholder, + placeholder_version: i.media.placeholderVersion, + proxy_url: i.media.proxyURL, + url: i.media.url, + width: i.media.width }, spoiler: i.spoiler })), @@ -319,18 +370,25 @@ const TO_RAW: { [K in ComponentTypes]: (input: Types.Channels.MessageComponentTy }), [ComponentTypes.FILE]: component => ({ file: { - attachment_id: component.file.attachmentID, - content_type: component.file.contentType, - height: component.file.height, - proxy_url: component.file.proxyURL, - url: component.file.url, - width: component.file.width + attachment_id: component.file.attachmentID, + content_type: component.file.contentType, + flags: component.file.flags, + height: component.file.height, + placeholder: component.file.placeholder, + placeholder_version: component.file.placeholderVersion, + proxy_url: component.file.proxyURL, + url: component.file.url, + width: component.file.width }, + id: component.id, + name: component.name, + size: component.size, spoiler: component.spoiler, type: component.type }), [ComponentTypes.SEPARATOR]: component => ({ divider: component.divider, + id: component.id, spacing: component.spacing, type: component.type }), @@ -338,19 +396,22 @@ const TO_RAW: { [K in ComponentTypes]: (input: Types.Channels.MessageComponentTy [ComponentTypes.CONTAINER]: component => ({ accent_color: component.accentColor, components: component.components.map(c => toRaw(c)), + id: component.id, spoiler: component.spoiler, type: component.type }), [ComponentTypes.SECTION]: component => ({ type: component.type, accessory: toRaw(component.accessory), - components: component.components.map(c => toRaw(c)) + components: component.components.map(c => toRaw(c)), + id: component.id }), [ComponentTypes.LABEL]: component => ({ type: component.type, label: component.label, description: component.description, - component: toRaw(component.component) + component: toRaw(component.component), + id: component.id }), [ComponentTypes.FILE_UPLOAD]: component => ({ custom_id: component.customID, @@ -370,11 +431,13 @@ const TO_RAW: { [K in ComponentTypes]: (input: Types.Channels.MessageComponentTy label: o.label, value: o.value })), + id: component.id, type: component.type }), [ComponentTypes.CHECKBOX]: component => ({ custom_id: component.customID, default: component.default, + id: component.id, type: component.type }), [ComponentTypes.CHECKBOX_GROUP]: component => ({ @@ -387,6 +450,7 @@ const TO_RAW: { [K in ComponentTypes]: (input: Types.Channels.MessageComponentTy label: o.label, value: o.value })), + id: component.id, required: component.required, type: component.type }) @@ -394,4 +458,4 @@ const TO_RAW: { [K in ComponentTypes]: (input: Types.Channels.MessageComponentTy export function toRaw(component: T): Types.Channels.ToRawFromComponent { return TO_RAW[component.type](component as never) as never; -} +} \ No newline at end of file diff --git a/lib/util/parsing/modal-components.ts b/lib/util/parsing/modal-components.ts index 4ec8513d..d4668d16 100644 --- a/lib/util/parsing/modal-components.ts +++ b/lib/util/parsing/modal-components.ts @@ -5,59 +5,71 @@ import type * as Types from "../../types/namespaced"; const FROM_RAW: { [K in ComponentTypes.ACTION_ROW | ComponentTypes.LABEL | ModalComponentTypes]: (input: Types.Interactions.RawModalSubmitComponentTypeMap[K]) => Types.Interactions.ModalSubmitComponentTypeMap[K] } = { [ComponentTypes.ACTION_ROW]: component => ({ components: component.components.map(c => fromRaw(c) as never), + id: component.id, type: component.type }), [ComponentTypes.STRING_SELECT]: component => ({ customID: component.custom_id, + id: component.id, type: component.type, values: component.values }), [ComponentTypes.TEXT_INPUT]: component => ({ customID: component.custom_id, + id: component.id, type: component.type, value: component.value }), [ComponentTypes.USER_SELECT]: component => ({ customID: component.custom_id, + id: component.id, type: component.type, values: component.values }), [ComponentTypes.ROLE_SELECT]: component => ({ customID: component.custom_id, + id: component.id, type: component.type, values: component.values }), [ComponentTypes.MENTIONABLE_SELECT]: component => ({ customID: component.custom_id, + id: component.id, type: component.type, values: component.values }), [ComponentTypes.CHANNEL_SELECT]: component => ({ customID: component.custom_id, + id: component.id, type: component.type, values: component.values }), [ComponentTypes.LABEL]: component => ({ component: fromRaw(component.component), + id: component.id, type: component.type }), [ComponentTypes.FILE_UPLOAD]: component => ({ customID: component.custom_id, + id: component.id, type: component.type, values: component.values }), [ComponentTypes.RADIO_GROUP]: component => ({ customID: component.custom_id, + id: component.id, type: component.type, value: component.value }), [ComponentTypes.CHECKBOX]: component => ({ customID: component.custom_id, + id: component.id, type: component.type, value: component.value }), [ComponentTypes.CHECKBOX_GROUP]: component => ({ customID: component.custom_id, + id: component.id, type: component.type, values: component.values }) @@ -70,64 +82,76 @@ export function fromRaw Types.Interactions.RawModalSubmitComponentTypeMap[K] } = { [ComponentTypes.ACTION_ROW]: component => ({ type: component.type, - components: component.components.map(c => toRaw(c) as never) + components: component.components.map(c => toRaw(c) as never), + id: component.id }), [ComponentTypes.STRING_SELECT]: component => ({ custom_id: component.customID, values: component.values, + id: component.id, type: component.type }), [ComponentTypes.TEXT_INPUT]: component => ({ custom_id: component.customID, value: component.value, + id: component.id, type: component.type }), [ComponentTypes.USER_SELECT]: component => ({ custom_id: component.customID, values: component.values, + id: component.id, type: component.type }), [ComponentTypes.ROLE_SELECT]: component => ({ custom_id: component.customID, values: component.values, + id: component.id, type: component.type }), [ComponentTypes.MENTIONABLE_SELECT]: component => ({ custom_id: component.customID, values: component.values, + id: component.id, type: component.type }), [ComponentTypes.CHANNEL_SELECT]: component => ({ custom_id: component.customID, values: component.values, + id: component.id, type: component.type }), [ComponentTypes.LABEL]: component => ({ component: toRaw(component.component), + id: component.id, type: component.type }), [ComponentTypes.FILE_UPLOAD]: component => ({ custom_id: component.customID, values: component.values, + id: component.id, type: component.type }), [ComponentTypes.RADIO_GROUP]: component => ({ custom_id: component.customID, value: component.value, + id: component.id, type: component.type }), [ComponentTypes.CHECKBOX]: component => ({ custom_id: component.customID, value: component.value, + id: component.id, type: component.type }), [ComponentTypes.CHECKBOX_GROUP]: component => ({ custom_id: component.customID, values: component.values, + id: component.id, type: component.type }) }; export function toRaw(component: T): Types.Interactions.ToRawFromModalSubmitComponent { return TO_RAW[component.type](component as never) as never; -} +} \ No newline at end of file