fix: make trigger list public and ephemeral, fix rolesetup types, and improve bot safety
All checks were successful
Auto Build and Push Docker Image / build (push) Successful in 28s

- Make /trigger list and help public subcommands with ephemeral replies
- Restrict /trigger add and remove to moderators/admins
- Use Unicode-aware regex and strip URLs before trigger word matching
- Ensure guild_settings exist before UPDATE queries in welcome and log commands
- Fix rolesetup edit neue_rolle type to addRoleOption and prevent label truncation
- Reset select menu components after selection so users can re-click same options
- Validate Twitch streamers via Helix Users API and prevent interaction timeouts with deferReply
- Connect TwitchMonitor automatically on startup and when first channel is added
- Add moderation role-hierarchy checks to admin commands and enforce timeout limits
- Disable DM execution on server-bound commands to prevent SQLite null constraint errors
- Update README.md and AGENTS-BOT.md with new constraints and command documentation
This commit is contained in:
sarah
2026-11-01 12:34:54 +01:00
parent 8690e1e80a
commit 390297936d
16 changed files with 366 additions and 163 deletions

View File

@@ -79,8 +79,8 @@ npm run deploy
- `/twitch help` – Twitch-Hilfe
- `/timer list` – Timer dieses Kanals
- `/timer help` – Timer-Hilfe
- `/trigger list` – Alle Trigger anzeigen
- `/trigger help` – Trigger-Hilfe
- `/trigger list` – Alle Trigger anzeigen (ephemeral)
- `/trigger help` – Trigger-Hilfe (ephemeral)
### Timer (Erinnerungen)
- `/timer add <zeit> <nachricht>` – Timer hinzufügen
@@ -99,8 +99,8 @@ npm run deploy
### Trigger (Auto-Antworten)
- `/trigger add <wort> <antwort>` – Trigger hinzufügen (Mod)
- `/trigger remove <wort>` – Trigger entfernen (Mod)
- `/trigger list` – Alle Trigger anzeigen
- `/trigger help` – Trigger-Hilfe
- `/trigger list` – Alle Trigger anzeigen (Für alle User, ephemeral)
- `/trigger help` – Trigger-Hilfe (Für alle User, ephemeral)
### Twitch
- `/twitch online <kanal>` – Prüft ob Kanal online ist
@@ -119,12 +119,26 @@ npm run deploy
### Rollen-Auswahl
- `/rolesetup create <#kanal> <name>` – Rollen-Auswahl Message erstellen
- `/rolesetup add <kategorie> <@rolle> [emoji]` – Rolle zur Auswahl hinzufügen
- `/rolesetup edit <kategorie> <rolle> [neues_emoji]` – Emoji ändern
- `/rolesetup edit <kategorie> <rolle> [neue_rolle] [neues_emoji]` – Rolle oder Emoji ändern
- `/rolesetup remove <kategorie> <rolle>` – Rolle entfernen
- `/rolesetup delete <kategorie>` – Kategorie löschen
- `/rolesetup config <kategorie> max:1 exclusive:true` – Einstellungen
- `/rolesetup list` – Alle Kategorien anzeigen
### Welcome & Goodbye
- `/welcome setchannel <#kanal>` – Kanal für Willkommen/Abschied setzen (Mod)
- `/welcome add <welcome|goodbye> <nachricht>` – Nachricht setzen (Mod)
- `/welcome remove <welcome|goodbye>` – Nachricht entfernen (Mod)
- `/welcome list` – Aktuelle Einstellungen anzeigen (Mod)
- `/welcome help` – Welcome-Hilfe
### Log (Server-Logs)
- `/log setchannel <#kanal>` – Log-Kanal setzen (Mod)
- `/log enable <event>` – Event zum Loggen aktivieren (Mod)
- `/log disable <event>` – Event deaktivieren (Mod)
- `/log list` – Aktive Log-Events anzeigen (Mod)
- `/log help` – Log-Hilfe
### Admin
- `/admin kick <user>` – Nutzer kicken
- `/admin warn <user> <reason>` – Nutzer verwarnen
@@ -153,9 +167,9 @@ npm run deploy
- ✅ **Centralized Event Logging:** Ein zentrales `EventLogger`-System zur strukturierten und verlässlichen Erfassung von Server-Ereignissen (Nachrichten, Rollen, Nicknames, Kanäle, Kicks, Bans, Warnungen).
- ✅ **Optimized Twitch Polling:** Nutzt **Batch-Requests** (100 Kanäle pro Request), Datenbank-Transaktionen und ein 2-Minuten-Intervall für zeitnahe Benachrichtigungen.
- ✅ **TwitchMonitor IRC:** Echtzeit IRC Chat-Logging (Mod-Events) via **wiederverwendbaren Webhooks** und FIFO-Cache.
- ✅ **Advanced Moderation & Safety:** Warn-System mit Auto-Actions, umfangreiches Purge-System, abgesicherte Timeout-Limits (max. 28 Tage gemäß Discord-API) und vollständiges Exception handling.
- ✅ **Role Selection:** Self-Service Rollen-System über Discord Select Menus mit automatischer Berechtigungsprüfung und Fehlerabfangung.
- ✅ **Smart Auto-Response System:** Präzises Trigger-Wort-Matching mit Wortgrenzen-Regex (`\b`), um Falsch-Positive zu vermeiden.
- ✅ **Advanced Moderation & Safety:** Warn-System mit Auto-Actions, umfangreiches Purge-System, Rollen-Hierarchie-Schutz (Moderatoren können sich oder höherrangige Rollen nicht kicken/bannen/muten), abgesicherte Timeout-Limits (max. 28 Tage gemäß Discord-API) und vollständiges Exception handling.
- ✅ **Role Selection:** Self-Service Rollen-System über Discord Select Menus mit automatischer Berechtigungsprüfung, Menü-Reset nach Auswahl und Fehlerabfangung.
- ✅ **Smart Auto-Response System:** Präzises Trigger-Wort-Matching mit Unicode-Wortgrenzen (`\p{L}`), URL-Filterung gegen False Positives und ephemeraler Trigger-Liste für alle Server-Mitglieder.
- ✅ **Reminders:** Intelligentes Zeit-Parsing (z.B. "morgen 15:00", "30min").
- ✅ **Persistent Stopwatches:** Namentliche hochzählende Stoppuhren mit SQLite-Speicherung, Unterstützung für optionale vergangene Startzeiten (z.B. "14:30", "2h"), Duplikat-Schutz und relativer Discord-Zeitdarstellung.
- ✅ **Developer & Team Support:** Unterstützung von Discord Developer Teams und `BOT_OWNER_ID` Fallback für Owner-Befehle.