mirror of
https://github.com/EvolutionAPI/evolution-api.git
synced 2025-12-09 01:49:37 -06:00
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:
parent
df20c5fc93
commit
8e7f348c12
@ -82,7 +82,7 @@ import { createId as cuid } from '@paralleldrive/cuid2';
|
||||
import { Instance, Message } from '@prisma/client';
|
||||
import { createJid } from '@utils/createJid';
|
||||
import { fetchLatestWaWebVersion } from '@utils/fetchLatestWaWebVersion';
|
||||
import {makeProxyAgent, makeProxyAgentUndici} from '@utils/makeProxyAgent';
|
||||
import { makeProxyAgent, makeProxyAgentUndici } from '@utils/makeProxyAgent';
|
||||
import { getOnWhatsappCache, saveOnWhatsappCache } from '@utils/onWhatsappCache';
|
||||
import { status } from '@utils/renderStatus';
|
||||
import { sendTelemetry } from '@utils/sendTelemetry';
|
||||
@ -1068,6 +1068,7 @@ export class BaileysStartupService extends ChannelStartupService {
|
||||
'Invalid PreKey ID',
|
||||
'No session record',
|
||||
'No session found to decrypt message',
|
||||
'Message absent from node',
|
||||
].some((err) => param?.includes?.(err)),
|
||||
)
|
||||
) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user