Skip to content

Releases: hackletloose/hall-mic-master

1.1.0

21 Feb 22:42

Choose a tag to compare

Changelog

  1. Einführung einer Config-Klasse

    • Anstelle der vielen globalen Variablen (API_TOKEN, API_BASE_URL, MESSAGE_CONTENT, etc.) gibt es jetzt eine zentrale Klasse, die die Werte lädt.
    • Das vereinfacht Wartung und Konfiguration, weil Konfigurationslogik (z. B. Laden von .env, Fallback-Werte) gekapselt ist.
  2. Sprachdateien hinzugefügt

    • Unterstützung für Englisch und Deutsch hinzugefügt.
  3. Sprach-Strings aus language.json ausgelagert

    • Alle Texte (Logmeldungen, Fehlernachrichten, Hinweistexte an die Spieler) werden nun aus einer externen JSON-Datei gelesen.
    • Dies erlaubt ein einfaches Umschalten zwischen Deutsch und Englisch (oder weiteren Sprachen), ohne den Code anpassen zu müssen.
  4. Kein Gebrauch globaler Variablen mehr

    • Die Funktionen, die vorher globale Variablen nutzten (hours, minutes, seconds oder messages_sent), wurden umstrukturiert.
    • Stattdessen wird der Rückgabewert direkt verwendet oder über Objektattribute (bzw. lokale Variablen) gesteuert.
  5. Einheitliche Nutzung einer asynchronen ClientSession

    • Im neuen Code wird konsequent im Konstruktor von APIClient eine einzelne aiohttp-Session genutzt, die nur einmal erstellt und am Ende geschlossen wird (statt wiederholt neue Sessions pro Request zu eröffnen).
  6. Struktur für bessere Wartung und Testbarkeit

    • Durch die Auftrennung in Hauptskript (z. B. mic-master.py oder bot.py), api_client.py und language.json sind die Verantwortlichkeiten klar getrennt.
    • Die Hauptlogik (z. B. Schleife zum Prüfen der Spielzeit, Versenden von Nachrichten) ist stärker modularisiert und damit auch leichter testbar.
  7. Verbessertes Exception-Handling und Logging

    • Statt einfachen print()-Ausgaben wird nun logging verwendet (bzw. umfassender genutzt), inkl. Warn- oder Error-Meldungen.
    • KeyboardInterrupt (Ctrl + C) wird durch einen try/except abgefangen, um das Skript sauber zu schließen, die Session aufzuräumen und über das Ereignis zu informieren.
  8. Internationalisierung (i18n)

    • Neben der ausgelagerten Sprachdatei wird nun über eine Umgebungsvariable gesteuert, ob Deutsch oder Englisch verwendet wird.
    • Die Log- und Konsolenmeldungen werden in der jeweils gewählten Sprache ausgegeben, ebenso wie der Nachrichtentext an die Spieler.

Insgesamt ergeben sich dadurch:

  • bessere Wartbarkeit (durch eine klarere Struktur und Kapselung),
  • leichteres Hinzufügen weiterer Sprachen (via language.json),
  • robusteres Fehlerhandling (kein globaler Zustand, ordentliche Exception-Behandlung),
  • stärkere Konfigurierbarkeit (alles an zentralen Stellen statt global verteilt).