66 lines
1.5 KiB
Python
66 lines
1.5 KiB
Python
|
|
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
|