Files
Nexumi/docs/PHASE-TRACKING.md
smueller fa5910ec43 Implement leveling and economy features with associated models and commands
- Added new models for leveling and economy functionalities in the Prisma schema, including LevelingConfig, MemberLevel, LevelReward, EconomyConfig, MemberEconomy, ShopItem, and InventoryItem.
- Introduced commands for managing XP, economy transactions, and shop interactions, enhancing user engagement.
- Updated job handling to include reminders and poll closing functionalities.
- Enhanced localization support for new commands and features in both German and English.
- Improved the bot's job processing capabilities with a dedicated reminder worker for scheduled tasks.
2026-07-22 12:49:17 +02:00

7.8 KiB
Raw Blame History

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/bot
    • packages/shared
  • Basis-Tooling:
    • TypeScript strict
    • ESLint
    • Prettier
    • Vitest
    • Turbo
  • Docker-Compose-Grundstack:
    • postgres mit Healthcheck
    • redis mit Healthcheck
    • bot
    • webui-Scaffold-Service (temporär)
    • backups Volume angebunden
  • Prisma-Grundmodell inkl. Moderationsdaten:
    • Guild
    • GuildSettings
    • User
    • Case
    • Warning
    • ModNote
    • EscalationRule
  • 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-US via 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:
    • .dockerignore ergänzt
    • Prisma-Migration beim Bot-Start (prisma migrate deploy)
    • Bot-Healthcheck auf /health
  • E2E-Verifikation (automatisiert, lokal):
    • docker compose up -d --build erfolgreich
    • Postgres/Redis healthy
    • Migration 20260722123000_init angewendet
    • Bot online (Nexumi#9122), 13 Slash-Commands registriert
    • Bot-Container healthy
  • Tests (aktuell vorhanden):
    • packages/shared/src/i18n.test.ts
    • packages/shared/src/audit.test.ts
    • apps/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 /ban und /purge prüfen

Phase 2 AutoMod, Logging, Welcome, Verifizierung (Status: implementiert, manuelle Tests ausstehend)

Abgeschlossen

  • Prisma-Erweiterung + Migration 20260722140000_phase2_modules:
    • AutoModConfig, AutoModRule
    • LoggingConfig, LogChannel
    • WelcomeConfig
    • VerificationConfig
  • 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 (logModAction in createCase)
    • 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
  • Verifizierung (apps/bot/src/modules/verification/):
    • /verify setup, /verify panel
    • Button-Verify und Captcha-Verify (Captcha-Seite unter /verify/captcha am 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 INTENT
    • MESSAGE CONTENT INTENT
  • AutoMod: Spam-/Invite-Testnachrichten senden
  • /automod status prüfen
  • Logging: Log-Kanäle per DB/ später WebUI setzen, Events auslösen
  • /welcome preview und /welcome test (Konfiguration zunächst per DB oder später WebUI)
  • /verify setup + /verify panel, Button- und Captcha-Flow testen
  • PUBLIC_BASE_URL auf 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 muss PUBLIC_BASE_URL darauf zeigen oder über Reverse-Proxy geroutet werden.

Phase 3 Leveling, Economy, Utility, Fun (Status: in Arbeit)

Utility (apps/bot/src/modules/utility/) implementiert

  • Info-Commands: /userinfo, /serverinfo, /roleinfo, /channelinfo, /avatar, /banner
  • /poll create mit Buttons, DB (Poll/PollVote), optionaler Ablauf via BullMQ (pollClose)
  • /remindme, /reminders list|delete mit BullMQ (reminderSend)
  • /afk set mit Auto-Clear und Mention-Antwort
  • /emoji add|remove|steal, /sticker add
  • /timestamp, Context-Menu Translate (MyMemory API)
  • /snipe, /editsnipe (Redis, TTL 1 h, Datenschutz-Hinweis)
  • /embed builder (Modal)
  • Queue: reminderQueue in queues.ts, Worker in jobs.ts
  • i18n-Keys in @nexumi/shared (de/en) + command-locales.ts
  • Manuelles Wiring durch Parent noch nötig (siehe Modul-README / Agent-Anweisung): Commands, Context-Menüs, Events, Interaction-Handler in index.ts/commands.ts

Fun & Games (apps/bot/src/modules/fun/) implementiert

  • Einfache Commands: /8ball, /dice, /flip (nicht /coinflip Economy), /rps, /choose
  • Button-Spiele: /trivia, /tictactoe, /connect4, /hangman (Redis-Spielzustand, TTL)
  • Medien: /meme, /cat, /dog (API-Fetch; abschaltbar via Redis fun:config:{guildId}{mediaEnabled})
  • Exports für Wiring: funCommands, isFunButton, handleFunButton aus index.ts
  • i18n-Keys + Command-Locales in @nexumi/shared (de/en)
  • Manuelles Wiring durch Parent noch nötig: funCommands in commands.ts, isFunButton/handleFunButton in index.ts

Manuelle Discord-Tests Fun (offen)

  • /flip vs. Economy /coinflip (kein Namenskonflikt)
  • Trivia: nur Initiator kann antworten, Ablauf nach 2 min
  • Tic-Tac-Toe / Connect 4: Züge nur für Teilnehmer, ephemerale Fehler
  • Hangman: Buchstaben-Buttons, Gewinn/Verlust
  • /meme, /cat, /dog; Medien deaktivieren via Redis-Config testen

Manuelle Discord-Tests Utility (offen)

  • Poll mit/ohne Dauer, Mehrfachauswahl, anonym
  • Reminder einmalig und mit Cron
  • AFK setzen, erwähnen, zurückschreiben
  • Snipe nach Löschen/Bearbeiten
  • Embed-Builder-Modal
  • Translate Context-Menu auf Nachricht

Nächster geplanter Schritt

  • Utility- und Fun-Wiring abschließen, dann Leveling/Economy/Fun manuell testen; Phase-3-Freigabe nach grünem Build/Lint/Tests.