mirror of
https://github.com/kaaninchen/Gleiswechsel.git
synced 2026-09-17 16:52:47 +00:00
Announcements
This commit is contained in:
+38
-2
@@ -1,12 +1,34 @@
|
||||
import discord
|
||||
from datetime import datetime, timedelta
|
||||
import asyncio
|
||||
import random
|
||||
from src.config import config
|
||||
from src.utils import random_connection, get_train_info, get_channel_formatting, logger
|
||||
from src.embeds import build_announcement_embed, build_info_embed
|
||||
|
||||
current = None
|
||||
_scheduled_task: asyncio.Task | None = None
|
||||
|
||||
async def announcer(bot, announcement):
|
||||
voice_channel = bot.get_channel(config["vc"])
|
||||
if len(voice_channel.members) > 0:
|
||||
match announcement:
|
||||
case "ende":
|
||||
embed = build_announcement_embed(
|
||||
f'Sehr geehrte Fahrgäste,\nIn wenigen Minuten erreichen wir {current['destination']}. Dieser Zug endet dort.\n\nWir wünschen Ihnen eine angenehme Weiterreise.\n\nVielen Dank für Ihr Vertrauen und auf Wiedersehen.')
|
||||
case "umstieg":
|
||||
embed = build_info_embed()
|
||||
case _:
|
||||
embed = None
|
||||
if embed is None:
|
||||
logger(f"Unbekanntes Announcement: {announcement}")
|
||||
else:
|
||||
await voice_channel.send(embed=embed)
|
||||
else:
|
||||
logger(f"Announcement {announcement} wird geskipped, keiner da")
|
||||
return
|
||||
|
||||
|
||||
async def rename_vc(bot: discord.Bot):
|
||||
global current, train_name, train_info, train_type, _scheduled_task
|
||||
|
||||
@@ -64,13 +86,27 @@ async def rename_vc(bot: discord.Bot):
|
||||
await channel.set_status(f"Ankunft um {arrival.strftime('%H:%M')}")
|
||||
logger(f"Name geändert!")
|
||||
|
||||
if config.get("announcements", True):
|
||||
await announcer(bot, "umstieg")
|
||||
|
||||
return True
|
||||
|
||||
async def _schedule_next_umstieg(bot, arrival):
|
||||
announcement = config.get("announcements", True)
|
||||
announcement_countdown = random.randrange(180, 300) # letzte station announcement ist meistens 3-5min vor ankunft
|
||||
wait_seconds = (arrival - datetime.now()).total_seconds()
|
||||
if wait_seconds > 0:
|
||||
remaining = str(timedelta(seconds=wait_seconds))
|
||||
logger(f"Nächster Umstieg in {remaining.split(".")[0]} ({arrival.strftime('%H:%M:%S')} Uhr)")
|
||||
await asyncio.sleep(wait_seconds)
|
||||
logger(f"Nächster Umstieg in {remaining.split('.')[0]} ({arrival.strftime('%H:%M:%S')} Uhr)")
|
||||
|
||||
if announcement and wait_seconds > announcement_countdown:
|
||||
wait_until_end_announcement = wait_seconds - announcement_countdown
|
||||
await asyncio.sleep(wait_until_end_announcement)
|
||||
await announcer(bot, "ende")
|
||||
await asyncio.sleep(announcement_countdown)
|
||||
|
||||
else:
|
||||
await asyncio.sleep(wait_seconds)
|
||||
|
||||
logger("Zug angekommen, wähle neue Verbindung...")
|
||||
await rename_vc(bot)
|
||||
Reference in New Issue
Block a user