Bewerbungen zusätzlich per Discord-Webhook direkt in echte Kanäle posten
Ticketanizers Inbound-Ticket-API erzeugt bei API-Tickets nachweislich keinen echten Discord-Kanal (nur Web-Inbox + Rollen-Ping im Log-Kanal, auch nach manuellem Uebernehmen nicht) - das wurde heute gemeinsam mit Dogi live in der Ticketanizer-Inbox und in Discord verifiziert. Deshalb zusaetzlich ein normaler Discord-Webhook pro Zielkanal, der die komplette Bewerbung garantiert sichtbar direkt postet. Kanal-Zuordnung (von Dogi aus Discord kopiert): modi -> #modi-bewerbung (DISCORD_WEBHOOK_MODI) kooperation -> #kooperations-bewerbung (DISCORD_WEBHOOK_KOOPERATION) scout + creator -> #scout-bewerbung gemeinsam (DISCORD_WEBHOOK_SCOUT_MANAGER) - Neu: cloudflare-worker/src/lib/discord-webhooks.js - applications.js: postet jetzt parallel zu Ticketanizer (Promise.all, weiterhin ueber ctx.waitUntil im Hintergrund, blockiert nie die Antwort) - Alle 3 Secrets bereits live gesetzt und deployed - Getestet mit allen 4 Bewerbungstypen (modi/kooperation/scout/creator) - laut Log alle erfolgreich gepostet, Testdaten aus D1 wieder entfernt - README.md: Einschraenkung von Ticketanizer dokumentiert + neue Webhook-Einrichtungsanleitung
This commit is contained in:
@@ -8,6 +8,7 @@ import { hasPermission } from "../lib/permissions.js";
|
||||
import { logAction } from "../lib/audit.js";
|
||||
import { json } from "../lib/http.js";
|
||||
import { bewerbungAlsTicketAnlegen } from "../lib/ticketanizer.js";
|
||||
import { bewerbungAlsDiscordNachrichtPosten } from "../lib/discord-webhooks.js";
|
||||
|
||||
const ALLOWED_TYPES = ["creator", "scout", "kooperation", "modi"];
|
||||
|
||||
@@ -46,13 +47,20 @@ export async function submitApplication(request, env, ctx) {
|
||||
.bind(id, type, JSON.stringify(data), nowIso())
|
||||
.run();
|
||||
|
||||
// Zusätzlich (rein informativ, blockiert die Bewerbung selbst nie) als
|
||||
// echtes Ticket bei Ticketanizer im passenden Bereich anlegen.
|
||||
const ticketVersand = bewerbungAlsTicketAnlegen(env, type, data);
|
||||
// Zusätzlich (rein informativ, blockiert die Bewerbung selbst nie):
|
||||
// 1) echtes Ticket bei Ticketanizer im passenden Bereich anlegen
|
||||
// (Web-Inbox zum Bearbeiten/Antworten)
|
||||
// 2) direkte, garantiert sichtbare Discord-Nachricht in den passenden
|
||||
// Kanal posten (Ticketanizer erzeugt bei API-Tickets keinen echten
|
||||
// Discord-Kanal, siehe discord-webhooks.js)
|
||||
const zusatzVersand = Promise.all([
|
||||
bewerbungAlsTicketAnlegen(env, type, data),
|
||||
bewerbungAlsDiscordNachrichtPosten(env, type, data),
|
||||
]);
|
||||
if (ctx && typeof ctx.waitUntil === "function") {
|
||||
ctx.waitUntil(ticketVersand);
|
||||
ctx.waitUntil(zusatzVersand);
|
||||
} else {
|
||||
await ticketVersand.catch(() => {});
|
||||
await zusatzVersand.catch(() => {});
|
||||
}
|
||||
|
||||
return json({ ok: true });
|
||||
|
||||
Reference in New Issue
Block a user