diff --git a/whatsapp_bridge/server.js b/whatsapp_bridge/server.js index 61c651f..3e95127 100644 --- a/whatsapp_bridge/server.js +++ b/whatsapp_bridge/server.js @@ -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({