Compare commits

..
3 Commits
4 changed files with 23 additions and 6 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

+9 -2
View File
@@ -100,7 +100,7 @@ uv run main.py
## Bekannte Bugs
#### Stuttgart in Berlin
Ich weiß nicht ganz wieso, aber die API vertauscht manchmal die S-Bahn von Berlin mit der S-Bahn von Stuttgart. Es scheint eher ein Upstream-Issue zu sein, weswegen ich da leider mit dem Bot nicht viel ändern kann.
Ich weiß nicht ganz wieso, aber die API vertauscht manchmal die S-Bahn von Berlin mit der S-Bahn von Stuttgart. Es scheint eher ein API-Issue zu sein, weswegen ich da leider mit dem Bot nicht viel ändern kann.
Der Bug führt dazu, dass bei manchen S-Bahn Verbindungen `DB Regio AG S-Bahn Stuttgart` als Betreiber der Berlin S-Bahn angezeigt wird. Außerdem gibt die API dem Bot die Ankunftszeiten einer S-Bahn Verbindung von Stuttgart wieder, während die Route von der aus Berlin stammt (Die Route und die Ankunftszeiten werden von zwei verschiedenen Endpoints gepulled: Route: `{dbf}/Berlin%20Hbf.json`, Ankunftszeit: `{dbf}/z/S%20{ID}/Berlin Hbf.json`).
Falls das einem zu sehr stört kann man S-Bahns auf die Blacklist packen.
@@ -113,4 +113,11 @@ Falls das einem zu sehr stört kann man S-Bahns auf die Blacklist packen.
```
Allgemein scheint der Berlin HBF eine sehr komische Station zu sein. Die meisten Bugs beim Testing kommt von dieser. Falls jemand mehr weiß sind PR's wie immer willkommen
#### Nahreisezug
Der Bot empfängt durch die dbf API ein Operator Field, wo der Betreiber des Züges angezeigt wird. Dadurch kann im `/info` Embed das Logo durch [src/data/operators.py](src/data/operators.py) zugewiesen werden. Manchmal schmeißt die API aber als Operator "Nahreisezug" aus.
![Beispiel für Nahreisezug](.github/info_nahreisezug.png)
Wenn mehrere Betreiber angezeigt werden (bspw `["SBB", "Nahreisezug"]`) versucht der Bot immer, den Embed den bekannten Betreiber (in dem Fall SBB) zuzuweisen. Sollte allerdings nur Nahreisezug angezeigt werden, kann damit nicht gearbeitet werden, wodurch die Fallback Metadaten genutzt werden.
Die Fallback Metadaten kann man in [src/data/operators.py](src/data/operators.py) angepasst werden.
+7 -1
View File
@@ -16,12 +16,18 @@ async def change_status():
status = random.choice(discord_status)
await bot.change_presence(activity=discord.Game(name=f"{status} • /info"))
_bot_initialized = False
@bot.event
async def on_ready():
global _bot_initialized
print(f"{bot.user} ist online")
if not change_status.is_running():
change_status.start()
await rename_vc(bot)
if not _bot_initialized:
_bot_initialized = True
await rename_vc(bot)
else:
logger("Discord Reconnect, laufende Fahrt bleibt unangetastet")
@bot.event
async def on_application_command_error(ctx, error):
+7 -3
View File
@@ -29,7 +29,7 @@ async def announcer(bot, announcement):
return
async def rename_vc(bot: discord.Bot):
async def rename_vc(bot: discord.Bot, from_scheduler: bool = False):
global current, train_name, train_info, train_type, _scheduled_task
guild = bot.get_guild(int(config["server"]))
@@ -42,6 +42,9 @@ async def rename_vc(bot: discord.Bot):
logger(f"Es konnte kein VC mit der ID {config['vc']} auf dem Server gefunden werden", "fatal")
return False
if not from_scheduler and _scheduled_task and not _scheduled_task.done():
_scheduled_task.cancel()
attempt = 0
while True:
if attempt == 20:
@@ -75,7 +78,6 @@ async def rename_vc(bot: discord.Bot):
arrival = datetime.fromisoformat((train_info["arrival"]))
formatting = get_channel_formatting(train_type)
_scheduled_task = asyncio.create_task(_schedule_next_umstieg(bot, arrival))
print("-----------------------------------------")
logger(f"Umstieg: {train_name}")
@@ -89,6 +91,8 @@ async def rename_vc(bot: discord.Bot):
if config.get("announcements", True):
await announcer(bot, "umstieg")
_scheduled_task = asyncio.create_task(_schedule_next_umstieg(bot, arrival))
return True
async def _schedule_next_umstieg(bot, arrival):
@@ -109,4 +113,4 @@ async def _schedule_next_umstieg(bot, arrival):
await asyncio.sleep(wait_seconds)
logger("Zug angekommen, wähle neue Verbindung...")
await rename_vc(bot)
await rename_vc(bot, from_scheduler=True)