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}`);
|
console.log(`[WS] Downloading media for message: ${messageId}`);
|
||||||
const media = await msg.downloadMedia();
|
|
||||||
if (!media) {
|
let media = null;
|
||||||
return respond({ type: 'error', message: 'Failed to download media file from WhatsApp servers' });
|
// 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({
|
return respond({
|
||||||
|
|||||||
Reference in New Issue
Block a user