- Python 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| winkler_bot | ||
| BEFEHLE.md | ||
| INSTALLATION_FUER_ANFAENGER.md | ||
| main.py | ||
| PATCHNOTES_1.0.1.md | ||
| README.md | ||
| START_HIER.md | ||
Winkler Crimelife Bot – einfache Ausgabe
Diese Ausgabe ist fuer einen moeglichst unkomplizierten Betrieb gedacht. Fuer den ersten Start wird nur der Discord-Bot-Token benoetigt. Server-, Kanal- und Rollen-IDs sowie Links sind optional.
Aktuelle Version: 1.0.1. Die Patchnotes stehen in PATCHNOTES_1.0.1.md.
Schnellstart
- Python 3.11 oder neuer installieren.
- Den Discord-Bot erstellen und auf den gewuenschten Server einladen.
- STARTEN.bat doppelt anklicken.
- Beim ersten Start den Discord-Bot-Token einfuegen. Die Eingabe bleibt unsichtbar.
- Warten, bis im Fenster
Angemeldet als ...erscheint. - Auf dem vorgesehenen Winkler-Server als Administrator
/config server-setupausfuehren. - Die Vorschau kontrollieren und Fehlende Werte uebernehmen anklicken.
/config pruefenausfuehren und benoetigte Panels mit den angegebenen Commands veroeffentlichen./config oeffnenbleibt fuer spaetere Aenderungen erhalten.
Das Startskript erstellt selbststaendig eine portable virtuelle Umgebung unter
.venv-einfach, installiert fehlende Pakete und startet danach main.py.
Eine bebilderungsfreie Schritt-fuer-Schritt-Fassung steht in START_HIER.md. Die vollstaendige Bedienung des Discord-Setups erklaert KONFIGURATION_IN_DISCORD.md.
Was nicht mehr eingetragen werden muss
Fuer den normalen Start sind diese Angaben nicht erforderlich:
guild_idbeziehungsweise Server-ID;- Kanal-IDs;
- Rollen-IDs;
- Shop-, Regelwerk-, API- oder andere Links;
- Datenbankpfad;
- Game-API- oder Webhook-Daten.
Ohne Server-ID ordnet der Bot seine Slash-Commands nach dem Login direkt den verbundenen Servern zu. Ein gespeicherter Fingerprint verhindert erneute Discord-Synchronisierungen, solange sich die Command-Struktur nicht geaendert hat. Bei genau einem Server verwendet er diesen automatisch als Hauptserver. Vorhandene Kanaele, Kategorien und Rollen mit gaengigen deutschen oder englischen Namen werden im Arbeitsspeicher erkannt. Explizite Einstellungen aus Discord haben Vorrang vor TOML und der automatischen Erkennung.
Der Bot erstellt ohne ausdruecklichen Befehl keine Kanaele oder Rollen. Nicht erkannte optionale
Ziele werden sauber uebersprungen. Grundfunktionen wie /ping, Reputation, Vouches,
Moderationseintraege und Giveaways im aktuellen Kanal bleiben trotzdem nutzbar.
Token-Speicherung
Beim ersten interaktiven Start speichert der Bot den Token standardmaessig hier:
%LOCALAPPDATA%\WinklerCrimelifeBot\discord_token
Der Token liegt damit nicht in main.py, bot.toml, .env oder der SQLite-Datenbank. Er wird in
Ausgaben und Objekt-Darstellungen maskiert. Ein lokaler Administrator kann Laufzeit-Secrets
grundsaetzlich trotzdem auslesen.
Soll ein eigener Secret-Pfad verwendet werden, kann optional in .env stehen:
DISCORD_TOKEN_FILE=C:\ProgramData\WinklerBot\discord_token
Fuer nicht-interaktive Container oder Dienste wird alternativ DISCORD_TOKEN unterstuetzt.
Empfohlen: direkt in Discord einrichten
Nach dem ersten Start:
/config server-setup
Dieser private Command erkennt ausschließlich Server 1541104006309347451 und Bot
1541240756969414807. Er zeigt zuerst eine Vorschau und uebernimmt nach einem Klick die bereits
festgelegten Kanal-, Kategorie-, Rollen-, Teamrang- und Ticketzuordnungen. Vorhandene individuelle
Werte bleiben mit Fehlende Werte uebernehmen erhalten. Vorhandene ueberschreiben besitzt
eine zusaetzliche Sicherheitsabfrage.
Das Setup erstellt oder loescht keine Discord-Ressourcen und sendet noch keine Panels. Danach
/config pruefen, /ticket panel, /rollenpanel, /infopanels, /vorschlagspanel und /setup
ausfuehren. Links waren nicht Bestandteil des Serverexports und bleiben ueber /config oeffnen
frei anpassbar. Die komplette ID-Liste steht in
SERVERPRESET_WINKLER.md.
Die Einstellungen liegen fuer jeden Discord-Server getrennt in SQLite und bleiben nach einem
Neustart erhalten. Jede Aenderung wird im Konfigurations-Auditlog gespeichert. Nur Nutzer mit der
echten Berechtigung Administrator oder Server verwalten sowie explizite Bot-Owner duerfen
sie aendern. Eine Rolle, die nur Developer oder Admin heisst, reicht nicht.
Optionale Experteneinstellungen
Die kurze Datei config/bot.toml enthaelt nur Branding, Links und sichere Feature-Schalter. Leere Links werden einfach weggelassen oder durch neutralen Text ersetzt.
Die vollstaendige Liste aller moeglichen IDs, Intervalle und Features steht in
config/bot.example.toml. Diese Beispieldatei wird niemals automatisch
geladen. Nur wirklich benoetigte Werte muessen nach config/bot.toml uebernommen werden.
Mitgliederfunktionen aktivieren
Der einfache Modus startet ohne privilegierten Server Members Intent. Dadurch ist kein zusaetzlicher
Portal-Schalter fuer den reinen Start erforderlich. Fuer Welcome-Nachrichten, Booster-Sync,
vollstaendige Teamlisten und /syncroles:
- Im Discord Developer Portal unter Bot → Privileged Gateway Intents den Server Members Intent aktivieren.
- In Discord
/config feature feature:members aktiviert:Jaausfuehren. - Bot neu starten.
Der Presence Intent bleibt separat und ist nur fuer exakte Onlinezahlen erforderlich.
Links eintragen
Empfohlen ist /config oeffnen → Links. Alternativ direkt:
/config link typ:website url:https://example.com
/config link typ:rules url:https://example.com/regeln
Alle Links sind optional. Die TOML-Variante bleibt als Experten-Fallback:
[links]
website = "https://example.com"
rules = "https://example.com/regeln"
fivem = "https://cfx.re/join/abcdef"
shop = "https://shop.example.com"
unban = "https://example.com/entbannung"
api = "https://example.com/api"
fakecrime_preview = "https://example.com/fakecrime"
fakecrime_register = "https://example.com/registrieren"
application = "https://example.com/bewerbung"
Ein Ziel bewusst fest vorgeben
Empfohlen ist /config kanal, /config kategorie oder /config rolle; Discord zeigt dabei echte
Auswahlfelder. Nur als Experten-Fallback kann weiterhin TOML genutzt werden:
[channels]
ticket_panel = 123456789012345678
[roles]
ticket_staff = 234567890123456789
Alle anderen Werte bleiben weiterhin automatisch beziehungsweise nicht konfiguriert.
Manueller Start
Statt STARTEN.bat:
py -3 -m venv .venv-einfach
.\.venv-einfach\Scripts\python.exe -m pip install -r requirements.txt
.\.venv-einfach\Scripts\python.exe main.py
Konfiguration und neue, getrennte Datenbank pruefen:
.\.venv-einfach\Scripts\python.exe main.py --check
Wichtige Dateien
- START_HIER.md: kuerzeste Installationsanleitung;
- KONFIGURATION_IN_DISCORD.md: komplette Einrichtung ohne IDs;
- SERVERPRESET_WINKLER.md: fest eingebaute Zuordnungen aus dem Export;
- BEFEHLE.md: Erklaerung aller Slash-Commands;
- PATCHNOTES_1.0.1.md: Aenderungen des Effizienzpatches;
- INSTALLATION_FUER_ANFAENGER.md: ausfuehrliche optionale Referenz;
- config/bot.toml: kurze optionale Anpassungen;
- config/bot.example.toml: vollstaendige Referenz;
.env: optionale Umgebungswerte, im einfachen Modus leer;runtime/winkler_bot.sqlite3: automatisch erzeugte, neue Datenbank dieser Ausgabe;runtime/backups/: automatische Sicherung vor jeder Datenbankmigration;runtime/logs/winkler_bot.log: Laufzeitprotokoll.
Entwicklung pruefen
.\.venv-einfach\Scripts\python.exe -m pytest -q -p no:cacheprovider
.\.venv-einfach\Scripts\python.exe -m ruff check --no-cache .
Die originale Ausgabe im Nachbarordner bot wird von dieser vereinfachten Ausgabe nicht veraendert.