From 57c4ff3bf94f8480d8bd7612b84c7d87cb53f91d Mon Sep 17 00:00:00 2001 From: profitroll Date: Tue, 22 Apr 2025 23:32:23 +0200 Subject: [PATCH] Added a couple of needed attributes (#8) --- classes/pycord_user.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/classes/pycord_user.py b/classes/pycord_user.py index f3421b2..da25146 100644 --- a/classes/pycord_user.py +++ b/classes/pycord_user.py @@ -6,6 +6,7 @@ from bson import ObjectId from libbot.cache.classes import Cache from pymongo.results import InsertOneResult +from classes.abstract.cacheable import Cacheable from classes.errors.pycord_user import UserNotFoundError from modules.database import col_users from modules.utils import get_logger, restore_from_cache @@ -14,15 +15,19 @@ logger: Logger = get_logger(__name__) @dataclass -class PycordUser: +class PycordUser(Cacheable): """Dataclass of DB entry of a user""" - __slots__ = ("_id", "id") + __slots__ = ("_id", "id", "guild_id", "channel_id", "current_event_id", "current_stage_id") __short_name__ = "user" __collection__ = col_users _id: ObjectId id: int + guild_id: int + channel_id: int | None + current_event_id: ObjectId | None + current_stage_id: ObjectId | None @classmethod async def from_id( @@ -75,6 +80,14 @@ class PycordUser: return { "_id": self._id if not json_compatible else str(self._id), "id": self.id, + "guild_id": self.guild_id, + "channel_id": self.channel_id, + "current_event_id": ( + self.current_event_id if not json_compatible else str(self.current_event_id) + ), + "current_stage_id": ( + self.current_stage_id if not json_compatible else str(self.current_stage_id) + ), } async def _set(self, cache: Optional[Cache] = None, **kwargs) -> None: @@ -142,9 +155,13 @@ class PycordUser: cache.delete(self._get_cache_key()) @staticmethod - def get_defaults(user_id: Optional[int] = None) -> Dict[str, Any]: + def get_defaults(user_id: Optional[int] = None, guild_id: Optional[int] = None) -> Dict[str, Any]: return { "id": user_id, + "guild_id": guild_id, + "channel_id": None, + "current_event_id": None, + "current_stage_id": None, } @staticmethod