Fix session deletion bug on reconnect limit
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user