Bewerbungen zusätzlich automatisch in Discord (Ticketanizer) posten

Jede eingehende Bewerbung landet weiterhin wie bisher in der D1-Datenbank,
wird zusätzlich aber (falls eine Webhook-URL hinterlegt ist) als formatierte
Discord-Nachricht in den passenden Kanal gepostet - pro Bewerbungsbereich
(Modi/Scout/Creator/Kooperation) eine eigene Webhook-URL, exakt wie auf der
Website getrennt. Läuft über normale Discord-Webhooks, kompatibel mit
Ticketanizer, falls dessen Kanäle eigene Ziel-URLs im selben Format anbieten.

- Neu: cloudflare-worker/src/lib/discord.js (Embed-Aufbau, Feld-Labels
  pro Formular, Farbe je Bewerbungsart)
- applications.js: submitApplication ruft den Versand nach dem Speichern
  auf, über ctx.waitUntil() damit die Antwort an den Nutzer nicht wartet
- worker.js: ctx wird jetzt an fetch() durchgereicht
- Discord ist rein informativ - fehlt die Webhook-URL oder ist Discord
  kurz nicht erreichbar, wird die Bewerbung trotzdem ganz normal
  gespeichert
- README.md: Einrichtungsanleitung (wrangler secret put DISCORD_WEBHOOK_*)
This commit is contained in:
2026-08-01 12:24:32 +02:00
parent d8664e7476
commit 992e3de446
4 changed files with 163 additions and 4 deletions
+53 -1
View File
@@ -84,10 +84,62 @@ npx wrangler secret put POSTFACH_CODE
# z.B. erzeugen mit: node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"
npx wrangler secret put ENCRYPTION_KEY
# 7. Deployen
# 7. (Optional) Bewerbungen zusätzlich automatisch in Discord posten —
# siehe Abschnitt "Bewerbungen auf Discord (Ticketanizer)" unten.
# Ohne diesen Schritt läuft alles wie gehabt, es fehlt nur die
# Discord-Benachrichtigung.
# 8. Deployen
npx wrangler deploy
```
## Bewerbungen auf Discord (Ticketanizer)
Jede eingehende Bewerbung wird zusätzlich zur Speicherung in der Datenbank als
schön formatierte Nachricht (Embed) in den passenden Discord-Kanal gepostet —
pro Bewerbungsbereich ein eigener Kanal/Webhook, exakt wie auf der Website
getrennt (Modi, Scout, Creator, Kooperation).
**Das läuft komplett über normale Discord-Webhooks — kein Bot, kein
zusätzlicher Code auf Discord-Seite nötig.** Falls Ticketanizer selbst in
seinen Board-/Kanal-Einstellungen bereits eine eigene Ziel-Webhook-URL
anzeigt, kann diese genauso eingetragen werden wie eine normale
Discord-Webhook-URL — beide funktionieren identisch (Discord-Webhook-Format).
### Einrichtung (pro Kanal ca. 1 Minute)
1. Im Discord-Kanal (z.B. dem Modi-Bewerbungskanal): Kanal bearbeiten →
**Integrationen****Webhooks****Neuer Webhook**.
2. Der Webhook kann beliebig heißen (z.B. "Homepage-Bewerbungen"). **Webhook-URL
kopieren.**
3. Als Secret im Worker hinterlegen (einmal pro Bewerbungsbereich, nur die
URLs eintragen, die schon vorhanden sind — fehlende werden einfach
übersprungen, es gibt dafür keine Fehlermeldung):
```bash
npx wrangler secret put DISCORD_WEBHOOK_MODI
npx wrangler secret put DISCORD_WEBHOOK_SCOUT
npx wrangler secret put DISCORD_WEBHOOK_CREATOR
npx wrangler secret put DISCORD_WEBHOOK_KOOPERATION
```
Jeweils die kopierte Webhook-URL einfügen, wenn danach gefragt wird.
4. Danach einmal `npx wrangler deploy`, damit der Worker die neuen Secrets
kennt (Secrets selbst brauchen keinen Deploy, aber schadet nicht).
### Wichtig
- **Discord ist rein informativ, kein Ausfallpunkt.** Fehlt eine Webhook-URL
oder ist Discord kurz nicht erreichbar, wird die Bewerbung trotzdem ganz
normal in der Datenbank gespeichert — nur die Zusatz-Nachricht in Discord
entfällt dann.
- Secrets stehen **nie** im Code oder in `wrangler.toml` (die ist eingecheckt),
sondern ausschließlich verschlüsselt bei Cloudflare — genau wie
`POSTFACH_CODE` und `ENCRYPTION_KEY`.
- Ändern/Ersetzen einer URL: den jeweiligen `wrangler secret put ...`-Befehl
erneut ausführen, überschreibt den alten Wert.
## Wer den Owner-Code kennen darf
Nur du. Er ist dein Hauptadministrator-Zugang — sieht ausnahmslos alles, kann Zugänge/Rollen/Codes