/* ===================================================================== lib/discord-webhooks.js — Bewerbungen als Discord-Nachricht posten. 1:1 portiert aus cloudflare-worker/src/lib/discord-webhooks.js (reines fetch(), env.X → process.env.X). ===================================================================== */ const WEBHOOK_ENV_KEYS = { modi: "DISCORD_WEBHOOK_MODI", kooperation: "DISCORD_WEBHOOK_KOOPERATION", scout: "DISCORD_WEBHOOK_SCOUT_MANAGER", creator: "DISCORD_WEBHOOK_SCOUT_MANAGER", }; const TYPE_LABELS = { modi: "🩵 Neue Bewerbung — Modi (Team Dogi)", kooperation: "🤝 Neue Kooperationsanfrage", scout: "🔎 Neue Bewerbung — Scout (Spicy Media)", creator: "🎬 Neue Bewerbung — Creator / Manager-Bewerbung (Spicy Media)", }; const TYPE_COLORS = { modi: 0x8fd9ea, kooperation: 0x8b5cf6, scout: 0xd94a5c, creator: 0xd94a5c }; const FIELD_LABELS = { name: "Name", email: "E-Mail", kontakt: "Kontakt (Discord/TikTok)", erfahrung: "Erfahrung", verfuegbarkeit: "Verfügbarkeit", warum: "Warum möchtest du dabei sein?", platform: "Plattform", content: "Content-Art", firma: "Firma / Projekt", idee: "Idee / Anliegen", }; function feldWert(wert) { const text = String(wert ?? "").trim(); if (!text) return "_(leer)_"; return text.length > 1000 ? text.slice(0, 1000) + "…" : text; } export async function bewerbungAlsDiscordNachrichtPosten(type, data) { const envKey = WEBHOOK_ENV_KEYS[type]; const webhookUrl = envKey && process.env[envKey]; if (!webhookUrl) { console.error(`[discord-webhook] Keine Webhook-URL für "${type}" hinterlegt (${envKey}) — übersprungen.`); return; } const fields = Object.entries(data || {}) .filter(([, v]) => String(v ?? "").trim() !== "") .map(([key, value]) => ({ name: FIELD_LABELS[key] || key, value: feldWert(value), inline: String(value).length < 40 })); const embed = { title: TYPE_LABELS[type] || "Neue Bewerbung", color: TYPE_COLORS[type] ?? 0x8fd9ea, fields: fields.length ? fields : [{ name: "Hinweis", value: "Keine Angaben übermittelt." }], footer: { text: "DOGFATHER UNIVERSE — automatisch von der Homepage" }, timestamp: new Date().toISOString(), }; try { const antwort = await fetch(webhookUrl, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ embeds: [embed] }), }); if (!antwort.ok) { const antwortText = await antwort.text().catch(() => ""); console.error(`[discord-webhook] Fehler beim Posten (${type}): HTTP ${antwort.status} — ${antwortText}`); } } catch (fehler) { console.error(`[discord-webhook] Ausnahme beim Posten (${type}):`, fehler && fehler.message); } }