This commit is contained in:
nexy7574 2023-09-21 19:25:08 +01:00
commit ca26ef0673
6 changed files with 129 additions and 121 deletions

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="dataSourceStorageLocal" created-in="PY-232.9559.58">
<component name="dataSourceStorageLocal" created-in="PY-232.9921.36">
<data-source name="main" uuid="28efee07-d306-4126-bf69-01008b4887e2">
<database-info product="SQLite" version="3.39.2" jdbc-version="2.1" driver-name="SQLite JDBC" driver-version="3.39.2.0" dbms="SQLITE" exact-version="3.39.2" exact-driver-version="3.39">
<identifier-quote-string>&quot;</identifier-quote-string>

View file

@ -1,4 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Black">
<option name="sdkName" value="Python 3.11 (LCC-bot)" />
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.11 (LCC-bot)" project-jdk-type="Python SDK" />
</project>

View file

@ -990,16 +990,11 @@ class OtherCog(commands.Cog):
# Assume is timestamp
timestamp = round(float(parsed_qs['t'][0]))
end_timestamp = None
if len(parsed_qs["t"]) == 2:
if len(parsed_qs["t"]) >= 2:
end_timestamp = round(float(parsed_qs['t'][1]))
if end_timestamp < timestamp:
return await ctx.edit(
embed=discord.Embed(
title="Error",
description="End timestamp must be greater than start timestamp.",
colour=discord.Colour.red()
),
delete_after=30
end_timestamp, timestamp = reversed(
(end_timestamp, timestamp)
)
_end = "to %s" % end_timestamp if len(parsed_qs["t"]) == 2 else "onward"
embed = discord.Embed(
@ -1377,6 +1372,7 @@ class OtherCog(commands.Cog):
discord.SlashCommandOptionType.attachment,
description="Image to perform OCR on",
)
):
"""OCRs an image"""
await ctx.defer()

View file

