Skip to content

Eministar/GTARP-LSPD-Bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚓 AktenHelper — Discord-Bot für LSPD-Akten

Ein moderner, TypeScript-basierter Discord-Bot für die Verwaltung von polizeilichen Akten mit hübsch gestalteten Embeds, reaktiven Panels und mehrstufigen Formularen.


✨ Kernfeatures

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

🚀 Schnellstart

Schritt 1: Installation

npm install

Schritt 2: Umgebungsvariablen

Kopiere die Beispieldatei und füge deine Discord-Werte ein:

cp .env.example .env
# Bearbeite .env und trage DISCORD_TOKEN, GUILD_ID, etc. ein

Schritt 3: Konfiguration

Bearbeite config/config.yml nach deinen Anforderungen:

  • 🏷️ Bot-Name und Farben
  • 🎨 Panel-Definitionen
  • 📁 Aktenarten und Felder
  • 🔐 Rollen und Berechtigungen
  • 💾 Speicher-Backend

Schritt 4: Starten

Entwicklung (mit TypeScript-Watch):

npm run dev

Produktion (kompiliert zu JavaScript):

npm run build
npm start

⚙️ Konfigurationsguide

Die gesamte Konfiguration läuft über config/config.yml. Hier ist eine Übersicht der wichtigsten Bereiche:

🏷️ Branding

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 Informationen

🎨 Bot-Präsenz

bot:
  status: "online"
  activityType: "watching"
  activityText: "LSPD Aktenverwalter"

💾 Speicherverwaltung

Wechsel zwischen JSON (Entwicklung) und MySQL (Produktion):

storage:
  driver: "json"  # oder "mysql"

📊 Logging

Definiere Log-Kanäle für verschiedene Events:

logging:
  caseLogChannelId: "1234567890"        # Neue Akten ✅
  auditLogChannelId: "1234567890"       # Rollenänderungen 🛡️
  permissionLogChannelId: "1234567890"  # Berechtigungsfehler 🚫
  systemLogChannelId: "1234567890"      # System-Events ℹ️

🔐 Berechtigungen & Rollen

permissions:
  panelViewRoles: ["@role1", "@role2"]
  caseHistoryRoles: ["@role1"]
  roleManagementRoles: ["@admin"]
  systemInfoRoles: ["@admin"]

📁 Aktenarten

Definiere deine Aktentypen mit Feldern und Designs:

caseTypes:
  - label: "Verkehrsverstöße"
    emoji: "🚗"
    color: 0xE67E22
    fields:
      - name: "Fahrzeughalter"
        required: true
        summary: true
      - name: "Verstoß"
        required: true

🎯 Panels

Erstelle sichtbare Aktenboards:

panels:
  - name: "Standardfälle"
    emoji: "📋"
    embedTitle: "Neue Akte erstellen"
    embedDescription: "Wähle eine Aktenart aus..."
    caseTypeLabels: ["Verkehrsverstöße", "Diebstahl"]

📌 Verfügbare Befehle

📁 Akten-Verwaltung

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

🛡️ System & Verwaltung

Befehl Beschreibung
/system info Zeigt Bot- und Systemstatistiken
/system rolle-vergeben Vergebe Rollenpakete an Nutzer
/system rolle-entfernen Entferne Rollenpakete von Nutzern

🗂️ Projektstruktur

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

🔧 Entwicklung

TypeScript Type-Checking

npm run build

Dev-Mode mit Watch

npm run dev

Produktions-Build

npm run build
npm start

📊 Datenstruktur

Akte (Case Record)

interface 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)
}

🔐 Sicherheit

  • ✅ Rollenbasierte Zugriffskontrolle (RBAC)
  • ✅ Berechtigungsprüfungen vor jeder Aktion
  • ✅ Detaillierte Audit-Logs für alle Änderungen
  • ✅ Sichere Umgebungsvariablen (.env)
  • ✅ TypeScript für maximale Typsicherheit

💾 Speicher-Backends

JSON (für Entwicklung)

Einfach, dateibasiert, ideal für Tests:

storage:
  driver: "json"
  dataPath: "./data"

MySQL (für Produktion)

Robust und skalierbar:

storage:
  driver: "mysql"
  host: "localhost"
  user: "root"
  password: "secret"
  database: "aktenhelper"

📝 Lizenz

Bitte überprüfe die Lizenzinformationen des Projekts.


🤝 Support & Kontakt

Für Fragen, Bugs oder Verbesserungsvorschläge bitte in den Issues schauen oder einen Pull Request erstellen.

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Contributors