Enhance tag management with cooldown feature and related updates

- Added a `cooldownSeconds` field to the `Tag` model, allowing for customizable cooldown periods between tag responses.
- Updated tag command handling to incorporate cooldown logic, preventing spam and improving user experience.
- Enhanced the WebUI to support cooldown configuration for tags, including input validation and localization for cooldown messages.
- Refactored tag-related service functions to manage cooldowns effectively, ensuring accurate tracking and enforcement.
- Improved localization for new cooldown-related messages in both English and German.
This commit is contained in:
TheOnlyMace
2026-07-25 16:50:46 +02:00
parent 5f932f5d63
commit bc4fae5415
21 changed files with 318 additions and 39 deletions

View File

@@ -567,3 +567,34 @@
- [ ] Alt-Check mit Block → User sieht Fehler-Ephemeral; Log-Kanal bekommt Embed
- [ ] Alt-Check nur Flag (ohne Block) → User wird verifiziert, Log trotzdem
## Post-Phase Tag Auto-Responder Cooldown (Status: implementiert)
### Abgeschlossen (Code)
- `Tag.cooldownSeconds` (Default 15, 0 = aus) inkl. Migration `20260725170000_tag_cooldown`
- Auto-Responder: kanalbezogener Redis-Cooldown, bei aktivem Cooldown stille Ignorierung (kein Spam)
- `/tag run`: nutzerbezogener Cooldown mit ephemeral Hinweis
- Dashboard Tags: Cooldown-Feld (DE/EN), Shared Zod + WebUI Persistenz
### Manuell testen
- [ ] Tag mit Trigger-Wort: zweimal schnell tippen → nur erste Antwort
- [ ] Cooldown im Dashboard auf 0 setzen → Bot antwortet wieder sofort
- [ ] `/tag run` während Cooldown → ephemeral mit Restzeit
## Post-Phase Server-Stats WebUI Refresh (Bugfix)
### Abgeschlossen (Code)
- Root cause: Dashboard speicherte nur `StatsConfig`, ohne Discord-Kanal-Rename; Cron erst alle 10 Min. Online-Count ohne `withCounts` oft 0 (kein GuildPresences-Intent)
- BullMQ-Job `statsRefreshGuild` (Queue `stats`); WebUI triggert nach Speichern bei enabled + mind. einem Kanal
- Guild-Fetch mit `withCounts: true` für `approximatePresenceCount` / Member-Approx
- `/stats setup|refresh` refresht nur den aktuellen Guild (nicht alle)
### Manuell testen
- [ ] WebUI: Stats aktivieren, Voice-Kanäle setzen, Speichern → Kanalnamen zeigen `{count}`-Werte innerhalb weniger Sekunden
- [ ] Toggle aus → Speichern → keine weiteren Renames (Cron überspringt disabled)
- [ ] Online-Kanal zeigt sinnvolle Zahl (nicht dauerhaft 0)
- [ ] Bot ohne „Kanäle verwalten“ → Config gespeichert; Bot-Log warnt; nach Permission-Fix erneut speichern