Ein moderner, TypeScript-basierter Discord-Bot für die Verwaltung von polizeilichen Akten mit hübsch gestalteten Embeds, reaktiven Panels und mehrstufigen Formularen.
| Feature | Beschreibung |
|---|---|
| 🎨 Schöne Embeds | Farbig gestaltete Embeds für Panels, Akten, Logs und Systemstatus |
| ⚡ Reaktive UI | Buttons, Dropdowns und Modals für intuitive Bedienung |
| 📋 Mehrstufige Formulare | Strukturierte Erfassungsprozesse mit Validierung |
| 💾 Flexible Speicherung | JSON oder MySQL-Backend, einfach konfigurierbar |
| 🔐 Rollenbasiert | Granulare Berechtigungen und Rollenverwaltung |
| 📊 Umfassende Logs | Separate Log-Kanäle für Akten, Audit, Sicherheit und System |
| 🎯 Typsicher | Vollständig in TypeScript geschrieben |
npm installKopiere die Beispieldatei und füge deine Discord-Werte ein:
cp .env.example .env
# Bearbeite .env und trage DISCORD_TOKEN, GUILD_ID, etc. einBearbeite config/config.yml nach deinen Anforderungen:
- 🏷️ Bot-Name und Farben
- 🎨 Panel-Definitionen
- 📁 Aktenarten und Felder
- 🔐 Rollen und Berechtigungen
- 💾 Speicher-Backend
Entwicklung (mit TypeScript-Watch):
npm run devProduktion (kompiliert zu JavaScript):
npm run build
npm startDie gesamte Konfiguration läuft über config/config.yml. Hier ist eine Übersicht der wichtigsten Bereiche:
Steuert das visuelle Erscheinungsbild des Bots:
branding:
name: "LSPD-Aktenmanager"
footerText: "LSPD Verwaltung"
successColor: 0x2ECC71 # Grün für erfolgreiche Aktionen
warningColor: 0xE74C3C # Rot für Fehler
accentColor: 0x3498DB # Blau für Informationenbot:
status: "online"
activityType: "watching"
activityText: "LSPD Aktenverwalter"Wechsel zwischen JSON (Entwicklung) und MySQL (Produktion):
storage:
driver: "json" # oder "mysql"Definiere Log-Kanäle für verschiedene Events:
logging:
caseLogChannelId: "1234567890" # Neue Akten ✅
auditLogChannelId: "1234567890" # Rollenänderungen 🛡️
permissionLogChannelId: "1234567890" # Berechtigungsfehler 🚫
systemLogChannelId: "1234567890" # System-Events ℹ️permissions:
panelViewRoles: ["@role1", "@role2"]
caseHistoryRoles: ["@role1"]
roleManagementRoles: ["@admin"]
systemInfoRoles: ["@admin"]Definiere deine Aktentypen mit Feldern und Designs:
caseTypes:
- label: "Verkehrsverstöße"
emoji: "🚗"
color: 0xE67E22
fields:
- name: "Fahrzeughalter"
required: true
summary: true
- name: "Verstoß"
required: trueErstelle sichtbare Aktenboards:
panels:
- name: "Standardfälle"
emoji: "📋"
embedTitle: "Neue Akte erstellen"
embedDescription: "Wähle eine Aktenart aus..."
caseTypeLabels: ["Verkehrsverstöße", "Diebstahl"]| Befehl | Beschreibung |
|---|---|
/akten panel |
Zeigt alle verfügbaren Panel-Kategorien |
/akten erstellen |
Öffnet das Formular für eine neue Akte |
/akten suche |
Sucht nach bestehenden Akten |
/akten liste |
Zeigt die neuesten Akten |
/akten details |
Zeigt Details einer spezifischen Akte |
| Befehl | Beschreibung |
|---|---|
/system info |
Zeigt Bot- und Systemstatistiken |
/system rolle-vergeben |
Vergebe Rollenpakete an Nutzer |
/system rolle-entfernen |
Entferne Rollenpakete von Nutzern |
src/
├── main.ts # Einstiegspunkt
├── boot-screen.ts # Startup-Anzeige ✨ Neu gestaltet
├── start-application.ts # Bot-Initialisierung
├── create-application-context.ts # Kontext-Setup
├── types.ts # Zentrale Typen
├── embed-style.ts # Embed-Hilfsfunktionen
│
├── akten/ # 📁 Akten-Verwaltung
│ ├── akten-command.ts # Slash-Befehle
│ ├── akten-handler.ts # Event-Handler
│ ├── akten-service.ts # Geschäftslogik
│ ├── akten-ui.ts # UI-Rendering
│ └── session-store.ts # Session-Management
│
├── system/ # ⚙️ System-Verwaltung
│ ├── system-command.ts # System-Befehle
│ ├── system-handler.ts # System-Handler
│ ├── system-ui.ts # System-UI
│ └── permission-service.ts # Berechtigungsprüfung
│
├── discord/ # 🤖 Discord-Integration
│ ├── command-registry.ts # Befehl-Registry
│ ├── interaction-router.ts # Event-Router
│ ├── discord-log-service.ts # Log-Verwaltung ✨ Verbessert
│ ├── permission-guard.ts # Sicherheitsprüfungen
│ └── presence.ts # Bot-Status
│
└── storage/ # 💾 Datenpersistierung
├── store.ts # Interface
├── json-store.ts # JSON-Backend
└── mysql-store.ts # MySQL-Backend
npm run buildnpm run devnpm run build
npm startinterface CaseRecord {
id: string; // Eindeutige ID
subject: string; // Betroffene Person
caseTypeLabel: string; // Aktenart
fields: Record<string, string>; // Dynamische Felder
createdAt: Date; // Erstellungsdatum
createdBy: string; // Nutzer-ID
publishedIn?: string; // Kanal-ID (optional)
}- ✅ Rollenbasierte Zugriffskontrolle (RBAC)
- ✅ Berechtigungsprüfungen vor jeder Aktion
- ✅ Detaillierte Audit-Logs für alle Änderungen
- ✅ Sichere Umgebungsvariablen (.env)
- ✅ TypeScript für maximale Typsicherheit
Einfach, dateibasiert, ideal für Tests:
storage:
driver: "json"
dataPath: "./data"Robust und skalierbar:
storage:
driver: "mysql"
host: "localhost"
user: "root"
password: "secret"
database: "aktenhelper"Bitte überprüfe die Lizenzinformationen des Projekts.
Für Fragen, Bugs oder Verbesserungsvorschläge bitte in den Issues schauen oder einen Pull Request erstellen.