Software & Architektur

Organisch gewachsen seit 2019. Vollständig entkoppelt.
Jede Komponente autark — kein Single Point of Failure.

Kernphilosophie: Vollständige Entkopplung

Die Regeln

  • Jeder Bot ist eigenständig lauffähig
  • Jedes Modul kann einzeln deaktiviert werden
  • Kommunikation nur über Dateien, Datenbanken und Discord-Events
  • Keine direkten Abhängigkeiten zwischen Komponenten
  • Reihenfolge von Start/Stop spielt keine Rolle

Die Konsequenzen

  • System ist extrem resilient — Teilausfälle bleiben lokal
  • Neue Features als isolierte Module hinzufügbar
  • Einzelne Bots können ohne Downtime neugestartet werden
  • Trade-off: Gemeinsame Logik wird teils dupliziert
  • 6 Jahre Wachstum ohne komplette Rewrites

Startkette

Ein einziger Klick auf start.ahk startet das gesamte System. Cleanup, Boot, Log-Parsing, Chat-Injection — alles automatisch.

start.ahk (Einstiegspunkt) | +-- 1. SYSTEM-CLEANUP | Löscht Lock-Files, alte Logs, temporäre Dateien | Perfekter Ausgangszustand hergestellt | +-- 2. [55s] systemstart.py | Startet alle Python-Bots als Subprozesse | +-- bot_infobot.py (Haupt-Bot, lädt 50+ Cogs) | +-- bot_lottery.py | +-- bot_purgecounter.py | +-- bot_squadmanager.py | +-- bot_voicechannel.py | +-- bot_titles.py | +-- bot_mapevent_challenge.py | +-- payment_mail_watcher.py | +-- 3. [15s] log_separator.ahk | serverlogs\download\*.log → 15+ kategorisierte Ordner | +-- 4. [10s] bot_game-manager.py + streamtochat.py | Login-Watch, Daten-Fetch, Chat-Queue | +-- 5. [2.5s] streamtochat.ahk gamechat\*.tochat → SCUM-Fenster (Tastatur-Simulation)

Systemarchitektur

