From 0534ec6b159cfb7b99604ac05d63269ba6552543 Mon Sep 17 00:00:00 2001 From: T-BENZIN Date: Thu, 10 Jul 2025 21:22:52 +0500 Subject: [PATCH] Added models.py containing abstract dataclasses for Discord --- reginaldCog/discord_bot/models.py | 65 +++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 reginaldCog/discord_bot/models.py diff --git a/reginaldCog/discord_bot/models.py b/reginaldCog/discord_bot/models.py new file mode 100644 index 0000000..93f01a9 --- /dev/null +++ b/reginaldCog/discord_bot/models.py @@ -0,0 +1,65 @@ +from dataclasses import dataclass, field, asdict +from datetime import datetime + + +# region dataclasses +@dataclass(frozen=True) +class Attachment: + content_type: str + filename: str + id: int + size: int + url: str + ephemeral: bool = False + + +@dataclass(frozen=True) +class Channel: + created_at: datetime + id: int + name: str + + def __str__(self) -> str: + return self.name + + +@dataclass(frozen=True) +class Role: + id: int + name: str + + def __str__(self) -> str: + return self.name + + +@dataclass(frozen=True) +class Member: + bot: bool + created_at: datetime + display_name: str # For regular users this is just their global name or their username, but if they have a guild specific nickname then that is returned instead. + global_name: str # The user’s global nickname, taking precedence over the username in display. + id: int + joined_at: datetime + mention: str + name: str # The user’s username. + nick: str # The guild specific nickname of the user. Takes precedence over the global name. + roles: list[Role] = field(default_factory=list) + + def __str__(self) -> str: + return self.name + + +@dataclass(frozen=True) +class Message: + author: Member + channel: Channel + created_at: datetime + id: int + attachments: list[Attachment] = field(default_factory=list) + channel_mentions: list[Channel] = field(default_factory=list) + content: str = '' + mentions: list[Member] = field(default_factory=list) + + +if __name__ == '__main__': + pass