Enhance bot and WebUI functionality with new features and environment updates

- Added support for new environment variables in `.env.example` for public site and legal operator information.
- Integrated core commands into the bot's command structure for improved functionality.
- Implemented a new `publishBotStatus` function to update bot status in Redis, enhancing monitoring capabilities.
- Updated the landing page to include features, invite links, and support server access, improving user experience.
- Enhanced localization with new keys for core commands and landing page elements in both English and German.
- Improved error handling and logging for bot presence updates and status publishing.
This commit is contained in:
smueller
2026-07-22 16:47:09 +02:00
parent 0b4ac0da29
commit 4852f16f79
32 changed files with 1579 additions and 83 deletions

View File

@@ -3,23 +3,42 @@
- OAuth/Sessions, Settings-Framework, Layout, Modul-Toggles, Access-Rules
- Login manuell bestätigt (`WEBUI_URL=http://10.111.0.65:3000`)
## Phase 7 WebUI Modul-Seiten + Owner-Panel (Status: implementiert, manuelle Tests ausstehend)
## Phase 7 WebUI Modul-Seiten + Owner-Panel (Status: abgeschlossen, manuell bestätigt)
### Abgeschlossen
- **Batch A:** Moderation, Automod, Logging, Welcome, Verification, Leveling, Economy, Fun + Prisma Owner-Modelle (`20260722190000_phase7_owner`)
- **Batch B:** Tickets, Giveaways, SelfRoles, Tags, Starboard, Suggestions, Birthdays, TempVoice, Stats, Feeds, Scheduler, Backup, Commands-Seite, Overview-Aktivität; BullMQ-Anbindung WebUI↔Bot
- **Batch C (Owner-Panel):** `/owner` Übersicht, Guilds (Leave/Blacklist), User-Blacklist, Feature-Flags, Presence (+ Bot-Job `presence` + Wartungsmodus in `routeCommand`), Team, Jobs/Migrationen, Changelog, Owner-Audit; Auth über `OWNER_USER_IDS` + `OwnerTeamMember`
- Shared: `dashboard.ts`, `owner.ts` + Tests
- Checks: shared 46 Tests, webui typecheck/lint, bot typecheck grün
- Alle Modul-Dashboard-Seiten, Commands-Seite, Overview-Aktivität
- Owner-Panel (`/owner`: Übersicht, Guilds, Users, Flags, Presence, Team, Jobs, Changelog, Audit)
- Prisma `20260722190000_phase7_owner`, Shared Zod (`dashboard.ts`, `owner.ts`)
- BullMQ WebUI↔Bot, Presence-/Wartungsmodus-Anbindung
- Manuell bestätigt (User-Freigabe)
## Phase 8 Landing, Status, Rechtsseiten (Status: implementiert, manuelle Tests offen)
### Abgeschlossen (Code)
- Landing `/` (Features, Invite, Support, Live-Stats, Login/Dashboard)
- Status `/status` (Shards/Latenz/Uptime aus Redis `bot:status`, Changelog/Incidents)
- Rechtsseiten-Gerüst `/impressum`, `/privacy`, `/terms` (DE+EN i18n; Impressum aus Env)
- Public APIs `GET /api/public/stats`, `GET /api/public/status`
- Bot schreibt `bot:status` (Presence-Job + Ready); Core-Commands `/help`, `/info`, `/invite`, `/support`
- `docs/verification.md` (Privileged Intents)
- Env: `SUPPORT_SERVER_URL`, `LEGAL_OPERATOR_*` (WebUI), `WEBUI_URL`/`SUPPORT_SERVER_URL` (Bot)
### Manuell testen
1. `OWNER_USER_IDS=<deine Discord-User-ID>` in `.env` setzen, Stack neu starten
2. Dashboard-Modul-Seiten speichern (Settings/Module/Cases etc.)
3. Owner-Panel: `/owner` → Presence, Flags, Team, Jobs
4. Giveaway/Suggestion/Backup-Aktionen aus dem Dashboard (BullMQ)
- [ ] Landing unter `WEBUI_URL` (nicht localhost): Stats, Invite, Login
- [ ] `/status` zeigt Shards nach Bot-Start (sonst „degraded“ bis Redis-Status da ist)
- [ ] Impressum: mit/ohne `LEGAL_OPERATOR_*` in `.env`
- [ ] Privacy/Terms in DE und EN (Locale-Cookie)
- [ ] Discord: `/help`, `/info`, `/invite`, `/support`
- [ ] Support-Link nur sichtbar, wenn `SUPPORT_SERVER_URL` gesetzt
### Bewusst offen (SPEC, nicht Phase 8)
- Musik- und KI-Modul (nur auf Zuruf)
- Premium-Zahlungsanbindung (manuelle Zuweisung bleibt Owner-Panel)
## Nächster geplanter Schritt
- Nach Freigabe Phase 8 (Landing Page, Status-Seite, Rechtsseiten-Gerüst).
- Nach manueller Freigabe Phase 8: auf Zuruf Musik/KI oder andere SPEC-Restpunkte.

41
docs/verification.md Normal file
View File

@@ -0,0 +1,41 @@
# Discord Bot Verification Privileged Intents
This document lists why Nexumi requires privileged Gateway intents for Discord's verification application.
Update it when modules gain or lose intent dependencies.
## Server Members Intent (`GuildMembers`)
Required so the bot can receive and act on member join/leave/update events and resolve member lists beyond the cache.
| Module | Why |
|--------|-----|
| Welcome & Abschied | Join/leave messages, autoroles, member-count placeholders |
| Verification | Assign verified/unverified roles on join and after button/captcha success |
| Logging | Member join/leave, nickname and role changes |
| Auto-Moderation (Anti-Raid) | Join-rate detection and lockdown reactions |
| Leveling | Voice XP and member-bound XP state |
| Temp-Voice | Owner transfer / claim when members move |
| Stats / Invite-Tracking | Member counts and invite attribution on join |
| Birthdays | Resolve birthday role recipients |
| Tickets / Self-Roles | Permission overwrites and role grants for members |
Without this intent, welcome, verification, raid protection, and accurate member logging cannot function.
## Message Content Intent (`MessageContent`)
Required to read message text for filters, XP, custom triggers, and moderation tools.
| Module | Why |
|--------|-----|
| Auto-Moderation | Spam, mentions, caps, invites, links, word/regex filters, duplicates, emoji spam, zalgo, phishing lists |
| Leveling | Text XP from message content (with cooldowns) |
| Tags | Trigger-word custom commands |
| Logging | Edited/deleted message content in log embeds |
| Utility (`/snipe`, `/editsnipe`) | Restore last deleted/edited message content when enabled |
| Moderation (`/purge` filters) | Filter by links/regex against message body |
Slash command **options** do not need this intent; only messages sent by users in guild channels do.
## Intents that are not privileged (for reference)
Nexumi also uses non-privileged intents such as `Guilds`, `GuildMessages`, `GuildMessageReactions`, `GuildModeration`, `GuildVoiceStates`, `GuildEmojisAndStickers`, and `GuildInvites`. Those do not require special verification approval but are listed here for completeness of the gateway configuration in `apps/bot/src/index.ts`.