From c84cb3f944467b45b4512530cca77809069c40ae Mon Sep 17 00:00:00 2001 From: Stijn De Clercq Date: Mon, 29 Nov 2021 21:48:30 +0100 Subject: [PATCH] Add slash command for schedule & fix broken schedule --- cogs/slash/school_slash.py | 41 ++++++++++++++++++++++++++++++++++++++ files/schedules/31.json | 4 ---- 2 files changed, 41 insertions(+), 4 deletions(-) diff --git a/cogs/slash/school_slash.py b/cogs/slash/school_slash.py index 6be3ea5..21b72d3 100644 --- a/cogs/slash/school_slash.py +++ b/cogs/slash/school_slash.py @@ -1,8 +1,12 @@ from discord.ext import commands from dislash import SlashInteraction, slash_command, Option, OptionType +from data import schedule from data.embeds.food import Menu from data.embeds.deadlines import Deadlines +from functions import les, config +from functions.stringFormatters import capitalize +from functions.timeFormatters import skip_weekends from startup.didier import Didier @@ -30,6 +34,43 @@ class SchoolSlash(commands.Cog): embed = Deadlines().to_embed() await interaction.reply(embed=embed) + @slash_command( + name="les", + description="Lessenrooster voor [Dag] (default vandaag)", + options=[ + Option( + "dag", + description="dag", + type=OptionType.STRING, + required=False + ) + ] + ) + async def _schedule_slash(self, interaction: SlashInteraction, day: str = None): + """It's late and I really don't want to refactor the original right now""" + if day is not None: + day = day.lower() + + date = les.find_target_date(day) + + # Person explicitly requested a weekend-day + if day is not None and day.lower() in ("morgen", "overmorgen") and date.weekday() > 4: + return await interaction.reply(f"{capitalize(day)} is het weekend.", ephemeral=True) + + date = skip_weekends(date) + + s = schedule.Schedule(date, int(config.get("year")), int(config.get("semester")), day is not None) + + if s.semester_over: + return await interaction.reply("Het semester is afgelopen.", ephemeral=True) + + # DM only shows user's own minor + if interaction.guild is None: + minor_roles = [*schedule.find_minor(self.client, interaction.author.id)] + return await interaction.reply(embed=s.create_schedule(minor_roles=minor_roles).to_embed()) + + return await interaction.reply(embed=s.create_schedule().to_embed()) + def setup(client: Didier): client.add_cog(SchoolSlash(client)) diff --git a/files/schedules/31.json b/files/schedules/31.json index 4e3d28c..28f43dd 100644 --- a/files/schedules/31.json +++ b/files/schedules/31.json @@ -167,12 +167,8 @@ }, "6": { "canceled": true - }, - "10,11,12": { - "online_only": true } }, - "online": "zoom", "location": { "campus": "Ardoyen", "building": "iGent 125",