Skip to content

Commit 8e7f348

Browse files
committed
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
1 parent df20c5f commit 8e7f348

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ import { createId as cuid } from '@paralleldrive/cuid2';
8282
import { Instance, Message } from '@prisma/client';
8383
import { createJid } from '@utils/createJid';
8484
import { fetchLatestWaWebVersion } from '@utils/fetchLatestWaWebVersion';
85-
import {makeProxyAgent, makeProxyAgentUndici} from '@utils/makeProxyAgent';
85+
import { makeProxyAgent, makeProxyAgentUndici } from '@utils/makeProxyAgent';
8686
import { getOnWhatsappCache, saveOnWhatsappCache } from '@utils/onWhatsappCache';
8787
import { status } from '@utils/renderStatus';
8888
import { sendTelemetry } from '@utils/sendTelemetry';
@@ -1068,6 +1068,7 @@ export class BaileysStartupService extends ChannelStartupService {
10681068
'Invalid PreKey ID',
10691069
'No session record',
10701070
'No session found to decrypt message',
1071+
'Message absent from node',
10711072
].some((err) => param?.includes?.(err)),
10721073
)
10731074
) {

0 commit comments

Comments
 (0)