fix: add retry & delay to downloadMedia in server.js
This commit is contained in:
@@ -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({
|
||||
|
||||
Reference in New Issue
Block a user