- Introduced new models in the Prisma schema for statistics, social feeds, scheduled messages, and guild backups, enhancing the bot's functionality. - Implemented command modules for managing stats channels, feeds, scheduling messages, and creating/restoring backups, improving user engagement and server management. - Updated job handling to include dedicated workers for stats updates, feed polling, scheduling, and backup restoration, enhancing automation. - Enhanced command localization for new features in both German and English. - Documented the new features and their setup processes in PHASE-TRACKING.md for clarity on implementation steps.
8.7 KiB
8.7 KiB
Nexumi – Phasen-Tracking
Dieses Dokument hält den aktuellen Implementierungsstand fest. Es wird bei jedem Arbeitsfortschritt aktualisiert.
Assets
- Bot-Logo vorhanden:
docs/logo/nexumi-logo.svg
Phase 1 – Fundament (Status: abgeschlossen, manuelle Discord-Tests ausstehend)
Bereits abgeschlossen
- Monorepo-Basis mit Workspaces:
apps/botpackages/shared
- Basis-Tooling:
- TypeScript strict
- ESLint
- Prettier
- Vitest
- Turbo
- Docker-Compose-Grundstack:
postgresmit Healthcheckredismit Healthcheckbotwebui-Scaffold-Service (temporär)backupsVolume angebunden
- Prisma-Grundmodell inkl. Moderationsdaten:
GuildGuildSettingsUserCaseWarningModNoteEscalationRule
- Bot-Grundarchitektur:
- Sharding-Startpfad
- Command-Registrierung
- Command-Routing
- zentraler Permission-Check
- Basis-i18n in
@nexumi/shared - Guild-Locale-Auflösung über DB-Settings mit Fallback auf Env-Default
- Health-Endpoint (
/health) und token-geschütztes/metrics-Scaffold
- BullMQ-Integration:
- Moderation-Queue
- Temp-Ban-Expire-Job
- täglicher Backup-Job (
pg_dump) - Backup-Retention-Cleanup
- Moderation als Referenzmodul (implementiert):
/ban,/unban,/kick,/timeout,/untimeout/warn add|list|remove|clear/warn escalation-set|escalation-list|escalation-remove/purge(Filter: User, Bots, Links, Attachments, Regex)/slowmode,/lock,/unlock/nick set|reset/case view|edit|delete/modnote add|list- user-facing Reply-Strings im Moderationsfluss auf i18n-Keys umgestellt (
de/en) - Slash-Command-Beschreibungen und Optionstexte lokalisiert (
de+en-USvia Discord-Localizations) - Bestätigungsflow für destruktive Aktionen (
/ban,/purge,/case delete) mit Buttons - standardisierte Case-Audit-Metadaten über
@nexumi/shared(buildCaseMetadata)
- Docker-Build/Runtime-Fixes für E2E:
.dockerignoreergänzt- Prisma-Migration beim Bot-Start (
prisma migrate deploy) - Bot-Healthcheck auf
/health
- E2E-Verifikation (automatisiert, lokal):
docker compose up -d --builderfolgreich- Postgres/Redis healthy
- Migration
20260722123000_initangewendet - Bot online (
Nexumi#9122), 13 Slash-Commands registriert - Bot-Container healthy
- Tests (aktuell vorhanden):
packages/shared/src/i18n.test.tspackages/shared/src/audit.test.tsapps/bot/src/modules/moderation/duration.test.ts
Manuelle Discord-Tests (noch offen)
- Bot auf Test-Server einladen (falls noch nicht geschehen)
- Slash-Commands testen:
/ban,/warn add,/purge,/case view - Bestätigungsbuttons bei
/banund/purgeprüfen
Phase 2 – AutoMod, Logging, Welcome, Verifizierung (Status: implementiert, manuelle Tests ausstehend)
Abgeschlossen
- Prisma-Erweiterung + Migration
20260722140000_phase2_modules:AutoModConfig,AutoModRuleLoggingConfig,LogChannelWelcomeConfigVerificationConfig
- Shared-Schemas und Hilfsfunktionen (
packages/shared/src/phase2.ts) - AutoMod (
apps/bot/src/modules/automod/):- Filter: Spam, Massen-Mentions, Caps, Invite-Links, externe Links, Wortfilter, Duplikate, Emoji-Spam, Zalgo, Phishing-Blockliste
- Standardregeln werden pro Guild beim ersten Zugriff angelegt
- Anti-Raid (Join-Rate → Lockdown)
- Anti-Nuke (Massen-Bans/Channel-Löschungen → Rechteentzug)
/automod status- Phishing-Listen-Refresh via BullMQ (alle 6h + beim Start)
- Logging (
apps/bot/src/modules/logging/):- Event-Handler für alle SPEC-Events (Nachrichten, Member, Bans, Rollen, Kanäle, Voice, Invites, Emoji/Sticker, Threads, Guild-Update)
- Mod-Action-Log verknüpft mit Case-System (
logModActionincreateCase) - Ignore-Listen (Kanäle, Rollen, Bots) über DB
- Log-Kanal-Zuordnung über
LogChannel-Tabelle (Konfiguration künftig WebUI)
- Welcome/Leave (
apps/bot/src/modules/welcome/):- Text-, Embed- und Bild-Karten (Canvas via
@napi-rs/canvas) - Platzhalter-System
- Autoroles (User/Bots getrennt)
- Welcome-DM
/welcome test,/welcome preview
- Text-, Embed- und Bild-Karten (Canvas via
- Verifizierung (
apps/bot/src/modules/verification/):/verify setup,/verify panel- Button-Verify und Captcha-Verify (Captcha-Seite unter
/verify/captchaam Health-Server) - Mindest-Accountalter, Fehlschlag-Aktionen (Kick/Ban/None)
- Unverified-Rolle bei Join
- Bot-Intents erweitert:
GuildMembers,GuildMessages,MessageContent,GuildModeration,GuildVoiceStates,GuildEmojisAndStickers,GuildInvites
- Neue Env-Variable:
PUBLIC_BASE_URL(Captcha-Links) - Tests:
packages/shared/src/phase2.test.ts
Manuelle Discord-Tests (noch offen)
- Privileged Intents im Developer Portal aktivieren:
SERVER MEMBERS INTENTMESSAGE CONTENT INTENT
- AutoMod: Spam-/Invite-Testnachrichten senden
/automod statusprüfen- Logging: Log-Kanäle per DB/ später WebUI setzen, Events auslösen
/welcome previewund/welcome test(Konfiguration zunächst per DB oder später WebUI)/verify setup+/verify panel, Button- und Captcha-Flow testenPUBLIC_BASE_URLauf erreichbare URL setzen (für Captcha außerhalb localhost)
Hinweise
- Welcome-/Logging-Konfiguration erfolgt in Phase 2 über die Datenbank; die WebUI-Editoren kommen in Phase 7.
- Captcha-Seite läuft am Bot-Health-Port (
HEALTH_PORT); in Produktion mussPUBLIC_BASE_URLdarauf zeigen oder über Reverse-Proxy geroutet werden.
Phase 3 – Leveling, Economy, Utility, Fun (Status: implementiert, manuelle Tests ausstehend)
Abgeschlossen
- Prisma-Migration
20260722150000_phase3_modules:LevelingConfig,MemberLevel,LevelRewardEconomyConfig,MemberEconomy,ShopItem,InventoryItemPoll,PollVote,Reminder,AfkStatus
- Shared-Helfer
packages/shared/src/phase3.ts+ Tests - Commands und Events in Root verdrahtet (
commands.ts,index.ts)
Leveling (apps/bot/src/modules/leveling/)
/rank(Canvas-Rankkarte),/leaderboard,/xp give|remove|reset- Text-XP (Cooldown Redis) und Voice-XP
- Multiplikatoren, No-XP-Kanäle/-Rollen, Level-Rewards, Level-Up CHANNEL/DM/OFF
Economy (apps/bot/src/modules/economy/)
/balance,/daily,/weekly,/work,/pay/gamble,/slots,/blackjack(Buttons),/coinflip(Wette)/shop view|buy,/inventory,/eco leaderboard|give|remove|reset- Währung pro Server in
EconomyConfig
Utility (apps/bot/src/modules/utility/)
/userinfo,/serverinfo,/roleinfo,/channelinfo,/avatar,/banner/poll create(Buttons, DB, Ablauf via BullMQ)/remindme,/reminders list|delete(BullMQ)/afk set,/emoji add|remove|steal,/sticker add,/timestamp- Context-Menu Translate,
/snipe,/editsnipe,/embed builder
Fun (apps/bot/src/modules/fun/)
/8ball,/dice,/flip(freier Münzwurf; Economy behält/coinflip)/rps,/choose,/trivia,/tictactoe,/connect4,/hangman/meme,/cat,/dog(abschaltbar via Redisfun:config:{guildId})
Manuelle Discord-Tests (Phase 3 – bestätigt)
- Manuell auf Test-Server bestätigt (User-Freigabe).
Phase 4 – Giveaways … Temp-Voice (Status: abgeschlossen, manuell bestätigt)
- Manuell auf Test-Server bestätigt (User-Freigabe).
Phase 5 – Stats/Invites, Feeds, Scheduler, Guild-Backup (Status: implementiert + deployed, manuelle Discord-Tests ausstehend)
Abgeschlossen
- Prisma-Migration
20260722170000_phase5_modules(deployed) - Shared
packages/shared/src/phase5.ts+ Tests - Module verdrahtet in
commands.ts,index.ts,jobs.ts - Queues/Worker:
stats,feeds,schedules,guild-backups - Optional:
TWITCH_CLIENT_ID/TWITCH_CLIENT_SECRET - E2E:
docker compose up -d --build botOK; Bot ready; 74 Guild-Commands registriert
Module
| Modul | Features |
|---|---|
| Stats/Invites | /stats setup|refresh, /invites view|leaderboard, Invite-Tracking, ActivityStat, 10-Min-Kanal-Update |
| Feeds | /feeds add|remove|list|test (Twitch/YouTube/RSS/Reddit), Poll alle 5 Min |
| Scheduler | /schedule create|list|delete, /announce, BullMQ once/cron |
| Guild-Backup | /backup create|list|info|delete|restore (Owner + Doppelbestätigung) |
Manuelle Discord-Tests (offen)
/stats setup+ Kanal-Update; Invite-Join →/invites view|leaderboard/feeds add(RSS/Reddit) +/feeds test/schedule create(once) +/announce/backup create|list|infound Delete/Restore-Bestätigung (Owner)
Nächster geplanter Schritt
- Manuelle Phase-5-Tests, dann nach Freigabe Phase 6 (WebUI-Fundament: OAuth, Layout, Settings-Framework, API).