diff --git a/index.js b/index.js index 9b1ac89..d7eb3b2 100644 --- a/index.js +++ b/index.js @@ -42,16 +42,18 @@ const localDownloadFile = process.env.SMB_LOCAL_DOWNLOAD_FILE; // Admin Telegram Broadcast (env-configured) -const BASE_URL = process.env.BASE_URL; -const ADMIN_API_KEY = process.env.ADMIN_API_KEY; +const BASE_URL = (process.env.BASE_URL || '').trim(); +const ADMIN_API_KEY = (process.env.ADMIN_API_KEY || '').trim(); async function sendTelegramBroadcast(target, message) { try { if (!BASE_URL || !ADMIN_API_KEY) { - console.warn('Skipping admin broadcast: missing BASE_URL or ADMIN_API_KEY'); + console.warn('Skipping admin broadcast: missing BASE_URL or ADMIN_API_KEY', { hasBaseUrl: !!BASE_URL, hasKey: !!ADMIN_API_KEY }); return null; } const endpoint = `${BASE_URL.replace(/\/$/, '')}/api/admin/telegram/broadcast`; + console.log(`Broadcast → ${endpoint} target=${target}`); + const res = await fetch(endpoint, { method: 'POST', headers: { @@ -60,11 +62,18 @@ async function sendTelegramBroadcast(target, message) { }, body: JSON.stringify({ target, message }), }); + + let bodyText = ''; + try { bodyText = await res.text(); } catch {} + if (!res.ok) { - const err = await res.json().catch(() => ({})); - throw new Error(`Broadcast failed: ${res.status} ${res.statusText} ${err.error || ''}`); + let parsed; + try { parsed = JSON.parse(bodyText); } catch {} + const detail = parsed && parsed.error ? parsed.error : (bodyText ? bodyText.slice(0, 300) : ''); + throw new Error(`Broadcast failed: ${res.status} ${res.statusText} - ${detail}`); } - return res.json(); + + return bodyText ? JSON.parse(bodyText) : {}; } catch (e) { console.error('Admin broadcast error:', e.message); return null;