Fix session deletion bug on reconnect limit

This commit is contained in:
Hamza-Ayed
2026-05-22 19:16:29 +03:00
parent 5478fbbae6
commit de6e90d873

View File

@@ -104,36 +104,36 @@ async function startSession(session_key, webhook_url) {
}
if (m.type !== 'notify') return;
for (const msg of m.messages) {
// Ignore messages sent by ourselves
if (msg.key.fromMe) continue;
const remoteJid = msg.key.remoteJid;
if (!remoteJid) continue;
// Only process individual chats (ignore groups and broadcasts)
const isGroup = remoteJid.endsWith('@g.us');
const isBroadcast = remoteJid.endsWith('@broadcast');
if (isGroup || isBroadcast) continue;
// Extract text body
const body = msg.message?.conversation ||
msg.message?.extendedTextMessage?.text ||
msg.message?.imageMessage?.caption ||
msg.message?.videoMessage?.caption || '';
const body = msg.message?.conversation ||
msg.message?.extendedTextMessage?.text ||
msg.message?.imageMessage?.caption ||
msg.message?.videoMessage?.caption || '';
const isAudio = !!msg.message?.audioMessage;
const isImage = !!msg.message?.imageMessage;
// Only process messages that have text content OR are audio/image messages
if (!body && !isAudio && !isImage) continue;
let audioBase64 = null;
let audioMimeType = null;
let imageBase64 = null;
let imageMimeType = null;
if (isAudio) {
try {
console.log(`[Baileys] Downloading audio message for ${remoteJid}`);
@@ -141,7 +141,7 @@ async function startSession(session_key, webhook_url) {
msg,
'buffer',
{},
{
{
logger: pino({ level: 'silent' }),
rekey: true
}
@@ -159,7 +159,7 @@ async function startSession(session_key, webhook_url) {
msg,
'buffer',
{},
{
{
logger: pino({ level: 'silent' }),
rekey: true
}
@@ -171,7 +171,7 @@ async function startSession(session_key, webhook_url) {
continue; // Skip if image download fails
}
}
// Extract sender phone number (handle LID privacy scheme)
let senderPhone = '';
if (msg.key.senderPn && msg.key.senderPn.endsWith('@s.whatsapp.net')) {
@@ -180,12 +180,13 @@ async function startSession(session_key, webhook_url) {
senderPhone = remoteJid.split('@')[0];
} else if (remoteJid.endsWith('@lid')) {
senderPhone = remoteJid.split('@')[0];
senderPhone = remoteJid.split('@')[0];
}
if (!senderPhone) continue;
const senderName = msg.pushName || '';
if (isAudio) {
console.log(`[Message] Received audio voice note from ${senderPhone} (JID: ${remoteJid})`);
} else if (isImage) {
@@ -193,7 +194,7 @@ async function startSession(session_key, webhook_url) {
} else {
console.log(`[Message] Received from ${senderPhone} (JID: ${remoteJid}): ${body}`);
}
await sendWebhook(webhook_url, {
session_key,
state: 'message_received',
@@ -317,13 +318,13 @@ async function sendMessage(session_key, phone, message, mediaUrl = null, audioBa
let jid = phone.includes('@') ? phone : `${phone}@s.whatsapp.net`;
let sentMsg;
if (audioBase64) {
const buffer = Buffer.from(audioBase64, 'base64');
sentMsg = await sock.sendMessage(jid, {
audio: buffer,
mimetype: 'audio/mp4',
ptt: true
sentMsg = await sock.sendMessage(jid, {
audio: buffer,
mimetype: 'audio/mp4',
ptt: true
});
} else if (mediaUrl) {
const ext = mediaUrl.split('.').pop().toLowerCase();
@@ -337,7 +338,7 @@ async function sendMessage(session_key, phone, message, mediaUrl = null, audioBa
} else {
sentMsg = await sock.sendMessage(jid, { text: message });
}
// Cache outbound messages for E2EE decryption retries
if (sentMsg && sentMsg.key && sentMsg.key.id && sentMsg.message) {
recentMessages.set(sentMsg.key.id, sentMsg.message);
@@ -346,7 +347,7 @@ async function sendMessage(session_key, phone, message, mediaUrl = null, audioBa
recentMessages.delete(firstKey);
}
}
return sentMsg;
}