From 9c07db6f305ccd8f20c74dd0084322f5b346872a Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Wed, 24 Jun 2026 15:38:05 +0300 Subject: [PATCH] Deploy: 2026-06-24 15:38:05 --- whatsapp-gateway/baileys-client.js | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/whatsapp-gateway/baileys-client.js b/whatsapp-gateway/baileys-client.js index 5ff5ff3..fce25f7 100644 --- a/whatsapp-gateway/baileys-client.js +++ b/whatsapp-gateway/baileys-client.js @@ -66,22 +66,17 @@ async function startSession(session_key, webhook_url) { const socketConfig = { auth: { creds: state.creds, - // Wrap keys with makeCacheableSignalKeyStore for fast in-memory - // Signal key access — this prevents E2EE key lookup failures - // that cause "Waiting for this message" on recipient devices keys: makeCacheableSignalKeyStore(state.keys, logger), }, printQRInTerminal: false, logger: logger, browser: ['Flash Call OTP Gateway', 'Chrome', '120.0.0'], - // Message retry counter cache — tracks how many times each message - // retry has been attempted, preventing infinite retry loops msgRetryCounterCache, + markOnlineOnConnect: true, + syncFullHistory: true, getMessage: async (key) => { - if (recentMessages.has(key.id)) { - return recentMessages.get(key.id); - } - return undefined; + const compoundKey = `${key.remoteJid}:${key.id}`; + return recentMessages.get(compoundKey) || recentMessages.get(key.id); } }; if (version) socketConfig.version = version; @@ -422,11 +417,17 @@ async function sendMessage(session_key, phone, message, mediaUrl = null, audioBa } // Cache outbound messages for E2EE decryption retries + // Use compound key (remoteJid:id) to match how Baileys queries getMessage if (sentMsg && sentMsg.key && sentMsg.key.id && sentMsg.message) { + const compoundKey = `${sentMsg.key.remoteJid}:${sentMsg.key.id}`; + recentMessages.set(compoundKey, sentMsg.message); recentMessages.set(sentMsg.key.id, sentMsg.message); - if (recentMessages.size > 2000) { - const firstKey = recentMessages.keys().next().value; - recentMessages.delete(firstKey); + if (recentMessages.size > 5000) { + const keys = recentMessages.keys(); + for (let i = 0; i < 1000; i++) { + const key = keys.next().value; + if (key) recentMessages.delete(key); + } } }