kundencenter/migrations/026_discord_settings.sql
Kundencenter c8da9362a7 feat: Discord-Bot über die Oberfläche konfigurierbar
Bisher kam die Discord-Konfiguration (Token, Server-ID, Kanal-ID,
erlaubte Nutzer-IDs) ausschließlich aus Umgebungsvariablen. Jetzt
unter Einstellungen > Discord einstellbar, inkl. Schritt-für-Schritt-
Anleitung zum Einrichten einer Discord-Anwendung/eines Bots (Token
erzeugen, einladen, IDs ermitteln).

- Migration 026: discord_settings (Token verschlüsselt, wie SMTP/IMAP).
- apps/worker/src/discord.ts liest die Einstellungen jetzt aus der DB
  statt aus process.env; syncDiscord() läuft periodisch (60s) und
  verbindet automatisch neu, wenn sich Token/Server/Aktivierung
  geändert haben (Trennung von Verbindungs- und Laufzeitdaten: Kanal-ID
  und erlaubte Nutzer werden bei jeder Nutzung frisch aus der DB
  gelesen, ohne Neuverbindung).
- Neues API-Modul apps/api/src/modules/discord: Einstellungen lesen/
  schreiben, Token- und Testnachricht-Prüfung direkt über die Discord-
  REST-API (unabhängig vom laufenden Bot-Prozess im Worker).
- Rechte discord.read (Admin+) / discord.write (Superadmin), wie beim
  E-Mail-Modul.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-28 23:28:24 +02:00

15 lines
719 B
SQL

-- Discord-Bot-Konfiguration über die Oberfläche statt nur über Umgebungsvariablen (analog SMTP/IMAP).
CREATE TABLE discord_settings (
id TINYINT PRIMARY KEY DEFAULT 1,
enabled TINYINT(1) NOT NULL DEFAULT 0,
token_enc TEXT NULL,
guild_id VARCHAR(32) NULL,
admin_channel_id VARCHAR(32) NULL,
staff_user_ids VARCHAR(1000) NULL,
last_error VARCHAR(500) NULL,
last_connected_at DATETIME(3) NULL,
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
updated_by CHAR(36) NULL REFERENCES users(id),
CONSTRAINT chk_discord_singleton CHECK (id = 1)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INSERT INTO discord_settings (id) VALUES (1);