diff --git a/.github/info_fehlende_daten.png b/.github/info_fehlende_daten.png new file mode 100644 index 0000000..e85f96d Binary files /dev/null and b/.github/info_fehlende_daten.png differ diff --git a/.github/preview_info.png b/.github/preview_info.png new file mode 100644 index 0000000..78dfaf9 Binary files /dev/null and b/.github/preview_info.png differ diff --git a/.github/preview_kanal.png b/.github/preview_kanal.png new file mode 100644 index 0000000..8066874 Binary files /dev/null and b/.github/preview_kanal.png differ diff --git a/README.md b/README.md index 692d601..ac25950 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,39 @@ -# Trainstalk +# Gleiswechsel +Gleiswechel ist ein Discord Bot, welcher einen Sprachkanal zu einer real-existierenden, aktuell befahrenden Zugverbindung umbenennt. Diesen Namen behält der Kanal so lange, wie die Verbindung in echt dauert. +![Beispiel Kanal](.github/preview_kanal.png) +![Beispiel info](.github/preview_info.png) +## Setup +```sh +git clone https://github.com/kaaninchen/Gleiswechsel.git +python -m venv venv +source venv/bin/activate +pip install -r requirements.txt +``` +### Config + +`$ mv config.json.example` + +Aktuell gibt es kein error handling für die config (kommt bald!!), also BITTE stell sicher dass du keine unerwarteten Daten eingegeben hast +``` +{ + "token": "", // Discord Token + "stations": [ "Berlin Hbf", "Hamburg Hbf", "München Hbf", "Amsterdam Centraal"], // Stationen deiner Wahl. Im Zweifel auf https://dbf.finalrewind.org/ Namen raussuchen + "server": , // Discord Server ID + "vc": , // Discord VC ID + "formatting": "🚅┇", // Name des Kanals + "random": false // Random Züge aussuchen (true) oder immer die erste Station der Anzeigetafel (false) +} + +``` + +#### Erklärung bezüglich random: +Bei kleineren Bahnhöfen stehen an den Anzeigetafeln die Namen Züge öfters Stunden vor Abfahrt, da das Gleis sonst frei ist. Dadurch wird auch der Name des VC sehr lange gleich bleiben. Sollte man random ausmachen, würde immer der erste Zug an der Anzeigetafel genommen werden, welcher auch der erst der am frühesten losfährt. Wenn man aber wenige Bahnhöfen zur Auswahl hat könnte es repetitiv werden, da die Züge ja oft hin und her fahren. + +## Metadaten +Es kann vorkommen, dass während dem `/info` Befehl das Logo und die Farbe des Bahnuntermehns fehlt. +![Beispiel für fehlende Daten](.github/info_fehlende_daten.png) +Die zugehörigen Daten lassen sich innerhalb [operators.py](src/data/operators.py) ergänzen. Der Aufbau dabei sollte selbsterklärend sein, dennoch habe ich eine kleine Beschreibung in die Datei hinzugefügt. Bei Änderungen sind PR's willkommen, ebenso wie Issues falls man das nicht selber ändern will da das ja eigentlich mein Job sein sollte. + +Die Statuseinträge, von welchen der Bot alle 5 Minuten einen aussucht, kann mn in [status.py](src/data/operators.py) anpassen \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..7110ac1 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,19 @@ +aiohappyeyeballs==2.7.1 +aiohttp==3.14.1 +aiosignal==1.4.0 +attrs==26.1.0 +certifi==2026.6.17 +charset-normalizer==3.4.9 +frozenlist==1.8.0 +idna==3.18 +multidict==6.7.1 +numpy==2.5.1 +pandas==3.0.3 +propcache==0.5.2 +py-cord==2.8.0 +python-dateutil==2.9.0.post0 +requests==2.34.2 +six==1.17.0 +typing-extensions==4.16.0 +urllib3==2.7.0 +yarl==1.24.2 diff --git a/src/data/operators.py b/src/data/operators.py index 9036324..9d0d55b 100644 --- a/src/data/operators.py +++ b/src/data/operators.py @@ -1,3 +1,19 @@ +'''' +Die Datei gibt dem Embed zugehörige Metadaten der Zugbetreiber. Identifiziert wird dabei durch die genauen Namen der Unternehmen. +Diese werden sowohl im /info Embed als auch in der Konsole angezeigt. Dabei beinhaltet jeder folgende Felder: +und beinhaltet 2-3 Felder: +| Feld | Optional | Wert | Beschreibung | +|---------|----------|-------|-----------------------------------------------------------------------| +| Unknown | Ja | Bool | Eigentlich nur für fallback relevant, sollte man weglassen | +| Logo | Nein | URL | Das Logo in der Ecke des Embeds. Am besten PNG, SVG geht leider nicht | +| Color | Nein | HEX | HEX Color Code des Streifen vom Embed, muss mit 0x anfangen | +| Slogan | Ja | Liste | Zufälliger Text aus der Liste im Footer | + +Sollte es dazu kommen, dass mehrere Anbieter die selben Metadaten nutzen sollen, kann man einen Eintrag für alle in OPERATORS setzen und +die zugehörigen Anbieternamen in OPERATOR_ALIASES auf den Eintrag lenken lassen. db_bawü ist dafür ein gutes Beispiel. + +Nachdem diese Datei editiert wurde muss der Bot nicht neugestartet werden. +''' OPERATORS = { "fallback": { "unknown": True, @@ -15,7 +31,7 @@ OPERATORS = { "slogan": ["Nett hier", "Aber waren Sie schon mal in Baden-Württemberg?", "Bwegt euch!"] }, "Ostdeutsche Eisenbahn GmbH": { - "logo": "https://www.odeg.de/fileadmin/user_upload/Unternehmensseite/presse/pressebilder/ODEG_Pressebilder_Logo-CMYK-JPG.jpg", + "logo": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f3/ODEG-Logo_Neu.svg/960px-ODEG-Logo_Neu.svg.png", "color": 0x00745C }, "Nederlandse Spoorwegen": {