WIP: Events and Stages

This commit is contained in:
2025-04-21 14:34:13 +02:00
parent ec733097ea
commit b72f930c94
4 changed files with 124 additions and 33 deletions

View File

@@ -20,6 +20,7 @@ class PycordEvent:
"name",
"guild_id",
"created",
"ended",
"creator_id",
"starts",
"ends",
@@ -33,6 +34,7 @@ class PycordEvent:
name: str
guild_id: int
created: datetime
ended: datetime | None
creator_id: int
starts: datetime
ends: datetime
@@ -74,22 +76,37 @@ class PycordEvent:
return cls(**db_entry)
@classmethod
async def from_name(cls, event_name: str, cache: Optional[Cache] = None) -> "PycordEvent":
# TODO Add sorting by creation date or something.
# Duplicate events should be avoided, latest active event should be returned.
db_entry: Dict[str, Any] | None = await cls.__collection__.find_one({"name": event_name})
if db_entry is None:
raise RuntimeError(f"Event with name {event_name} not found")
if cache is not None:
cache.set_json(f"{cls.__short_name__}_{db_entry['_id']}", db_entry)
return cls(**db_entry)
# TODO Implement this method
@classmethod
async def create(
cls,
name: str,
guild_id: int,
creator_id: int,
starts: datetime,
ends: datetime,
thumbnail_id: str | None,
cache: Optional[Cache] = None,
cls,
name: str,
guild_id: int,
creator_id: int,
starts: datetime,
ends: datetime,
thumbnail_id: str | None,
cache: Optional[Cache] = None,
) -> "PycordEvent":
db_entry: Dict[str, Any] = {
"name": name,
"guild_id": guild_id,
"created": datetime.now(tz=timezone.utc),
"ended": None,
"creator_id": creator_id,
"starts": starts,
"ends": ends,
@@ -179,6 +196,7 @@ class PycordEvent:
"name": self.name,
"guild_id": self.guild_id,
"created": self.created,
"ended": self.ended,
"creator_id": self.creator_id,
"starts": self.starts,
"ends": self.ends,
@@ -192,6 +210,7 @@ class PycordEvent:
"name": None,
"guild_id": None,
"created": None,
"ended": None,
"creator_id": None,
"starts": None,
"ends": None,