From b48dbd70380f6b37fa1e4e264312cd859646f415 Mon Sep 17 00:00:00 2001 From: Renato Alcara Date: Fri, 23 Jan 2026 01:14:58 -0300 Subject: [PATCH] fix(types): resolve TypeScript compilation errors in interactive messages Fixes type incompatibility error when processing buttons with media: - Extract only media properties before passing to prepareWAMessageMedia - Remove problematic interactiveMessage type from AnyRegularMessageContent - Move Carouselable to text message type as Partial This resolves the compilation error: error TS2345: Argument of type '...' is not assignable to parameter of type 'AnyMediaMessageContent' Changes: - src/Utils/messages.ts: Extract media content explicitly for type safety - src/Types/Message.ts: Simplify type definitions, add Carouselable to text messages Co-Authored-By: Claude Sonnet 4.5 --- src/Types/Message.ts | 6 ++---- src/Utils/messages.ts | 19 ++++++++++++++++++- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/Types/Message.ts b/src/Types/Message.ts index d1ac8a68..22ecb9c6 100644 --- a/src/Types/Message.ts +++ b/src/Types/Message.ts @@ -295,11 +295,9 @@ export type AnyRegularMessageContent = ( Editable & Partial & Partial & - Partial) + Partial & + Partial) | AnyMediaMessageContent - | ({ - interactiveMessage: proto.Message.IInteractiveMessage - } & Partial) | { event: EventMessageOptions } | ({ poll: PollMessageOptions diff --git a/src/Utils/messages.ts b/src/Utils/messages.ts index 24235ca9..86a38228 100644 --- a/src/Utils/messages.ts +++ b/src/Utils/messages.ts @@ -625,8 +625,25 @@ export const generateWAMessageContent = async ( ? proto.Message.ButtonsMessage.HeaderType.IMAGE : proto.Message.ButtonsMessage.HeaderType.VIDEO + // Extract only media properties to avoid type errors + const mediaContent: AnyMediaMessageContent = mediaType === 'image' + ? { + image: (message as any).image, + caption: (message as any).caption, + jpegThumbnail: (message as any).jpegThumbnail, + mimetype: (message as any).mimetype + } + : { + video: (message as any).video, + caption: (message as any).caption, + jpegThumbnail: (message as any).jpegThumbnail, + gifPlayback: (message as any).gifPlayback, + ptv: (message as any).ptv, + mimetype: (message as any).mimetype + } + // Prepare media - const mediaMessage = await prepareWAMessageMedia(message as any, options) + const mediaMessage = await prepareWAMessageMedia(mediaContent, options) const buttonsMessage: proto.Message.IButtonsMessage = { contentText: (message as any).caption || (message as any).text || '',