2424
2525from __future__ import annotations
2626
27- from typing import TYPE_CHECKING , Iterable
27+ from typing import TYPE_CHECKING , Sequence
28+ from dataclasses import dataclass
2829
2930from .colour import Colour
3031from .enums import SharedClientThemeBaseType , try_enum
3738if TYPE_CHECKING :
3839 from .types .shared_client_theme import SharedClientTheme as SharedClientThemePayload
3940
40-
41+ @ dataclass
4142class SharedClientTheme :
4243 """Represents a shared client theme that can be sent in a message.
4344
@@ -60,15 +61,18 @@ class SharedClientTheme:
6061 The mode of the theme. Defaults to :attr:`SharedClientThemeBaseType.unset`,
6162 which Discord treats as :attr:`SharedClientThemeBaseType.dark`.
6263 """
63-
64- __slots__ = ("colours" , "gradient_angle" , "base_mix" , "base_theme" )
64+
65+ gradient_angle : int = 0
66+ base_mix : int = 0
67+ colours : list [Colour ] = MISSING
68+ base_theme : SharedClientThemeBaseType | None = SharedClientThemeBaseType .unset
6569
6670 def __init__ (
6771 self ,
6872 gradient_angle : int = 0 ,
6973 base_mix : int = 0 ,
70- colors : Iterable [Colour ] = MISSING ,
71- colours : Iterable [Colour ] = MISSING ,
74+ colors : Sequence [Colour ] = MISSING ,
75+ colours : Sequence [Colour ] = MISSING ,
7276 * ,
7377 base_theme : SharedClientThemeBaseType = SharedClientThemeBaseType .unset ,
7478 ):
@@ -89,11 +93,13 @@ def __init__(
8993 base_theme , SharedClientThemeBaseType
9094 ):
9195 raise TypeError ("base_theme must be a SharedClientThemeBaseType or None" )
92-
93- self .colours : list [Colour ] = colours
94- self .gradient_angle : int = gradient_angle
95- self .base_mix : int = base_mix
96- self .base_theme : SharedClientThemeBaseType | None = base_theme
96+
97+ super ().__init__ (
98+ gradient_angle = gradient_angle ,
99+ base_mix = base_mix ,
100+ colours = list (colours ),
101+ base_theme = base_theme ,
102+ )
97103
98104 @property
99105 def colors (self ) -> list [Colour ]:
0 commit comments