From 82864167bc63e89b3585277325d69deed25fb0a2 Mon Sep 17 00:00:00 2001 From: Kaaninchen <124433727+kaaninchen@users.noreply.github.com> Date: Sun, 9 Aug 2026 12:23:37 +0200 Subject: [PATCH] fix: asyncio aufrufe abbrechen, damit nicht mehrere tasks gleichzeitig laufen --- src/handlers.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/handlers.py b/src/handlers.py index 31c800d..72e8ca3 100644 --- a/src/handlers.py +++ b/src/handlers.py @@ -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) \ No newline at end of file + await rename_vc(bot, from_scheduler=True) \ No newline at end of file