start.ahk | +---------------------+--------------------+ | | | systemstart.py log_separator.ahk streamtochat.ahk (Bot-Watchdog) (Log-Parsing) (Chat-Injection) | | | | serverlogs\download\ gamechat\*.tochat | ↓ 15+ Ordner ↑ | log_bridge.py / streamtochat.py | inselkom.py (Cogs) (*.txt → *.tochat) | ↑ | gamechat\*.txt | ↑ | chat_bridge.py, timer.py, | bank.py, aircraft.py, ... | +---> bot_infobot.py (Haupt-Bot) | ↓ lädt _cogs/ (50+) | +---> bot_game-manager.py +---> bot_lottery.py +---> bot_purgecounter.py +---> bot_squadmanager.py +---> bot_voicechannel.py +---> bot_titles.py +---> bot_mapevent_challenge.py Parallel laufende AHK-Skripte: +-----------------------------------------------+ | onclipactions.ahk Clipboard → ini/*.txt | | remote.ahk remote/*.txt → Aktionen | | eventmanager.ahk Event-Orchestrierung | | purge_checker.ahk Punkte → Purge-Trigger | +-----------------------------------------------+ Externe Toolsuiten: +-----------------------------------------------+ | EconomyBob/ Wirtschafts-Log-Monitoring | | PP-Live-Logcrawler/ Konsolen-Crawler | | monitor/ Web-Dashboard | +-----------------------------------------------+

Datenflüsse

Spielserver (SCUM) | +-- Konsole --> get_flags.ahk --> ini/flags.txt --> trackingstation.py --> flags.db | +-- Logs --> PP-Live-Logcrawler --> serverlogs/ --> log_bridge.py --> Discord | --> trackingstation.py (*.log) | +-- Logs --> EconomyBob --> economy.db | +-- FTP --> ftp_sync.py --> lokale Kopien | +-- act_cars.txt --> carservice.py --> carservice.db | +-- Spielchat <-- streamtochat.py/ahk <-- chat_bridge.py <-- Discord ini/database/*.db (lokal, 20+ Datenbanken) | +-- rsync_push.py (alle 5 Sekunden, SQLite Backup-API) | +-- SSH/rsync --> Webserver (scumsaecke.de/dash/) --> Dashboard (PHP, Read-Only)

20+ Datenbanken

Alle Datenbanken sind SQLite. Jedes Subsystem hat seine eigene DB — kein monolithisches Schema.

Datenbank Hauptnutzer Zweck
userdata.db identity, profile, char Spieler-Stammdaten, Steam-Discord-Link, Counters
bank.db bank, lizenzen, voice_rewards Gold-Kontostände, Transaktionen, Lizenzen
persistent_stats.db char, titles, awards, fishing Überlebensstatistiken, Skills, Fang-Stats
carservice.db carservice, insurance Fahrzeughistorie, Events, Versicherung
lottery.db bot_lottery Tickets, Ziehungen, Spieler-Metadaten
flags.db trackingstation Aktive Flaggen-Positionen, Besitzer
handelshaus.db handelshaus Auktionen, Gebote, Käufe
trades.db trade_stats Handelsstatistiken, Item-Analytics
historical_stats.db handelsbericht Tagesaggregation, Item-Preisverlauf
event_stats.db events_stats Event-Teilnahme, Trophäen
heartbeat.db heartbeat-Modul CPU, RAM, PID — System-Health
+10 weitere diverse Subsysteme statbot, userstats, userhistory, donations, payment, ...

50+ Module (Cogs)

Der Haupt-Bot bot_infobot.py lädt alle Module dynamisch über einen Loader. Jedes Modul kann in der Config einzeln deaktiviert werden.

Spieler & Identität (7)

identity, profile, char, history, link_translator, team_sync

Wirtschaft & Handel (7)

bank, handelshaus, trade_stats, insurance, lizenzen, donations, carservice

Tracking & Monitoring (8)

trackingstation, statbot, kill_feed, server_status, trader_status, steam_watch, voice_rewards, health

Events & Gameplay (11)

game_events, map_event_challenges, purge, bunker, fishing, awards, titles, npczones, aircraft, carservice, cars_uploader

Kommunikation (5)

chat_bridge, log_bridge, inselkom, router, router_v2

Administration (10)

core, bootstrap, audit, maintenance, cleanup_messages, hooks, squad, rules, basic, help


AutoHotkey-Skripte

Hardware-nahe Automatisierung: Diese Skripte interagieren direkt mit dem Spielfenster, parsen Logs, steuern Events und simulieren Tastatureingaben.

Skript Funktion
start.ahk System-Startup-Orchestrator — startet alle Prozesse
log_separator.ahk Parst Server-Logs in 15+ kategorisierte Ordner, ANSI-Farbkodierung, TZ-Korrektur
streamtochat.ahk 650ms-Polling auf .tochat — Tastatur-Simulation ins SCUM-Fenster
onclipactions.ahk Clipboard-Hook → sortiert Daten in ini-Dateien (Autos, Squads, Spieler, Flaggen)
eventmanager.ahk Blackout-Fenster (4x täglich), Zufalls-Event-Scheduler, Speech-Dateien
purge_checker.ahk 6 Punkt-Kategorien, 10.000er-Schwelle, Wahrscheinlichkeit 50–100%
remote.ahk Polling auf remote/ — Codes: 99=Reboot, 9=Event, 10=Cancel, 11-13=Horde

Tech-Stack

Python 3.9+
discord.py 2.3+
SQLite (WAL)
AutoHotkey v1
PHP 7+
Bootstrap 5.3
Selenium Chrome
LM Studio (Qwen 3.5 9B)
OAuth 2.0 PKCE
FTP / SSH / rsync
Flask + CustomTkinter
Steam API + BattleMetrics
IMAP (PayPal-Monitor)
aiosqlite

Open-Source Dokumentation

16 Markdown-Dateien. Jede Komponente, jede Datenbank, jeder Datenfluss — vollständig dokumentiert.
Architekturprinzip, Systemkarte, Wirtschaft, Tracking, Events, AHK, Standalone-Bots, Dashboard, KI-Admin und mehr.

Saecke/systemdoku auf GitHub
zur Discord Community