mirror of
https://github.com/nexy7574/LCC-bot.git
synced 2024-09-19 18:16:34 +01:00
Add term time breaks to timetable system
This commit is contained in:
parent
2a11ae112f
commit
124edea57a
1 changed files with 58 additions and 24 deletions
|
@ -1,5 +1,5 @@
|
|||
import asyncio
|
||||
from typing import Optional, Union
|
||||
from typing import Optional, Union, Dict
|
||||
|
||||
import discord
|
||||
from discord.ext import commands, tasks
|
||||
|
@ -24,6 +24,20 @@ class TimeTableCog(commands.Cog):
|
|||
self.timetable = json.load(file)
|
||||
self.update_status.start()
|
||||
|
||||
def are_on_break(self, date: datetime = None) -> Optional[Dict[str, Union[str, datetime]]]:
|
||||
"""Checks if the date is one as a term break"""
|
||||
date = date or datetime.now()
|
||||
# That description made no sense what
|
||||
for name, dates in self.timetable["breaks"].items():
|
||||
start_date = datetime.strptime(dates["start"], "%d/%m/%Y")
|
||||
end_date = datetime.strptime(dates["end"], "%d/%m/%Y")
|
||||
if date.timestamp() in range(int(start_date.timestamp()), int(end_date.timestamp())):
|
||||
return {
|
||||
"name": name,
|
||||
"start": start_date,
|
||||
"end": end_date
|
||||
}
|
||||
|
||||
def cog_unload(self):
|
||||
self.update_status.stop()
|
||||
|
||||
|
@ -90,6 +104,26 @@ class TimeTableCog(commands.Cog):
|
|||
no_prefix: bool = False,
|
||||
):
|
||||
date = date or datetime.now()
|
||||
_break = self.are_on_break(date)
|
||||
if _break:
|
||||
next_lesson = await asyncio.to_thread(
|
||||
self.absolute_next_lesson,
|
||||
_break["end"] + timedelta(days=1, hours=7)
|
||||
)
|
||||
next_lesson = next_lesson or {
|
||||
"name": "Unknown",
|
||||
"tutor": "Unknown",
|
||||
"room": "Unknown"
|
||||
}
|
||||
text = "[tt] On break {!r} from {} until {}. Break ends {}, and the first lesson back is " \
|
||||
"{lesson[name!r]} with {lesson[tutor]} in {lesson[room]}.".format(
|
||||
_break["name"],
|
||||
discord.utils.format_dt(_break["start"], "d"),
|
||||
discord.utils.format_dt(_break["end"], "d"),
|
||||
discord.utils.format_dt(_break["end"], "R"),
|
||||
lesson=next_lesson
|
||||
)
|
||||
else:
|
||||
lesson = self.current_lesson(date)
|
||||
if not lesson:
|
||||
next_lesson = self.next_lesson(date)
|
||||
|
|
Loading…
Reference in a new issue