Kapitän!
Wir sind ein entspannter WoWS-Clan ohne Pflichten. Real-Life schlägt immer Pixel. Täglich findet sich eine Crew für Co-op-Runs oder Unternehmen.
Leitlinien
- Lockeres Miteinander, kein Skill-Stress
- Hilfsbereite Veteranen für Builds & Fragen
- Keine Discord- oder Mikro-Pflicht
- Freude am Experimentieren mit Schiffen
Co-op & Unternehmen
Über 60 % unserer Gefechte laufen im Co-op – perfekt zum entspannten Segel.
Anheuern & Mitfahren
Discord-Ankerplatz

Unser Discord ist das Steuerrad für Absprachen, Screenshots & Patch-Talk. Reinschauen reicht – Mikrofon bleibt freiwillig.
Zum DiscordBot-Labor
Unser Discord-Bot mit WoWS-API & lokal aufbereiteter ships.json
liefert dir umfassende Schiffsdaten direkt im Chat. Er läuft 24/7 stabil durch einen externen Watchdog und wurde um viele Funktionen erweitert – inklusive Slash-Commands, Vergleichsmodul, dynamischen Filtern und automatischer Datenaktualisierung.
Projektziel
- Entwicklung eines Discord-Bots zur Bereitstellung von World of Warships-Infos
- Datenbasis: Wargaming-API + lokal erzeugte
ships.json
undachievements.json
- Optionaler GPT-Fallback (OpenAI) für komplexe Anfragen – derzeit deaktiviert
- Stabiler Dauerbetrieb dank externem
watchdog.exe
Technische Basis
- Python 3.10 mit discord.py, aiohttp, certifi, python-dotenv, openai, psutil
- Start via
starte_bot.bat
- Watchdog-Dauerbetrieb mit
watchdog.exe
- Autoupdate der JSON-Daten bei jeder Änderung durch Watchdog-Reboot
Datenquellen
ships.json
: Artillerie, Panzerung, Sekundärwaffen, Torpedowerte, Mobilität, Sichtbarkeit, Moduleachievements.json
: Dynamisch generierte Liste aller WoWS-Erfolge über Paging + SSLContext
Build-Skripte
build_ships_from_api.py
: Ruft alle Schiffe mit Modulen & Profilen ab, generiertships.json
build_achievements.py
: Holt Errungenschaften seitenweise per API, nutzt SSLContext und Paging
Hauptbefehle
!info <Schiffsname>
: Embed mit Nation, Klasse, Stufe, HP, Bewaffnung, Sicht, Torpedos, Modulen & Wiki-Link!liste [Nation] [Klasse]
: Gefilterte Namenslisten (inkl. Premium- & Spezialschiffe, Seitenaufteilung)!clanmitglieder
: Zeigt Clan-Member (inkl. Rollen, letztes Gefecht)!errungenschaften
: Ausgabe aller Erfolge mit Filter nachtype
&sub_type
!check
: Prüft Aktualität der JSON-Dateien & gibt Status aus!aboutme
: Zeigt Account-ID & Nickname
Slash-Commands (neu)
/info
: Gleiche Ausgabe wie!info
, mit Autocomplete/liste
: Nationen- & Klassenfilter als Dropdowns/errungenschaften
: Filterbar nach Typen & Unterkategorien/zufallsschiff
: Zeigt ein zufälliges Schiff (nach Filter, falls gesetzt)/vergleich <Schiff1> <Schiff2>
: Gegenüberstellung der Schiffswerte (ohne Module)
Clan-Member Daten-Pipeline
clans/info
→ member_idsaccount/info
→ letzter Loginclans/accountinfo
→ Nickname & Rolle
Ausgabe in Embeds: Führungskräfte gold, Mitglieder blau, bei Bedarf seitenweise.
Watchdog (Detail)
- Minütliche Prüfung von: Bot-Prozess, Internet, Datei-Hashes
- Auto-Download & Neustart bei Änderung oder Inaktivität
- Logging im Stil:
[WATCHDOG] ♻️
,[WATCHDOG] 🔁
,[WATCHDOG] ▶️
- Stündliche Statusmeldung +
!check
zur manuellen Abfrage
Mapping & Übersetzungen
CLASS_MAP
, NATION_MAP
und inverse Maps übersetzen interne API-Werte in verständliche deutsche Begriffe.
Changelog
crews.json
wird jetzt auch vom Watchdog überwacht.- Die Datei wird automatisch neu erstellt, wenn sie fehlt oder älter als 7 Tage ist.
- Die Logik und das Verhalten sind identisch zu
ships.json
undachievements.json
. - Änderungen an
crews.json
führen wie bei den anderen Dateien zu einem sauberen Bot-Neustart. - Damit sind alle wichtigen Datenquellen des Bots vollständig automatisiert und immer aktuell.
- 🔧 Neue Slash-Kommandos
/kommandant
und/kommandanten
implementiert:/kommandanten
zeigt alle Kommandanten einer Nation in Form einzelner Embeds./kommandant
zeigt Details zu einem bestimmten Kommandanten, inklusive Autocomplete für den Namen.
- 📜 Log-System überarbeitet:
- Neues universelles Logging für sowohl Prefix- als auch Slash-Kommandos über
log_cmd()
. - Erkennt Kontexttyp automatisch (
ctx
oderinteraction
) und loggt inbot_commands.log
mit User-ID und Befehl. - Auch Subcommands und Eingabewerte werden erfasst (z. B.
/errungenschaften epic
).
- Neues universelles Logging für sowohl Prefix- als auch Slash-Kommandos über
- 🧩 Beginn der Befehls-Auslagerung:
- Befehl
/aboutme
erfolgreich in eigene Dateicommands/aboutme.py
ausgelagert. - Zentrale Initialisierung über
setup_aboutme(bot, log_cmd)
.
- Befehl
- Slash-Command
/vergleich
erweitert – nutzt nun die bestehende Logik aus!info
zur Darstellung von Schiffsdaten. - Alle relevanten Werte werden direkt aus der
ships.json
extrahiert und als strukturierter Vergleich angezeigt. - Verglichene Felder umfassen u. a.:
- HP, Geschwindigkeit, Wendekreis, Ruderstellzeit
- Hauptgeschütze: Name + Türme, Nachladezeit, Reichweite, Feuerrate, Streuung
- Torpedos: Geschwindigkeit und Schaden
- Erkennbarkeit: Schiff / Flugzeug / U-Boot
- Sekundärwaffen: Anzahl, Reichweite, Brandwahrscheinlichkeit
- Premium- und Spezialstatus
- Technisch basiert die Darstellung auf neuen Helper-Funktionen:
_get()
,_main_gun()
,_torp()
- Embed-Farbe:
0x00AA55
- Autovervollständigung für beide Parameter
- Validierung mit Fehlermeldung (ephemeral), wenn eines der Schiffe nicht bekannt ist
- Neues Bot-Kommando
!neustart
implementiert – löst einen kontrollierten Neustart über den Watchdog aus. - Der Watchdog erkennt nun das Vorhandensein der Datei
reboot.flag
und startet den Bot sauber neu (inkl. Prozessbeendigung und Logging). - Sicherheitslogik: Nur der Bot-Owner kann den Neustart-Befehl ausführen.
- Optionaler Infotext im Log:
[WATCHDOG] 🔁 Info: Discord-Auslöser: <Name> (<ID>)
- Neues Kommando
!errungenschaften
im Discord-Bot zur Anzeige aller WoWS-Erfolge. - Datenquelle über
build_achievements.py
– Die JSON-Dateiachievements.json
wird lokal erzeugt (API mit SSL-Bypass, Paging-Unterstützung). - Dynamische Typenerkennung – Neue oder unbekannte
type
-Werte aus der API werden automatisch erkannt und verwendbar. - Anzeige nach Typfilter – Erfolge können gezielt nach
type
(z. B.epic
,festival
,clan
) gefiltert ausgegeben werden. - Subtypen berücksichtigt – Wenn vorhanden, wird auch
sub_type
(z. B.solo
,group
) angezeigt. - Alle Erfolge sichtbar – Unabhängig vom
hidden
-Status werden sämtliche Erfolge pro Typ angezeigt. - Adminschutz für Komplettliste – Nur Administratoren können über
!errungenschaften alle
alle Einträge ungefiltert abrufen. - Einzelausgabe ohne Pagination – Jede Errungenschaft wird als separates Discord-Embed dargestellt.
- Erweiterte Hilfe – Der
!help
-Befehl beschreibt nun auch die Errungenschaftsfunktionen samt Typ-Übersicht.
- Neue Konsolenmeldungen in
watchdog.py
für maximale Transparenz bei jedem Durchlauf. - Statusanzeigen auch bei unveränderten Dateien – zum Beispiel
[CHECK] ships.json ist aktuell – kein Neubau nötig.
- Remote-Abgleich erweitert – Meldung
[REMOTE] bot_simple.py unverändert – keine Änderungen.
erscheint bei Gleichstand. - Internetverbindung wird vor jedem Durchlauf geprüft – mit Meldungen wie
[NET] Internetverbindung steht.
oder[NET] Offline – verschiebe Datei-Checks.
- Beginn jeder Schleife ist deutlich markiert – zum Beispiel
[LOOP] Neue Runde – 2025-06-24 11:30:00
. - JSON-Rebuilds führen nun ebenfalls zu einem Bot-Neustart, auch wenn
bot_simple.py
nicht verändert wurde. - Die Funktion
ensure_json_up_to_date()
liefert jetzt Rückgabewerte und gibt für jede Datei einen Status aus. - Bestehender Bot-Prozess wird bei Änderungen sauber beendet und anschließend neu gestartet (Prozessbaum wird vollständig geschlossen).
- Die bestehende Neustart-Logik wurde nicht verändert, sondern nur erweitert – stabiler Ablauf bleibt erhalten.
- Code wurde umfassend kommentiert und logisch in Abschnitte gegliedert (zum Beispiel
IMPORTS & BASIS-KONSTANTEN
,MAIN LOOP
).
- Logging in
bot_simple.py
– Jede Bot-Aktion schreibt in die Log-Dateibot.log
(Level INFO). - Heartbeat im Watchdog – Jede Minute Konsolenzeile “[WATCHDOG] Statusprüfung: Bot läuft …”.
- Sequenzielle Datei-Prüfung – Reihenfolge
bot_simple.py
→ships.json
mit differenzierten Meldungen. - Sauberer Neustart – Der Bot-Prozess wird terminiert, bevor er neu gestartet wird.
- Erweitertes Konsolen-Logging – Alle Schritte des Watchdogs enthalten aussagekräftige Log-Zeilen.
- Nation-Übersetzung auf Deutsch – Einführung einer NATION_MAP, die alle WoWS-Nationen von Englisch auf Deutsch abbildet (z. B. germany → Deutschland, pan_asia → Pan-Asien).
- Module und Schiffsbilder einbinden – Module und Schiffe ziehen ihre Thumbnail-URLs direkt aus der JSON und zeigen sie per Embed.set_thumbnail. Später ergänzt um die Anzeige des großen Schiffsbildes oben im Embed via Embed.set_image(url=…).
- Sichtweiten korrekt auslesen – Aus default_profile.concealment die Werte für Wasser-, Luft- und U-Boot-Erkennung gezogen und als „m“ ausgegeben.
- Torpedowerte aus Modulen – Anstatt aus dem Ship-Profil werden nun torpedo_speed und max_damage aus dem ersten Modul mit profile.torpedoes gelesen.
- Preise & Flags – Einlesen von is_premium, is_special, price_credit und price_gold aus der API; Ausgabe als „Ja/Nein“ bzw. Beträge.
- Module als eigene Embeds – Jedes Modul bekommt ein eigenes Embed mit Name, Typ, Preis, Profilwerten und Thumbnail.
- Fehler-Fallback („n/a“) und Anzeige-Schema – Wo keine Daten verfügbar sind (None/leeres Dict), wird konsequent „–“ ausgegeben. Alle Felder zeilenweise („Name: Wert“) statt nebeneinander.
- Sekundär-Reichweite aus default_profile.atbas.distance – Hinzufügen des Felds secondary_range im JSON und Ausgabe im Bot.
- Anzahl der Hauptgeschütztürme – Aus default_profile.hull.artillery_barrels übernommen und im Feld „Hauptgeschütze (… (X Türme))“ angezeigt.
- Feuerrate & Streuung – Neuerstellung der Felder gun_rate und max_dispersion aus default_profile.artillery im JSON und Bot.
- Römische Tier-Anzeige – Konvertierung der arabischen Tierzahl 1–10 in römische Ziffern („I“ bis „X“) im Embed-Titel.
- !liste-Command erweitert – Unterstützung von !liste allein, !liste <Nation>, !liste <Nation> <Klasse> mit Paginierung bei langen Listen.
- !help komplettiert – Dokumentation aller Befehle inklusive Nationen- und Klassenliste direkt im Chat.
- Button-Link zur Wargaming-Wiki – Hinzufügen eines Buttons „Mehr zur <Schiffsname> auf der Wiki ansehen“ unter dem Embed.
- Pagination-Buttons für Module – Einbau von „⬅️“/„➡️“-Buttons, um durch die Modul-Embeds zu blättern.
- Brandwahrscheinlichkeit (Sekundär-HE) – Auslesen von default_profile.atbas.slots.burn_probability, Speichern im JSON und Ausgabe als Prozentwert.
- secondary_data-Array – Im Build-Script Zusammenstellung aller Sekundär-Module mit Name, Anzahl, Reichweite und Burn-Probability.
- Mobility-Daten – Einlesen von default_profile.mobility.max_speed, .rudder_time, .turning_radius und Ausgabe als „Höchstgeschwindigkeit“, „Ruderstellzeit“ und „Wendekreis“.
- Embed-Farben für Premium/Spezial – Spezialschiffe: Silber (0xC0C0C0), Premiumschiffe: Gold (0xFFD700), Standard-Schiffe: Blau (0x0077CC).
- !liste Premiumschiffe – Neuer Sub-Command, der mit !liste Premiumschiffe alle Schiffe mit is_premium == True listet; in !help ergänzt.
- Premium- & Spezial-Status im Embed – Zusätzliche Felder „Premiumschiff: Ja/Nein“ und „Spezialschiff: Ja/Nein“ nach Brandwahrscheinlichkeit ausgegeben.
Impressum
Friendly-Helpers Clan • Lars Heuschkel • Merschweg 6a • 33449 Langenberg
E-Mail: immerda [at] friendly-helpers.de
Wir haben keinerlei Verbindung zu Wargaming oder Wargaming.net.
Alle im Bot und auf dieser Website verwendeten Bilder, Logos und Markenzeichen stammen aus der Wargaming API und unterliegen den Urheberrechten von Wargaming.net. Jegliche Nutzung erfolgt ohne ausdrückliche Genehmigung von Wargaming.net in dessen rechtlicher Verantwortung.