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-07-11 16:59:20 +05:00
2025-08-15 11:09:40 +05:00
# region dataclasses
2025-07-11 16:59:20 +05:00
@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
2025-07-11 16:59:20 +05:00
@dataclass ( frozen = True )
2025-08-15 11:09:40 +05:00
class Channel :
created_at : datetime
id : int
name : str
2025-07-11 16:59:20 +05:00
2025-08-15 11:09:40 +05:00
def __str__ ( self ) - > str :
return self . name
2025-07-11 16:59:20 +05:00
@dataclass ( frozen = True )
2025-08-15 11:09:40 +05:00
class Role :
id : int
2025-07-11 16:59:20 +05:00
name : str
2025-08-15 11:09:40 +05:00
def __str__ ( self ) - > str :
return self . name
2025-07-11 16:59:20 +05:00
@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 09:33:05 +02: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 09:33:05 +02: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
2025-07-11 16:59:20 +05:00
2025-07-18 14:28:23 +05:00
@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 )
2025-07-14 20:28:00 +05:00
2025-07-11 16:59:20 +05:00
if __name__ == ' __main__ ' :
2025-08-15 11:09:40 +05:00
pass