from dataclasses import dataclass, field 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