Add slash command for schedule & fix broken schedule

pull/100/head
Stijn De Clercq 2021-11-29 21:48:30 +01:00
parent fccf4efa1f
commit c84cb3f944
2 changed files with 41 additions and 4 deletions

View File

@ -1,8 +1,12 @@
from discord.ext import commands from discord.ext import commands
from dislash import SlashInteraction, slash_command, Option, OptionType from dislash import SlashInteraction, slash_command, Option, OptionType
from data import schedule
from data.embeds.food import Menu from data.embeds.food import Menu
from data.embeds.deadlines import Deadlines 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 from startup.didier import Didier
@ -30,6 +34,43 @@ class SchoolSlash(commands.Cog):
embed = Deadlines().to_embed() embed = Deadlines().to_embed()
await interaction.reply(embed=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): def setup(client: Didier):
client.add_cog(SchoolSlash(client)) client.add_cog(SchoolSlash(client))

View File

@ -167,12 +167,8 @@
}, },
"6": { "6": {
"canceled": true "canceled": true
},
"10,11,12": {
"online_only": true
} }
}, },
"online": "zoom",
"location": { "location": {
"campus": "Ardoyen", "campus": "Ardoyen",
"building": "iGent 125", "building": "iGent 125",