diff --git a/whatsapp_bridge/server.js b/whatsapp_bridge/server.js index 7102245..90887fd 100644 --- a/whatsapp_bridge/server.js +++ b/whatsapp_bridge/server.js @@ -364,6 +364,22 @@ function initWhatsApp() { } }); + // Poll Vote updates (Listen to real-time votes on polls!) + waClient.on('vote', (vote) => { + try { + console.log(`[WA] Poll vote received from: ${vote.sender} for poll message: ${vote.pollMessageId}`); + broadcast({ + type: 'poll_vote', + pollMessageId: vote.pollMessageId, + sender: vote.sender, + selectedOptions: vote.selectedOptions, + timestamp: vote.timestamp + }); + } catch (err) { + console.error('[WA] Error broadcasting poll_vote event:', err.message); + } + }); + // Disconnected waClient.on('disconnected', (reason) => { console.warn('[WA] Disconnected! Reason:', reason); @@ -766,6 +782,22 @@ app.post('/api/send-poll', async (req, res) => { +// ─── HTTP Profile Pic Avatar Endpoint ─────────────────────────────────────── +app.get('/api/avatar', async (req, res) => { + if (!clientReady) return res.status(503).json({ error: 'WhatsApp is not ready' }); + const { phone } = req.query; + if (!phone) return res.status(400).json({ error: 'phone parameter is required' }); + + try { + const chatId = phone.includes('@') ? phone : `${phone}@c.us`; + const avatarUrl = await waClient.getProfilePicUrl(chatId); + res.status(200).json({ success: true, avatarUrl: avatarUrl || null }); + } catch (err) { + console.error('[API] Avatar error:', err.message); + res.status(500).json({ error: err.message }); + } +}); + // ─── HTTP Health Endpoint ────────────────────────────────────────────────── app.get('/health', (req, res) => { res.status(200).json({