@ -1,6 +1,4 @@
import random
import sys
import asyncio
from typing import Optional, Union, Dict
import discord
@ -53,6 +51,9 @@ class TimeTableCog(commands.Cog):
blocks = [f"```\nTimetable for {date.strftime('%A')} ({date.strftime('%d/%m/%Y')}):\n```"]
for lesson in lessons:
lesson.setdefault("name", "unknown")
lesson.setdefault("tutor", "unknown")
lesson.setdefault("room", "unknown")
start_datetime = date.replace(hour=lesson["start"][0], minute=lesson["start"][1])
end_datetime = date.replace(hour=lesson["end"][0], minute=lesson["end"][1])
text = (
@ -136,6 +137,10 @@ class TimeTableCog(commands.Cog):
_break = self.are_on_break(date)
if _break is not None:
next_lesson = self.absolute_next_lesson(date + timedelta(days=1))
next_lesson.setdefault("name", "unknown")
next_lesson.setdefault("tutor", "unknown")
next_lesson.setdefault("room", "unknown")
next_lesson.setdefault("start_datetime", discord.utils.utcnow())
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(
@ -150,8 +155,16 @@ class TimeTableCog(commands.Cog):
lesson = self.current_lesson(date)
if not lesson:
next_lesson = self.next_lesson(date)
if not next_lesson:
next_lesson = self.absolute_next_lesson()
if next_lesson is None:
try:
next_lesson = self.absolute_next_lesson(date + timedelta(days=1))
except RuntimeError:
print("Failed to fetch absolute next lesson. Is this the end?")
return
next_lesson.setdefault("name", "unknown")
next_lesson.setdefault("tutor", "unknown")
next_lesson.setdefault("room", "unknown")
next_lesson.setdefault("start_datetime", discord.utils.utcnow())
text = (
"[tt] No more lessons today!\n"
f"[tt] Next Lesson: {next_lesson['name']!r} with {next_lesson['tutor']} in "
@ -160,20 +173,45 @@ class TimeTableCog(commands.Cog):
)
else:
text = (
f"[tt] Next Lesson: {next_lesson['name']!r} with {next_lesson['tutor']} in "
f"{next_lesson['room']} - Starts {discord.utils.format_dt(next_lesson['start_datetime'], 'R')}"
next_lesson.setdefault("name", "unknown")
next_lesson.setdefault("tutor", "unknown")
next_lesson.setdefault("room", "unknown")
next_lesson.setdefault("start_datetime", discord.utils.utcnow())
text = "[tt] Next Lesson: {0[name]!r} with {0[tutor]} in {0[room]} - Starts {1}".format(
next_lesson,
discord.utils.format_dt(next_lesson['start_datetime'], 'R')
)
else:
text = (
f"[tt] Current Lesson: {lesson['name']!r} with {lesson['tutor']} in {lesson['room']} - "
f"ends {discord.utils.format_dt(lesson['end_datetime'], 'R')}"
lesson.setdefault("name", "unknown")
lesson.setdefault("tutor", "unknown")
lesson.setdefault("room", "unknown")
lesson.setdefault("start_datetime", discord.utils.utcnow())
if lesson["name"].lower() != "lunch":
text = "[tt] Current Lesson: {0[name]!r} with {0[tutor]} in {0[room]} - ends {1}".format(
lesson,
discord.utils.format_dt(lesson['end_datetime'], 'R')
)
else:
text = "[tt] \U0001f37d\U0000fe0f Lunch! {0}-{1}, ends in {2}".format(
discord.utils.format_dt(lesson['start_datetime'], 't'),
discord.utils.format_dt(lesson['end_datetime'], 't'),
discord.utils.format_dt(lesson['end_datetime'], 'R')
)
next_lesson = self.next_lesson(date)
if next_lesson:
next_lesson.setdefault("name", "unknown")
next_lesson.setdefault("tutor", "unknown")
next_lesson.setdefault("room", "unknown")
next_lesson.setdefault("start_datetime", discord.utils.utcnow())
if lesson["name"].lower() != "lunch":
text += "\n[tt] Next lesson: {0[name]!r} with {0[tutor]} in {0[room]} - starts {1}".format(
next_lesson, discord.utils.format_dt(next_lesson["start_datetime"], "R")
)
else:
text = "[tt] \U0001f37d\U0000fe0f Lunch! {0}-{1}.".format(
discord.utils.format_dt(lesson['start_datetime'], 't'),
discord.utils.format_dt(lesson['end_datetime'], 't'),
)
if no_prefix:
text = text.replace("[tt] ", "")
@ -225,7 +263,7 @@ class TimeTableCog(commands.Cog):
await ctx.defer()
await self.update_timetable_message(ctx, date, no_prefix=True)
if random.randint(1, 10) == 1:
end_date = datetime(2023, 7, 13, 0, 0, 0, tzinfo=timezone.utc)
end_date = datetime(2024, 7, 13, 0, 0, 0, tzinfo=timezone.utc)
days_left = (end_date - discord.utils.utcnow()).days
await ctx.respond("There are only {:,} days left of this academic year.".format(days_left))

View file

@ -1,3 +1,6 @@
[pycodestyle]
max-line-length = 120
ignore = W293,W291
[flake8]
max-line-length = 120

View file

@ -1,7 +1,7 @@
{
"monday": [
{
"name": "???",
"name": "Digital Security",
"start": [
9,
0
@ -10,11 +10,11 @@
10,
15
],
"tutor": "Other",
"room": "A145"
"tutor": "Raphael",
"room": "A132"
},
{
"name": "???",
"name": "Digital Security",
"start": [
10,
30
@ -23,26 +23,13 @@
11,
45
],
"tutor": "Other",
"room": "A145"
"tutor": "Raphael",
"room": "A132"
}
],
"tuesday": [
{
"name": "???",
"start": [
9,
0
],
"end": [
10,
15
],
"tutor": "Other",
"room": "A144"
},
{
"name": "???",
"name": "Managing Infrastructure",
"start": [
10,
30
@ -51,11 +38,11 @@
11,
45
],
"tutor": "Other",
"room": "A047"
"tutor": "Rebecca",
"room": "A132"
},
{
"name": "???",
"name": "Digital Security",
"start": [
11,
45
@ -64,11 +51,22 @@
13,
0
],
"tutor": "Other",
"room": "A145"
"tutor": "Raphael",
"room": "A132"
},
{
"name": "???",
"name": "Lunch",
"start": [
13,
0
],
"end": [
14,
0
]
},
{
"name": "Digital Security",
"start": [
14,
0
@ -77,39 +75,26 @@
15,
15
],
"tutor": "Other",
"room": "A047"
"tutor": "Raphael",
"room": "A132"
}
],
"wednesday": [
{
"name": "???",
"name": "Managing Infrastructure",
"start": [
9,
0
],
"end": [
10,
15
],
"tutor": "Other",
"room": "A145"
},
{
"name": "???",
"start": [
10,
30
],
"end": [
11,
45
],
"tutor": "Other",
"room": "A145"
"tutor": "Rebecca",
"room": "A132"
},
{
"name": "???",
"name": "Digital Security",
"start": [
11,
45
@ -118,11 +103,22 @@
13,
0
],
"tutor": "Other",
"room": "A145"
"tutor": "Raphael",
"room": "A132"
},
{
"name": "???",
"name": "Lunch",
"start": [
13,
0
],
"end": [
14,
0
]
},
{
"name": "Digital Security",
"start": [
14,
0
@ -131,62 +127,47 @@
15,
15
],
"tutor": "Other",
"room": "A145"
},
{
"name": "???",
"start": [
15,
30
],
"end": [
16,
45
],
"tutor": "Other",
"room": "A145"
"tutor": "Raphael",
"room": "A132"
}
],
"thursday": [
{
"name": "???",
"name": "Research & Evaluation",
"start": [
9,
0
],
"end": [
10,
15
],
"tutor": "Other",
"room": "A145"
},
{
"name": "???",
"start": [
10,
30
],
"end": [
11,
45
],
"tutor": "Other",
"room": "A145"
"tutor": "Zach",
"room": "A132"
},
{
"name": "???",
"name": "Lunch",
"start": [
11,
45
],
"end": [
13,
12,
45
]
},
{
"name": "Research & Evaluation",
"start": [
12,
45
],
"end": [
14,
0
],
"tutor": "Other",
"room": "A145"
"tutor": "Zach",
"room": "A132"
},
{
"name": "Fundamentals",
@ -199,20 +180,7 @@
15
],
"tutor": "Steven",
"room": "A145"
},
{
"name": "Fundamentals",
"start": [
15,
30
],
"end": [
16,
45
],
"tutor": "Steven",
"room": "A145"
"room": "A132"
}
],
"friday": [],