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 <noreply@anthropic.com>
This commit is contained in:
Renato Alcara
2026-01-26 02:27:22 -03:00
parent 4faef75104
commit b5c5989ed8
+15
View File
@@ -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
}