fix(maria): recunoaste JID-urile LID, altfel toate mesajele erau aruncate tacut
Dupa asocierea de azi, puntea nu raspundea la niciun mesaj desi `connected: true` si consumer-ul rula. WhatsApp livreaza self-chat-ul pe conturile noi cu un JID de tip LID (`51947713372214@lid`), nu cu `<numar>@s.whatsapp.net`, iar filtrul `TEST_MODE_SELF_CHAT_ONLY` compara doar cu al doilea — deci arunca tot. - `ownLid` calculat din `sock.user.lid` (cu rezerva pe `creds.me.lid`), fara sufixul de dispozitiv: credentialele au "51947713372214:13@lid", dar remoteJid-ul mesajelor vine fara ":13". - `isSelfChat` accepta acum ambele formate. - Logul de conectare si `/status` arata si LID-ul. Cauza pentru care a fost greu de gasit: mesajele respinse dispareau fara nicio urma. Acum fiecare motiv de respingere se logheaza (nu e self-chat, fromMe in afara self-chat, fara continut text), cu JID-urile comparate. Exact linia asta a aratat problema in 30 de secunde: [whatsapp] ignorat (nu e self-chat): remoteJid=51947713372214@lid ownJid=40723197939@s.whatsapp.net Verificat live: "token efactura expirat" -> preluat, cautat in RAG, raspuns trimis. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q4uzvgm7AyJch5WH8QHRhY
This commit is contained in:
@@ -23,6 +23,7 @@ let sock = null;
|
||||
let connected = false;
|
||||
let phoneNumber = null;
|
||||
let ownJid = null;
|
||||
let ownLid = null; // acelasi cont, adresat in formatul nou LID
|
||||
let currentQR = null;
|
||||
let currentPairingCode = null;
|
||||
let reconnectAttempts = 0;
|
||||
@@ -69,12 +70,19 @@ async function startConnection() {
|
||||
reconnectAttempts = 0;
|
||||
phoneNumber = sock.user?.id?.split(':')[0] || sock.user?.id?.split('@')[0] || null;
|
||||
ownJid = phoneNumber ? `${phoneNumber}@s.whatsapp.net` : null;
|
||||
console.log(`[whatsapp] Connected as ${phoneNumber} (self-chat-only mode: ${TEST_MODE_SELF_CHAT_ONLY})`);
|
||||
// WhatsApp adreseaza conturile si prin LID (Linked ID), nu doar prin numar. Pe
|
||||
// conturile noi, self-chat-ul soseste ca `<lid>@lid`, deci comparatia doar cu
|
||||
// `<numar>@s.whatsapp.net` arunca toate mesajele. Sufixul de dispozitiv (":13")
|
||||
// apare in credentiale dar nu si in remoteJid-ul mesajelor — il taiem.
|
||||
const rawLid = sock.user?.lid || sock.authState?.creds?.me?.lid || null;
|
||||
ownLid = rawLid ? `${rawLid.split(':')[0].split('@')[0]}@lid` : null;
|
||||
console.log(`[whatsapp] Connected as ${phoneNumber} (lid: ${ownLid || 'n/a'}, self-chat-only mode: ${TEST_MODE_SELF_CHAT_ONLY})`);
|
||||
}
|
||||
|
||||
if (connection === 'close') {
|
||||
connected = false;
|
||||
phoneNumber = null;
|
||||
ownLid = null;
|
||||
const statusCode = lastDisconnect?.error?.output?.statusCode;
|
||||
const shouldReconnect = statusCode !== DisconnectReason.loggedOut;
|
||||
|
||||
@@ -101,11 +109,23 @@ async function startConnection() {
|
||||
for (const msg of messages) {
|
||||
if (msg.key.remoteJid === 'status@broadcast') continue;
|
||||
const isGroup = msg.key.remoteJid.endsWith('@g.us');
|
||||
const isSelfChat = ownJid && msg.key.remoteJid === ownJid;
|
||||
if (TEST_MODE_SELF_CHAT_ONLY && !isSelfChat) continue;
|
||||
if (msg.key.fromMe && !isGroup && !isSelfChat) continue;
|
||||
const isSelfChat = (ownJid && msg.key.remoteJid === ownJid)
|
||||
|| (ownLid && msg.key.remoteJid === ownLid);
|
||||
// Mesajele aruncate se logheaza. Fara asta, un JID care nu se potriveste cu
|
||||
// ownJid (ex. formatul @lid) face bridge-ul sa taca fara nicio urma in log.
|
||||
if (TEST_MODE_SELF_CHAT_ONLY && !isSelfChat) {
|
||||
console.log(`[whatsapp] ignorat (nu e self-chat): remoteJid=${msg.key.remoteJid} ownJid=${ownJid} ownLid=${ownLid}`);
|
||||
continue;
|
||||
}
|
||||
if (msg.key.fromMe && !isGroup && !isSelfChat) {
|
||||
console.log(`[whatsapp] ignorat (fromMe, nu e self-chat): remoteJid=${msg.key.remoteJid}`);
|
||||
continue;
|
||||
}
|
||||
const text = msg.message?.conversation || msg.message?.extendedTextMessage?.text;
|
||||
if (!text) continue;
|
||||
if (!text) {
|
||||
console.log(`[whatsapp] ignorat (fara text): remoteJid=${msg.key.remoteJid} tipuri=${Object.keys(msg.message || {}).join(',')}`);
|
||||
continue;
|
||||
}
|
||||
|
||||
messageQueue.push({
|
||||
from: msg.key.remoteJid,
|
||||
@@ -131,6 +151,7 @@ app.get('/status', (_req, res) => {
|
||||
connected,
|
||||
phone: phoneNumber,
|
||||
selfChatOnly: TEST_MODE_SELF_CHAT_ONLY,
|
||||
lid: ownLid,
|
||||
qr: connected ? null : currentQR,
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user