We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
[REQUEST] Add a basic `Color` object.
### Describe the feature.

People may want to be able to easily call upon colors. Since it should be at least an accepted concept, I am wanting to add a basic `Color` object that includes the official branding colors. Please note that other colors that are custom-defined are ideally frowned on for this idea since the core library is about making implementations strict to what Discord offer, which we can argue debatably with the branding colors.

### Code of Conduct

- [X] I agree to follow the contribution requirements.

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `interactions/api/models/misc.py`
Content:
```
1 # TODO: This is post-v4.
2 # TODO: Reorganise these models based on which big obj uses little obj
3 # TODO: Potentially rename some model references to enums, if applicable
4 # TODO: Reorganise mixins to its own thing, currently placed here because circular import sucks.
5 # also, it should be serialiser* but idk, fl0w'd say something if I left it like that. /shrug
6 import datetime
7 from logging import Logger
8 from math import floor
9 from typing import Union
10 
11 from interactions.base import get_logger
12 
13 log: Logger = get_logger("mixin")
14 
15 
16 class DictSerializerMixin(object):
17     """
18     The purpose of this mixin is to be subclassed.
19 
20     .. note::
21         On subclass, it:
22             -- From kwargs (received from the Discord API response), add it to the `_json` attribute
23             such that it can be reused by other libraries/extensions
24             -- Aids in attributing the kwargs to actual model attributes, i.e. `User.id`
25             -- Dynamically sets attributes not given to kwargs but slotted to None, signifying that it doesn't exist.
26 
27     .. warning::
28         This does NOT convert them to its own data types, i.e. timestamps, or User within Member. This is left by
29         the object that's using the mixin.
30     """
31 
32     __slots__ = "_json"
33 
34     def __init__(self, **kwargs):
35         self._json = kwargs
36         # for key in kwargs:
37         #    setattr(self, key, kwargs[key])
38 
39         for key in kwargs:
40             if key in self.__slots__ if hasattr(self, "__slots__") else True:
41                 # else case if the mixin is used outside of this library and/or SDK.
42                 setattr(self, key, kwargs[key])
43             else:
44                 log.warning(
45                     f"Attribute {key} is missing from the {self.__class__.__name__} data model, skipping."
46                 )
47                 # work on message printout? Effective, but I think it should be a little bit more friendly
48                 # towards end users
49 
50         # if self.__slots__ is not None:  # safeguard, runtime check
51         if hasattr(self, "__slots__"):
52             for _attr in self.__slots__:
53                 if not hasattr(self, _attr):
54                     setattr(self, _attr, None)
55 
56 
57 class Overwrite(DictSerializerMixin):
58     """
59     This is used for the PermissionOverride object.
60 
61     :ivar int id: Role or User ID
62     :ivar int type: Type that corresponds ot the ID; 0 for role and 1 for member.
63     :ivar str allow: Permission bit set.
64     :ivar str deny: Permission bit set.
65     """
66 
67     __slots__ = ("_json", "id", "type", "allow", "deny")
68 
69     def __init__(self, **kwargs):
70         super().__init__(**kwargs)
71 
72 
73 class ClientStatus(DictSerializerMixin):
74     """
75     An object that symbolizes the status per client device per session.
76 
77     :ivar Optional[str] desktop?: User's status set for an active desktop application session
78     :ivar Optional[str] mobile?: User's status set for an active mobile application session
79     :ivar Optional[str] web?: User's status set for an active web application session
80     """
81 
82     __slots__ = ("_json", "desktop", "mobile", "web")
83 
84     def __init__(self, **kwargs):
85         super().__init__(**kwargs)
86 
87 
88 class Snowflake(object):
89     """
90     The Snowflake object.
91 
92     This snowflake object will have features closely related to the
93     API schema. In turn, compared to regular d.py's treated snowflakes,
94     these will be treated as strings.
95 
96 
97     (Basically, snowflakes will be treated as if they were from d.py 0.16.12)
98 
99     .. note::
100         You can still provide integers to them, to ensure ease of use of transition and/or
101         if discord API for some odd reason will switch to integer.
102     """
103 
104     __slots__ = "_snowflake"
105 
106     # Slotting properties are pointless, they are not in-memory
107     # and are instead computed in-model.
108 
109     def __init__(self, snowflake: Union[int, str, "Snowflake"]) -> None:
110         self._snowflake = str(snowflake)
111 
112     def __str__(self):
113         # This is overridden for model comparison between IDs.
114         return self._snowflake
115 
116     def __int__(self):
117         # Easier to use for HTTP calling instead of int(str(obj)).
118         return int(self._snowflake)
119 
120     @property
121     def increment(self) -> int:
122         """
123         This is the 'Increment' portion of the snowflake.
124         This is incremented for every ID generated on that process.
125 
126         :return: An integer denoting the increment.
127         """
128         return int(self._snowflake) & 0xFFF
129 
130     @property
131     def worker_id(self) -> int:
132         """
133         This is the Internal Worker ID of the snowflake.
134         :return: An integer denoting the internal worker ID.
135         """
136         return (int(self._snowflake) & 0x3E0000) >> 17
137 
138     @property
139     def process_id(self) -> int:
140         """
141         This is the Internal Process ID of the snowflake.
142         :return: An integer denoting the internal process ID.
143         """
144         return (int(self._snowflake) & 0x1F000) >> 12
145 
146     @property
147     def epoch(self) -> float:
148         """
149         This is the Timestamp field of the snowflake.
150 
151         :return: A float containing the seconds since Discord Epoch.
152         """
153         return floor(((int(self._snowflake) >> 22) + 1420070400000) / 1000)
154 
155     @property
156     def timestamp(self) -> datetime.datetime:
157         """
158         The Datetime object variation of the Timestamp field of the snowflake.
159 
160         :return: The converted Datetime object from the Epoch. This respects UTC.
161         """
162         return datetime.datetime.utcfromtimestamp(self.epoch)
163 
164     # ---- Extra stuff that might be helpful.
165 
166     def __hash__(self):
167         return hash(self._snowflake)
168 
169     # Do we need not equals, equals, gt/lt/ge/le?
170     # If so, list them under. By Discord API this may not be needed
171     # but end users might.
172 
173 
174 class Format:
175     """
176     This object is used to respectively format markdown strings
177     provided by the WYSIWYG text editor for ease-of-accessibility
178     and simple implementations into bots.
179 
180     .. note::
181         All base strings are given brackets before being f-string
182         parsable to make conversion simplified.
183 
184     .. warning::
185         the ``stylize()`` method must be used if you're actually
186         looking to give a **str** specific result.
187     """
188 
189     USER = "<@%s>"
190     USER_NICK = "<@!%s>"
191     CHANNEL = "<#%s>"
192     ROLE = "<@&%s>"
193     EMOJI = "<:%s:%d>"
194     EMOJI_ANIMATED = "<a:%s:%d>"
195     TIMESTAMP = "<t:%s>"
196     TIMESTAMP_SHORT_T = "<t:%s:t>"
197     TIMESTAMP_LONG_T = "<t:%s:T>"
198     TIMESTAMP_SHORT_D = "<t:%s:d>"
199     TIMESTAMP_LONG_D = "<t:%s:D>"
200     TIMESTAMP_SHORT_DT = TIMESTAMP
201     TIMESTAMP_LONG_DT = "<t:%s:F>"
202     TIMESTAMP_RELATIVE = "<t:%s:R>"
203 
204     @classmethod
205     def stylize(cls, format: str, **kwargs) -> str:
206         r"""
207         This takes a format style from the object and
208         converts it into a usable string for ease.
209 
210         :param format: The format string to use.
211         :type format: str
212         :param \**kwargs: Multiple key-word arguments to use, where key=value is format=value.
213         :type \**kwargs: dict
214         :return: The formatted string.
215         :rtype: str
216         """
217         new: str = f""  # noqa: F541
218         for kwarg in kwargs:
219             if format == kwarg:
220                 new %= format
221         return new
222 
223 
224 class MISSING:
225     """A pseudosentinel based from an empty object. This does violate PEP, but, I don't care."""
226 
227     ...
228
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/interactions/api/models/misc.py b/interactions/api/models/misc.py
--- a/interactions/api/models/misc.py
+++ b/interactions/api/models/misc.py
@@ -171,54 +171,55 @@
     # but end users might.
 
 
-class Format:
+class Color(object):
     """
-    This object is used to respectively format markdown strings
-    provided by the WYSIWYG text editor for ease-of-accessibility
-    and simple implementations into bots.
+    An object representing Discord branding colors.
 
     .. note::
-        All base strings are given brackets before being f-string
-        parsable to make conversion simplified.
-
-    .. warning::
-        the ``stylize()`` method must be used if you're actually
-        looking to give a **str** specific result.
+        This object only intends to cover the branding colors
+        and no others. The main reason behind this is due to
+        the current accepted standard of using hex codes or other
+        custom-defined colors.
     """
 
-    USER = "<@%s>"
-    USER_NICK = "<@!%s>"
-    CHANNEL = "<#%s>"
-    ROLE = "<@&%s>"
-    EMOJI = "<:%s:%d>"
-    EMOJI_ANIMATED = "<a:%s:%d>"
-    TIMESTAMP = "<t:%s>"
-    TIMESTAMP_SHORT_T = "<t:%s:t>"
-    TIMESTAMP_LONG_T = "<t:%s:T>"
-    TIMESTAMP_SHORT_D = "<t:%s:d>"
-    TIMESTAMP_LONG_D = "<t:%s:D>"
-    TIMESTAMP_SHORT_DT = TIMESTAMP
-    TIMESTAMP_LONG_DT = "<t:%s:F>"
-    TIMESTAMP_RELATIVE = "<t:%s:R>"
-
-    @classmethod
-    def stylize(cls, format: str, **kwargs) -> str:
-        r"""
-        This takes a format style from the object and
-        converts it into a usable string for ease.
-
-        :param format: The format string to use.
-        :type format: str
-        :param \**kwargs: Multiple key-word arguments to use, where key=value is format=value.
-        :type \**kwargs: dict
-        :return: The formatted string.
-        :rtype: str
-        """
-        new: str = f""  # noqa: F541
-        for kwarg in kwargs:
-            if format == kwarg:
-                new %= format
-        return new
+    @property
+    def blurple(self) -> hex:
+        """Returns a hexadecimal value of the blurple color."""
+        return 0x5865F2
+
+    @property
+    def green(self) -> hex:
+        """Returns a hexadecimal value of the green color."""
+        return 0x57F287
+
+    @property
+    def yellow(self) -> hex:
+        """Returns a hexadecimal value of the yellow color."""
+        return 0xFEE75C
+
+    @property
+    def fuchsia(self) -> hex:
+        """Returns a hexadecimal value of the fuchsia color."""
+        return 0xEB459E
+
+    @property
+    def red(self) -> hex:
+        """Returns a hexadecimal value of the red color."""
+        return 0xED4245
+
+    # I can't imagine any bot developers actually using these.
+    # If they don't know white is ff and black is 00, something's seriously
+    # wrong.
+
+    @property
+    def white(self) -> hex:
+        """Returns a hexadecimal value of the white color."""
+        return 0xFFFFFF
+
+    @property
+    def black(self) -> hex:
+        """Returns a hexadecimal value of the black color."""
+        return 0x000000
 
 
 class MISSING:

{"golden_diff": "diff --git a/interactions/api/models/misc.py b/interactions/api/models/misc.py\n--- a/interactions/api/models/misc.py\n+++ b/interactions/api/models/misc.py\n@@ -171,54 +171,55 @@\n     # but end users might.\n \n \n-class Format:\n+class Color(object):\n     \"\"\"\n-    This object is used to respectively format markdown strings\n-    provided by the WYSIWYG text editor for ease-of-accessibility\n-    and simple implementations into bots.\n+    An object representing Discord branding colors.\n \n     .. note::\n-        All base strings are given brackets before being f-string\n-        parsable to make conversion simplified.\n-\n-    .. warning::\n-        the ``stylize()`` method must be used if you're actually\n-        looking to give a **str** specific result.\n+        This object only intends to cover the branding colors\n+        and no others. The main reason behind this is due to\n+        the current accepted standard of using hex codes or other\n+        custom-defined colors.\n     \"\"\"\n \n-    USER = \"<@%s>\"\n-    USER_NICK = \"<@!%s>\"\n-    CHANNEL = \"<#%s>\"\n-    ROLE = \"<@&%s>\"\n-    EMOJI = \"<:%s:%d>\"\n-    EMOJI_ANIMATED = \"<a:%s:%d>\"\n-    TIMESTAMP = \"<t:%s>\"\n-    TIMESTAMP_SHORT_T = \"<t:%s:t>\"\n-    TIMESTAMP_LONG_T = \"<t:%s:T>\"\n-    TIMESTAMP_SHORT_D = \"<t:%s:d>\"\n-    TIMESTAMP_LONG_D = \"<t:%s:D>\"\n-    TIMESTAMP_SHORT_DT = TIMESTAMP\n-    TIMESTAMP_LONG_DT = \"<t:%s:F>\"\n-    TIMESTAMP_RELATIVE = \"<t:%s:R>\"\n-\n-    @classmethod\n-    def stylize(cls, format: str, **kwargs) -> str:\n-        r\"\"\"\n-        This takes a format style from the object and\n-        converts it into a usable string for ease.\n-\n-        :param format: The format string to use.\n-        :type format: str\n-        :param \\**kwargs: Multiple key-word arguments to use, where key=value is format=value.\n-        :type \\**kwargs: dict\n-        :return: The formatted string.\n-        :rtype: str\n-        \"\"\"\n-        new: str = f\"\"  # noqa: F541\n-        for kwarg in kwargs:\n-            if format == kwarg:\n-                new %= format\n-        return new\n+    @property\n+    def blurple(self) -> hex:\n+        \"\"\"Returns a hexadecimal value of the blurple color.\"\"\"\n+        return 0x5865F2\n+\n+    @property\n+    def green(self) -> hex:\n+        \"\"\"Returns a hexadecimal value of the green color.\"\"\"\n+        return 0x57F287\n+\n+    @property\n+    def yellow(self) -> hex:\n+        \"\"\"Returns a hexadecimal value of the yellow color.\"\"\"\n+        return 0xFEE75C\n+\n+    @property\n+    def fuchsia(self) -> hex:\n+        \"\"\"Returns a hexadecimal value of the fuchsia color.\"\"\"\n+        return 0xEB459E\n+\n+    @property\n+    def red(self) -> hex:\n+        \"\"\"Returns a hexadecimal value of the red color.\"\"\"\n+        return 0xED4245\n+\n+    # I can't imagine any bot developers actually using these.\n+    # If they don't know white is ff and black is 00, something's seriously\n+    # wrong.\n+\n+    @property\n+    def white(self) -> hex:\n+        \"\"\"Returns a hexadecimal value of the white color.\"\"\"\n+        return 0xFFFFFF\n+\n+    @property\n+    def black(self) -> hex:\n+        \"\"\"Returns a hexadecimal value of the black color.\"\"\"\n+        return 0x000000\n \n \n class MISSING:\n", "issue": "[REQUEST] Add a basic `Color` object.\n### Describe the feature.\n\nPeople may want to be able to easily call upon colors. Since it should be at least an accepted concept, I am wanting to add a basic `Color` object that includes the official branding colors. Please note that other colors that are custom-defined are ideally frowned on for this idea since the core library is about making implementations strict to what Discord offer, which we can argue debatably with the branding colors.\n\n### Code of Conduct\n\n- [X] I agree to follow the contribution requirements.\n", "before_files": [{"content": "# TODO: This is post-v4.\n# TODO: Reorganise these models based on which big obj uses little obj\n# TODO: Potentially rename some model references to enums, if applicable\n# TODO: Reorganise mixins to its own thing, currently placed here because circular import sucks.\n# also, it should be serialiser* but idk, fl0w'd say something if I left it like that. /shrug\nimport datetime\nfrom logging import Logger\nfrom math import floor\nfrom typing import Union\n\nfrom interactions.base import get_logger\n\nlog: Logger = get_logger(\"mixin\")\n\n\nclass DictSerializerMixin(object):\n    \"\"\"\n    The purpose of this mixin is to be subclassed.\n\n    .. note::\n        On subclass, it:\n            -- From kwargs (received from the Discord API response), add it to the `_json` attribute\n            such that it can be reused by other libraries/extensions\n            -- Aids in attributing the kwargs to actual model attributes, i.e. `User.id`\n            -- Dynamically sets attributes not given to kwargs but slotted to None, signifying that it doesn't exist.\n\n    .. warning::\n        This does NOT convert them to its own data types, i.e. timestamps, or User within Member. This is left by\n        the object that's using the mixin.\n    \"\"\"\n\n    __slots__ = \"_json\"\n\n    def __init__(self, **kwargs):\n        self._json = kwargs\n        # for key in kwargs:\n        #    setattr(self, key, kwargs[key])\n\n        for key in kwargs:\n            if key in self.__slots__ if hasattr(self, \"__slots__\") else True:\n                # else case if the mixin is used outside of this library and/or SDK.\n                setattr(self, key, kwargs[key])\n            else:\n                log.warning(\n                    f\"Attribute {key} is missing from the {self.__class__.__name__} data model, skipping.\"\n                )\n                # work on message printout? Effective, but I think it should be a little bit more friendly\n                # towards end users\n\n        # if self.__slots__ is not None:  # safeguard, runtime check\n        if hasattr(self, \"__slots__\"):\n            for _attr in self.__slots__:\n                if not hasattr(self, _attr):\n                    setattr(self, _attr, None)\n\n\nclass Overwrite(DictSerializerMixin):\n    \"\"\"\n    This is used for the PermissionOverride object.\n\n    :ivar int id: Role or User ID\n    :ivar int type: Type that corresponds ot the ID; 0 for role and 1 for member.\n    :ivar str allow: Permission bit set.\n    :ivar str deny: Permission bit set.\n    \"\"\"\n\n    __slots__ = (\"_json\", \"id\", \"type\", \"allow\", \"deny\")\n\n    def __init__(self, **kwargs):\n        super().__init__(**kwargs)\n\n\nclass ClientStatus(DictSerializerMixin):\n    \"\"\"\n    An object that symbolizes the status per client device per session.\n\n    :ivar Optional[str] desktop?: User's status set for an active desktop application session\n    :ivar Optional[str] mobile?: User's status set for an active mobile application session\n    :ivar Optional[str] web?: User's status set for an active web application session\n    \"\"\"\n\n    __slots__ = (\"_json\", \"desktop\", \"mobile\", \"web\")\n\n    def __init__(self, **kwargs):\n        super().__init__(**kwargs)\n\n\nclass Snowflake(object):\n    \"\"\"\n    The Snowflake object.\n\n    This snowflake object will have features closely related to the\n    API schema. In turn, compared to regular d.py's treated snowflakes,\n    these will be treated as strings.\n\n\n    (Basically, snowflakes will be treated as if they were from d.py 0.16.12)\n\n    .. note::\n        You can still provide integers to them, to ensure ease of use of transition and/or\n        if discord API for some odd reason will switch to integer.\n    \"\"\"\n\n    __slots__ = \"_snowflake\"\n\n    # Slotting properties are pointless, they are not in-memory\n    # and are instead computed in-model.\n\n    def __init__(self, snowflake: Union[int, str, \"Snowflake\"]) -> None:\n        self._snowflake = str(snowflake)\n\n    def __str__(self):\n        # This is overridden for model comparison between IDs.\n        return self._snowflake\n\n    def __int__(self):\n        # Easier to use for HTTP calling instead of int(str(obj)).\n        return int(self._snowflake)\n\n    @property\n    def increment(self) -> int:\n        \"\"\"\n        This is the 'Increment' portion of the snowflake.\n        This is incremented for every ID generated on that process.\n\n        :return: An integer denoting the increment.\n        \"\"\"\n        return int(self._snowflake) & 0xFFF\n\n    @property\n    def worker_id(self) -> int:\n        \"\"\"\n        This is the Internal Worker ID of the snowflake.\n        :return: An integer denoting the internal worker ID.\n        \"\"\"\n        return (int(self._snowflake) & 0x3E0000) >> 17\n\n    @property\n    def process_id(self) -> int:\n        \"\"\"\n        This is the Internal Process ID of the snowflake.\n        :return: An integer denoting the internal process ID.\n        \"\"\"\n        return (int(self._snowflake) & 0x1F000) >> 12\n\n    @property\n    def epoch(self) -> float:\n        \"\"\"\n        This is the Timestamp field of the snowflake.\n\n        :return: A float containing the seconds since Discord Epoch.\n        \"\"\"\n        return floor(((int(self._snowflake) >> 22) + 1420070400000) / 1000)\n\n    @property\n    def timestamp(self) -> datetime.datetime:\n        \"\"\"\n        The Datetime object variation of the Timestamp field of the snowflake.\n\n        :return: The converted Datetime object from the Epoch. This respects UTC.\n        \"\"\"\n        return datetime.datetime.utcfromtimestamp(self.epoch)\n\n    # ---- Extra stuff that might be helpful.\n\n    def __hash__(self):\n        return hash(self._snowflake)\n\n    # Do we need not equals, equals, gt/lt/ge/le?\n    # If so, list them under. By Discord API this may not be needed\n    # but end users might.\n\n\nclass Format:\n    \"\"\"\n    This object is used to respectively format markdown strings\n    provided by the WYSIWYG text editor for ease-of-accessibility\n    and simple implementations into bots.\n\n    .. note::\n        All base strings are given brackets before being f-string\n        parsable to make conversion simplified.\n\n    .. warning::\n        the ``stylize()`` method must be used if you're actually\n        looking to give a **str** specific result.\n    \"\"\"\n\n    USER = \"<@%s>\"\n    USER_NICK = \"<@!%s>\"\n    CHANNEL = \"<#%s>\"\n    ROLE = \"<@&%s>\"\n    EMOJI = \"<:%s:%d>\"\n    EMOJI_ANIMATED = \"<a:%s:%d>\"\n    TIMESTAMP = \"<t:%s>\"\n    TIMESTAMP_SHORT_T = \"<t:%s:t>\"\n    TIMESTAMP_LONG_T = \"<t:%s:T>\"\n    TIMESTAMP_SHORT_D = \"<t:%s:d>\"\n    TIMESTAMP_LONG_D = \"<t:%s:D>\"\n    TIMESTAMP_SHORT_DT = TIMESTAMP\n    TIMESTAMP_LONG_DT = \"<t:%s:F>\"\n    TIMESTAMP_RELATIVE = \"<t:%s:R>\"\n\n    @classmethod\n    def stylize(cls, format: str, **kwargs) -> str:\n        r\"\"\"\n        This takes a format style from the object and\n        converts it into a usable string for ease.\n\n        :param format: The format string to use.\n        :type format: str\n        :param \\**kwargs: Multiple key-word arguments to use, where key=value is format=value.\n        :type \\**kwargs: dict\n        :return: The formatted string.\n        :rtype: str\n        \"\"\"\n        new: str = f\"\"  # noqa: F541\n        for kwarg in kwargs:\n            if format == kwarg:\n                new %= format\n        return new\n\n\nclass MISSING:\n    \"\"\"A pseudosentinel based from an empty object. This does violate PEP, but, I don't care.\"\"\"\n\n    ...\n", "path": "interactions/api/models/misc.py"}], "after_files": [{"content": "# TODO: This is post-v4.\n# TODO: Reorganise these models based on which big obj uses little obj\n# TODO: Potentially rename some model references to enums, if applicable\n# TODO: Reorganise mixins to its own thing, currently placed here because circular import sucks.\n# also, it should be serialiser* but idk, fl0w'd say something if I left it like that. /shrug\nimport datetime\nfrom logging import Logger\nfrom math import floor\nfrom typing import Union\n\nfrom interactions.base import get_logger\n\nlog: Logger = get_logger(\"mixin\")\n\n\nclass DictSerializerMixin(object):\n    \"\"\"\n    The purpose of this mixin is to be subclassed.\n\n    .. note::\n        On subclass, it:\n            -- From kwargs (received from the Discord API response), add it to the `_json` attribute\n            such that it can be reused by other libraries/extensions\n            -- Aids in attributing the kwargs to actual model attributes, i.e. `User.id`\n            -- Dynamically sets attributes not given to kwargs but slotted to None, signifying that it doesn't exist.\n\n    .. warning::\n        This does NOT convert them to its own data types, i.e. timestamps, or User within Member. This is left by\n        the object that's using the mixin.\n    \"\"\"\n\n    __slots__ = \"_json\"\n\n    def __init__(self, **kwargs):\n        self._json = kwargs\n        # for key in kwargs:\n        #    setattr(self, key, kwargs[key])\n\n        for key in kwargs:\n            if key in self.__slots__ if hasattr(self, \"__slots__\") else True:\n                # else case if the mixin is used outside of this library and/or SDK.\n                setattr(self, key, kwargs[key])\n            else:\n                log.warning(\n                    f\"Attribute {key} is missing from the {self.__class__.__name__} data model, skipping.\"\n                )\n                # work on message printout? Effective, but I think it should be a little bit more friendly\n                # towards end users\n\n        # if self.__slots__ is not None:  # safeguard, runtime check\n        if hasattr(self, \"__slots__\"):\n            for _attr in self.__slots__:\n                if not hasattr(self, _attr):\n                    setattr(self, _attr, None)\n\n\nclass Overwrite(DictSerializerMixin):\n    \"\"\"\n    This is used for the PermissionOverride object.\n\n    :ivar int id: Role or User ID\n    :ivar int type: Type that corresponds ot the ID; 0 for role and 1 for member.\n    :ivar str allow: Permission bit set.\n    :ivar str deny: Permission bit set.\n    \"\"\"\n\n    __slots__ = (\"_json\", \"id\", \"type\", \"allow\", \"deny\")\n\n    def __init__(self, **kwargs):\n        super().__init__(**kwargs)\n\n\nclass ClientStatus(DictSerializerMixin):\n    \"\"\"\n    An object that symbolizes the status per client device per session.\n\n    :ivar Optional[str] desktop?: User's status set for an active desktop application session\n    :ivar Optional[str] mobile?: User's status set for an active mobile application session\n    :ivar Optional[str] web?: User's status set for an active web application session\n    \"\"\"\n\n    __slots__ = (\"_json\", \"desktop\", \"mobile\", \"web\")\n\n    def __init__(self, **kwargs):\n        super().__init__(**kwargs)\n\n\nclass Snowflake(object):\n    \"\"\"\n    The Snowflake object.\n\n    This snowflake object will have features closely related to the\n    API schema. In turn, compared to regular d.py's treated snowflakes,\n    these will be treated as strings.\n\n\n    (Basically, snowflakes will be treated as if they were from d.py 0.16.12)\n\n    .. note::\n        You can still provide integers to them, to ensure ease of use of transition and/or\n        if discord API for some odd reason will switch to integer.\n    \"\"\"\n\n    __slots__ = \"_snowflake\"\n\n    # Slotting properties are pointless, they are not in-memory\n    # and are instead computed in-model.\n\n    def __init__(self, snowflake: Union[int, str, \"Snowflake\"]) -> None:\n        self._snowflake = str(snowflake)\n\n    def __str__(self):\n        # This is overridden for model comparison between IDs.\n        return self._snowflake\n\n    def __int__(self):\n        # Easier to use for HTTP calling instead of int(str(obj)).\n        return int(self._snowflake)\n\n    @property\n    def increment(self) -> int:\n        \"\"\"\n        This is the 'Increment' portion of the snowflake.\n        This is incremented for every ID generated on that process.\n\n        :return: An integer denoting the increment.\n        \"\"\"\n        return int(self._snowflake) & 0xFFF\n\n    @property\n    def worker_id(self) -> int:\n        \"\"\"\n        This is the Internal Worker ID of the snowflake.\n        :return: An integer denoting the internal worker ID.\n        \"\"\"\n        return (int(self._snowflake) & 0x3E0000) >> 17\n\n    @property\n    def process_id(self) -> int:\n        \"\"\"\n        This is the Internal Process ID of the snowflake.\n        :return: An integer denoting the internal process ID.\n        \"\"\"\n        return (int(self._snowflake) & 0x1F000) >> 12\n\n    @property\n    def epoch(self) -> float:\n        \"\"\"\n        This is the Timestamp field of the snowflake.\n\n        :return: A float containing the seconds since Discord Epoch.\n        \"\"\"\n        return floor(((int(self._snowflake) >> 22) + 1420070400000) / 1000)\n\n    @property\n    def timestamp(self) -> datetime.datetime:\n        \"\"\"\n        The Datetime object variation of the Timestamp field of the snowflake.\n\n        :return: The converted Datetime object from the Epoch. This respects UTC.\n        \"\"\"\n        return datetime.datetime.utcfromtimestamp(self.epoch)\n\n    # ---- Extra stuff that might be helpful.\n\n    def __hash__(self):\n        return hash(self._snowflake)\n\n    # Do we need not equals, equals, gt/lt/ge/le?\n    # If so, list them under. By Discord API this may not be needed\n    # but end users might.\n\n\nclass Color(object):\n    \"\"\"\n    An object representing Discord branding colors.\n\n    .. note::\n        This object only intends to cover the branding colors\n        and no others. The main reason behind this is due to\n        the current accepted standard of using hex codes or other\n        custom-defined colors.\n    \"\"\"\n\n    @property\n    def blurple(self) -> hex:\n        \"\"\"Returns a hexadecimal value of the blurple color.\"\"\"\n        return 0x5865F2\n\n    @property\n    def green(self) -> hex:\n        \"\"\"Returns a hexadecimal value of the green color.\"\"\"\n        return 0x57F287\n\n    @property\n    def yellow(self) -> hex:\n        \"\"\"Returns a hexadecimal value of the yellow color.\"\"\"\n        return 0xFEE75C\n\n    @property\n    def fuchsia(self) -> hex:\n        \"\"\"Returns a hexadecimal value of the fuchsia color.\"\"\"\n        return 0xEB459E\n\n    @property\n    def red(self) -> hex:\n        \"\"\"Returns a hexadecimal value of the red color.\"\"\"\n        return 0xED4245\n\n    # I can't imagine any bot developers actually using these.\n    # If they don't know white is ff and black is 00, something's seriously\n    # wrong.\n\n    @property\n    def white(self) -> hex:\n        \"\"\"Returns a hexadecimal value of the white color.\"\"\"\n        return 0xFFFFFF\n\n    @property\n    def black(self) -> hex:\n        \"\"\"Returns a hexadecimal value of the black color.\"\"\"\n        return 0x000000\n\n\nclass MISSING:\n    \"\"\"A pseudosentinel based from an empty object. This does violate PEP, but, I don't care.\"\"\"\n\n    ...\n", "path": "interactions/api/models/misc.py"}]}