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
|