mirror of https://github.com/stijndcl/didier
88 lines
2.5 KiB
Python
88 lines
2.5 KiB
Python
|
import datetime
|
||
|
import json
|
||
|
|
||
|
from discord.ext import commands
|
||
|
from dislash import SlashInteraction, slash_command, Option, OptionType, check
|
||
|
from functions.checks import isMe
|
||
|
from functions.timeFormatters import fromString
|
||
|
from startup.didier import Didier
|
||
|
|
||
|
|
||
|
class Slash(commands.Cog):
|
||
|
def __init__(self, client: Didier):
|
||
|
self.client: Didier = client
|
||
|
|
||
|
@slash_command(name="db")
|
||
|
@check(isMe)
|
||
|
async def _db_slash(self, interaction: SlashInteraction):
|
||
|
pass
|
||
|
|
||
|
@_db_slash.sub_command_group(name="add")
|
||
|
async def _add_slash(self, interaction: SlashInteraction):
|
||
|
pass
|
||
|
|
||
|
@_add_slash.sub_command(
|
||
|
name="deadline",
|
||
|
options=[
|
||
|
Option(
|
||
|
"year",
|
||
|
description="Year (1-based)",
|
||
|
type=OptionType.INTEGER,
|
||
|
required=True
|
||
|
),
|
||
|
Option(
|
||
|
"course",
|
||
|
description="Course (abbreviated)",
|
||
|
type=OptionType.STRING,
|
||
|
required=True
|
||
|
),
|
||
|
Option(
|
||
|
"name",
|
||
|
description="Name of the deadline/project",
|
||
|
type=OptionType.STRING,
|
||
|
required=True
|
||
|
),
|
||
|
Option(
|
||
|
"date",
|
||
|
description="Date (DD/MM)",
|
||
|
type=OptionType.STRING,
|
||
|
required=True
|
||
|
),
|
||
|
Option(
|
||
|
"time",
|
||
|
description="Timestamp (HH:MM or HH:MM:SS)",
|
||
|
type=OptionType.STRING,
|
||
|
required=False
|
||
|
)
|
||
|
]
|
||
|
)
|
||
|
async def _add_deadline_slash(self, interaction: SlashInteraction, year: int, course: str, name: str, date: str, time: str = "00:00:00"):
|
||
|
with open("files/deadlines.json", "r") as f:
|
||
|
deadlines = json.load(f)
|
||
|
|
||
|
date += "/" + str(datetime.datetime.now().year)
|
||
|
|
||
|
# Fix format
|
||
|
if time.count(":") == 1:
|
||
|
time += ":00"
|
||
|
|
||
|
dt = fromString(f"{date} {time}", formatString="%d/%m/%Y %H:%M:%S")
|
||
|
|
||
|
# Add year & course if necessary
|
||
|
if str(year) not in deadlines:
|
||
|
deadlines[str(year)] = {}
|
||
|
|
||
|
if course not in deadlines[str(year)]:
|
||
|
deadlines[str(year)][course] = {}
|
||
|
|
||
|
deadlines[str(year)][course][name] = round(dt.timestamp())
|
||
|
|
||
|
with open("files/deadlines.json", "w") as f:
|
||
|
json.dump(deadlines, f)
|
||
|
|
||
|
await interaction.reply("Addition successful", ephemeral=True)
|
||
|
|
||
|
|
||
|
def setup(client: Didier):
|
||
|
client.add_cog(Slash(client))
|