fix(baileys): prevent message loss from WhatsApp stub placeholders

Mensagens do WhatsApp estavam sendo perdidas e não eram salvas no banco de dados, especialmente mensagens de canais/newsletters (@lid) e mensagens com criptografia complexa.

O WhatsApp/Baileys envia mensagens criptografadas em duas etapas:

1. Primeiro: Envia um stub (placeholder) com messageStubParameters: ['Message absent from node'] enquanto descriptografa a mensagem

2. Depois: Envia a mensagem real com o conteúdo descriptografado

O problema ocorria porque:

- O stub chegava primeiro e era adicionado ao cache de mensagens duplicadas

- O stub era descartado (corretamente) por não ter conteúdo (!received?.message)

- A mensagem real chegava depois, mas era ignorada como duplicata porque o ID já estava no cache

- Resultado: mensagem nunca era salva no banco de dados

Solução:

- Detectar stubs do WhatsApp através de messageStubParameters contendo 'Message absent from node'

- Não adicionar stubs ao cache de mensagens duplicadas

- Permitir que a mensagem real seja processada quando chegar

- Manter o descarte do stub para evitar salvar placeholders vazios
This commit is contained in:
Murilo Leal 2025-11-26 13:29:31 -03:00
parent df20c5fc93
commit 8e7f348c12

View File

@ -1068,6 +1068,7 @@ export class BaileysStartupService extends ChannelStartupService {
'Invalid PreKey ID', 'Invalid PreKey ID',
'No session record', 'No session record',
'No session found to decrypt message', 'No session found to decrypt message',
'Message absent from node',
].some((err) => param?.includes?.(err)), ].some((err) => param?.includes?.(err)),
) )
) { ) {