diff --git a/src/Socket/messages-send.ts b/src/Socket/messages-send.ts index 44e3a47d..62ed959d 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,29 @@ 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 + // Check all 7 types for consistency with direct message detection + const innerMessage = message.viewOnceMessage?.message + if (innerMessage) { + if (innerMessage.buttonsMessage) { + return 'buttons' + } else if (innerMessage.templateMessage) { + return 'template' + } else if (innerMessage.listMessage) { + return 'list' + } else if (innerMessage.buttonsResponseMessage) { + return 'buttons_response' + } else if (innerMessage.listResponseMessage) { + return 'list_response' + } else if (innerMessage.templateButtonReplyMessage) { + return 'template_reply' + } else if (innerMessage.interactiveMessage) { + return 'interactive' + } + } + return undefined }