mirror of
https://github.com/kaaninchen/Gleiswechsel.git
synced 2026-09-17 16:52:47 +00:00
transitous rewrite: some minor info embed improvements
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
import discord
|
||||
from src.dc.embeds import build_info_embed
|
||||
|
||||
def setup_commands(bot: discord.Bot):
|
||||
@bot.slash_command(description="Informationen über die aktuelle Fahrt")
|
||||
async def info(ctx):
|
||||
await ctx.respond(embed=build_info_embed())
|
||||
@@ -0,0 +1,48 @@
|
||||
import discord
|
||||
import random
|
||||
|
||||
from src.utils import convert_iso_string, get_operator_metadata
|
||||
from src.dc.helpers import format_timestamp_to_dc
|
||||
|
||||
def build_embed_footer(mode: str, slogans):
|
||||
footer_notice = f"Data provided by https://transitous.org • Typ: {mode}"
|
||||
icon = "https://avatars.githubusercontent.com/u/24960008?s=60&v=4"
|
||||
|
||||
if slogans is not None:
|
||||
footer_text = f"{random.choice(slogans)} • {footer_notice}"
|
||||
else:
|
||||
footer_text = footer_notice
|
||||
|
||||
return {
|
||||
"text": footer_text,
|
||||
"icon": icon
|
||||
}
|
||||
|
||||
def build_info_embed() -> discord.Embed:
|
||||
from src.dc.handlers import trip
|
||||
|
||||
agency = trip["agency"]
|
||||
metadata = get_operator_metadata(agency, trip["route_color"])
|
||||
departure = format_timestamp_to_dc(trip["departure"])
|
||||
arrival = format_timestamp_to_dc(trip["arrival"])
|
||||
embed = discord.Embed(
|
||||
title = trip["long_name"],
|
||||
description=f"Abfahrt von {trip["from"]} um {departure}. Ankunft um {arrival}",
|
||||
color = metadata["color"]
|
||||
)
|
||||
|
||||
route_lines = []
|
||||
for stop_name, stop_arrival in trip["stops"].items():
|
||||
if stop_name == trip["from"]:
|
||||
route_lines.append(f"**• {stop_name} ({stop_arrival} Uhr)**")
|
||||
else:
|
||||
route_lines.append(f"• {stop_name} ({stop_arrival} Uhr)")
|
||||
embed.add_field(name="Route", value="\n".join(route_lines))
|
||||
|
||||
footer = build_embed_footer(trip["mode"], metadata["slogans"])
|
||||
embed.set_footer(text=footer["text"], icon_url=footer["icon"])
|
||||
|
||||
embed.set_author(name=agency)
|
||||
embed.set_thumbnail(url=metadata["logo"])
|
||||
|
||||
return embed
|
||||
+5
-4
@@ -8,14 +8,15 @@ from src.utils import logger, channel_formatting
|
||||
_scheduled_task: asyncio.Task | None = None
|
||||
|
||||
async def rename_vc(bot: discord.Bot, voice_channel, from_scheduler: bool = False):
|
||||
global trip
|
||||
if not from_scheduler and _scheduled_task and not _scheduled_task.done():
|
||||
_scheduled_task.cancel()
|
||||
|
||||
station_id = transitous.get_random_stop_id()
|
||||
trip_id = transitous.get_random_connection(station_id)
|
||||
trip = transitous.get_trip_details(trip_id)
|
||||
connection = transitous.get_random_connection(station_id)
|
||||
trip = transitous.get_trip_details(connection["trip_id"], connection["from_station"])
|
||||
|
||||
arrival = datetime.fromisoformat(trip["end_time"])
|
||||
arrival = trip["arrival"]
|
||||
long_name = trip["long_name"]
|
||||
|
||||
print("-----------------")
|
||||
@@ -25,7 +26,7 @@ async def rename_vc(bot: discord.Bot, voice_channel, from_scheduler: bool = Fals
|
||||
|
||||
formatting = channel_formatting(trip["mode"])
|
||||
await voice_channel.edit(name=f"{formatting}{long_name}")
|
||||
await voice_channel.set_status(f"Ankunft um {arrival.strftime('%H:%M')}")
|
||||
await voice_channel.set_status(f"Ankunft um {arrival}")
|
||||
|
||||
logger(f"Name geändert!")
|
||||
|
||||
|
||||
+18
-2
@@ -1,5 +1,6 @@
|
||||
import discord
|
||||
from src.utils import logger
|
||||
from datetime import datetime, timedelta
|
||||
from src.utils import logger, convert_iso_string
|
||||
|
||||
def validate_channel(bot: discord.bot, server_id: int, channel_id: int):
|
||||
guild = bot.get_guild(server_id)
|
||||
@@ -12,4 +13,19 @@ def validate_channel(bot: discord.bot, server_id: int, channel_id: int):
|
||||
logger(f"Es konnte kein VC mit der id {channel_id} gefunden werden", "fatal")
|
||||
return False
|
||||
|
||||
return channel
|
||||
return channel
|
||||
|
||||
def format_timestamp_to_dc(timestr):
|
||||
parsed_time = datetime.strptime(timestr, "%H:%M")
|
||||
now = datetime.now()
|
||||
final_datetime = datetime.now().replace(
|
||||
hour=parsed_time.hour,
|
||||
minute=parsed_time.minute,
|
||||
second=0,
|
||||
microsecond=0
|
||||
)
|
||||
|
||||
if final_datetime <= now:
|
||||
final_datetime += timedelta(days=1)
|
||||
|
||||
return discord.utils.format_dt(final_datetime, style="t")
|
||||
Reference in New Issue
Block a user