From b5c5989ed85a25d480edf84a1fd012f8cc711318 Mon Sep 17 00:00:00 2001 From: Renato Alcara Date: Mon, 26 Jan 2026 02:27:22 -0300 Subject: [PATCH] fix(messages): detect interactive messages inside viewOnceMessage wrapper The getButtonType function was not detecting interactive messages when wrapped inside viewOnceMessage (the modern nativeFlowMessage format). This fix adds detection for: - viewOnceMessage > interactiveMessage - viewOnceMessage > listMessage - viewOnceMessage > buttonsMessage When enableInteractiveMessages is true, the 'biz' node will now be correctly injected for messages using the viewOnceMessage wrapper. Co-Authored-By: Claude Opus 4.5 --- src/Socket/messages-send.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/Socket/messages-send.ts b/src/Socket/messages-send.ts index 44e3a47d..4f8a269a 100644 --- a/src/Socket/messages-send.ts +++ b/src/Socket/messages-send.ts @@ -612,6 +612,7 @@ export const makeMessagesSocket = (config: SocketConfig) => { // ⚠️ EXPERIMENTAL: Functions to detect and handle interactive messages // These features may not work and can cause account bans const getButtonType = (message: proto.IMessage): string | undefined => { + // Check direct message types (legacy formats) if (message.buttonsMessage) { return 'buttons' } else if (message.templateMessage) { @@ -627,6 +628,20 @@ export const makeMessagesSocket = (config: SocketConfig) => { } else if (message.interactiveMessage) { return 'interactive' } + + // Check inside viewOnceMessage wrapper (modern nativeFlowMessage format) + // This is the recommended format for interactive messages + const innerMessage = message.viewOnceMessage?.message + if (innerMessage) { + if (innerMessage.interactiveMessage) { + return 'interactive' + } else if (innerMessage.listMessage) { + return 'list' + } else if (innerMessage.buttonsMessage) { + return 'buttons' + } + } + return undefined }