|
25 | 25 |
|
26 | 26 | from __future__ import annotations
|
27 | 27 |
|
| 28 | +import datetime |
| 29 | +from functools import cached_property |
28 | 30 | from typing import TYPE_CHECKING, Any, Callable, ClassVar, Generator, TypeVar
|
29 | 31 |
|
30 | 32 | from . import enums, utils
|
|
44 | 46 |
|
45 | 47 |
|
46 | 48 | if TYPE_CHECKING:
|
47 |
| - import datetime |
48 |
| - |
49 | 49 | from . import abc
|
50 | 50 | from .emoji import GuildEmoji
|
51 | 51 | from .guild import Guild
|
@@ -209,6 +209,14 @@ def _transform_trigger_metadata(
|
209 | 209 | return AutoModTriggerMetadata.from_dict(data)
|
210 | 210 |
|
211 | 211 |
|
| 212 | +def _transform_communication_disabled_until( |
| 213 | + entry: AuditLogEntry, data: str |
| 214 | +) -> datetime.datetime | None: |
| 215 | + if data: |
| 216 | + return datetime.datetime.fromisoformat(data) |
| 217 | + return None |
| 218 | + |
| 219 | + |
212 | 220 | class AuditLogDiff:
|
213 | 221 | def __len__(self) -> int:
|
214 | 222 | return len(self.__dict__)
|
@@ -281,6 +289,7 @@ class AuditLogChanges:
|
281 | 289 | "trigger_metadata": (None, _transform_trigger_metadata),
|
282 | 290 | "exempt_roles": (None, _transform_roles),
|
283 | 291 | "exempt_channels": (None, _transform_channels),
|
| 292 | + "communication_disabled_until": (None, _transform_communication_disabled_until), |
284 | 293 | }
|
285 | 294 |
|
286 | 295 | def __init__(
|
@@ -636,7 +645,7 @@ def category(self) -> enums.AuditLogActionCategory:
|
636 | 645 | """The category of the action, if applicable."""
|
637 | 646 | return self.action.category
|
638 | 647 |
|
639 |
| - @property |
| 648 | + @cached_property |
640 | 649 | def changes(self) -> AuditLogChanges:
|
641 | 650 | """The list of changes this entry has."""
|
642 | 651 | obj = AuditLogChanges(self, self._changes, state=self._state)
|
|
0 commit comments