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>
This commit is contained in:
parent
8616e51adc
commit
c8da9362a7
8 changed files with 222 additions and 20 deletions
15
migrations/026_discord_settings.sql
Normal file
15
migrations/026_discord_settings.sql
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
-- 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);
|
||||
Loading…
Add table
Add a link
Reference in a new issue