fix: add retry & delay to downloadMedia in server.js

This commit is contained in:
Hamza-Ayed
2026-05-18 16:41:12 +03:00
parent f2a14ce23e
commit 7c1fbd6696

View File

@@ -388,9 +388,25 @@ async function handleMessage(ws, raw) {
}
console.log(`[WS] Downloading media for message: ${messageId}`);
const media = await msg.downloadMedia();
if (!media) {
return respond({ type: 'error', message: 'Failed to download media file from WhatsApp servers' });
let media = null;
// Attempt to download media with retries and a delay to allow decryption
for (let i = 0; i < 3; i++) {
try {
media = await msg.downloadMedia();
if (media && media.data) {
console.log(`[WS] Successfully downloaded media on attempt ${i + 1}`);
break;
}
} catch (err) {
console.warn(`[WS] Media download attempt ${i + 1} failed:`, err.message);
}
// Wait 1.5 seconds before retrying
await new Promise(resolve => setTimeout(resolve, 1500));
}
if (!media || !media.data) {
return respond({ type: 'error', message: 'Failed to download media file from WhatsApp servers after multiple attempts' });
}
return respond({