KaniumCogs/reginaldCog/messenger_clients/discord_data_models.py

66 lines
1.5 KiB
Python
Raw Normal View History

2025-08-15 10:41:35 +05:00
from dataclasses import dataclass, field, asdict
2025-08-15 11:09:40 +05:00
from datetime import datetime
2025-08-15 11:09:40 +05:00
# region dataclasses
@dataclass(frozen=True)
2025-08-15 11:09:40 +05:00
class Attachment:
content_type: str
filename: str
id: int
size: int
url: str
ephemeral: bool = False
@dataclass(frozen=True)
2025-08-15 11:09:40 +05:00
class Channel:
created_at: datetime
id: int
name: str
2025-08-15 11:09:40 +05:00
def __str__(self) -> str:
return self.name
@dataclass(frozen=True)
2025-08-15 11:09:40 +05:00
class Role:
id: int
name: str
2025-08-15 11:09:40 +05:00
def __str__(self) -> str:
return self.name
@dataclass(frozen=True)
2025-08-15 11:09:40 +05:00
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.
2025-08-15 12:34:41 +05:00
global_name: str # The user's global nickname, taking precedence over the username in display.
2025-08-15 11:09:40 +05:00
id: int
joined_at: datetime
mention: str
2025-08-15 12:34:41 +05:00
name: str # The user's username.
2025-08-15 11:09:40 +05:00
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)
2025-08-15 11:09:40 +05:00
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__':
2025-08-15 11:09:40 +05:00
pass