From cd5cbc615a8c034e31d64113013a83bbe03cff09 Mon Sep 17 00:00:00 2001 From: Developer Anonymous Date: Fri, 7 Jun 2024 16:17:03 +0200 Subject: [PATCH] ........ --- discord/scheduled_event.py | 25 ++++++++++++++++++------- discord/types/scheduled_event.py | 28 +++++++++++----------------- 2 files changed, 29 insertions(+), 24 deletions(-) diff --git a/discord/scheduled_event.py b/discord/scheduled_event.py index 9a10defd2..39651d4f3 100644 --- a/discord/scheduled_event.py +++ b/discord/scheduled_event.py @@ -193,6 +193,13 @@ class ScheduledEventRecurrenceRule: def edit(self): ... # TODO: finish this thingy + @classmethod + def from_dict(cls, data: GuildScheduledEventRecurrencePayload, /) -> ScheduledEventRecurrenceRule: + ... # TODO: finish this ALSO + + def to_dict(self) -> GuildScheduledEventRecurrencePayload: + ... # TODO: guessed it, finish this also + class ScheduledEvent(Hashable): """Represents a scheduled event in a guild. @@ -289,7 +296,11 @@ class ScheduledEvent(Hashable): self._cover_image: Optional[str] = data.get('image', None) self.user_count: int = data.get('user_count', 0) self.creator_id: Optional[int] = _get_as_snowflake(data, 'creator_id') - self.recurrence: Optional[ScheduledEventRecurrence] = ScheduledEventRecurrence.from_dict(data.get('recurrence_rule')) if data.get('recurrence_rule', None) is not None else None + + try: + self.recurrence: Optional[ScheduledEventRecurrenceRule] = ScheduledEventRecurrenceRule.from_dict(data['recurrence_rule']) + except KeyError: + self.recurrence = None creator = data.get('creator') self.creator: Optional[User] = self._state.store_user(creator) if creator else None @@ -455,7 +466,7 @@ class ScheduledEvent(Hashable): status: EventStatus = ..., image: bytes = ..., reason: Optional[str] = ..., - recurrence: Optional[ScheduledEventRecurrence] = ..., + recurrence: Optional[ScheduledEventRecurrenceRule] = ..., ) -> ScheduledEvent: ... @@ -473,7 +484,7 @@ class ScheduledEvent(Hashable): status: EventStatus = ..., image: bytes = ..., reason: Optional[str] = ..., - recurrence: Optional[ScheduledEventRecurrence] = ..., + recurrence: Optional[ScheduledEventRecurrenceRule] = ..., ) -> ScheduledEvent: ... @@ -491,7 +502,7 @@ class ScheduledEvent(Hashable): image: bytes = ..., location: str, reason: Optional[str] = ..., - recurrence: Optional[ScheduledEventRecurrence] = ..., + recurrence: Optional[ScheduledEventRecurrenceRule] = ..., ) -> ScheduledEvent: ... @@ -508,7 +519,7 @@ class ScheduledEvent(Hashable): status: EventStatus = ..., image: bytes = ..., reason: Optional[str] = ..., - recurrence: Optional[ScheduledEventRecurrence] = ..., + recurrence: Optional[ScheduledEventRecurrenceRule] = ..., ) -> ScheduledEvent: ... @@ -525,7 +536,7 @@ class ScheduledEvent(Hashable): image: bytes = ..., location: str, reason: Optional[str] = ..., - recurrence: Optional[ScheduledEventRecurrence] = ..., + recurrence: Optional[ScheduledEventRecurrenceRule] = ..., ) -> ScheduledEvent: ... @@ -543,7 +554,7 @@ class ScheduledEvent(Hashable): image: bytes = MISSING, location: str = MISSING, reason: Optional[str] = None, - recurrence_rule: Optional[ScheduledEventRecurrence] = MISSING, + recurrence_rule: Optional[ScheduledEventRecurrenceRule] = MISSING, ) -> ScheduledEvent: r"""|coro| diff --git a/discord/types/scheduled_event.py b/discord/types/scheduled_event.py index 4d76c2ef6..a8efc6825 100644 --- a/discord/types/scheduled_event.py +++ b/discord/types/scheduled_event.py @@ -22,7 +22,7 @@ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ -from typing import List, Literal, Optional, TypedDict, Union, Dict +from typing import List, Literal, Optional, TypedDict, Union from typing_extensions import NotRequired from .snowflake import Snowflake @@ -36,24 +36,18 @@ class _NWeekday(TypedDict): n: int day: Literal[0, 1, 2, 3, 4, 5, 6] -class GuildScheduledEventRecurrence(TypedDict): + +class ScheduledEventRecurrenceRule(TypedDict): start: str - end: Optional[str] - frequency: int interval: int - by_weekday: Optional[List[Literal[0, 1, 2, 3, 4, 5, 6]]] # NOTE: 0 = monday; 6 = sunday - by_n_weekday: Optional[List[_NWeekday]] - by_month: Optional[List[Literal[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]]] - by_month_day: Optional[List[int]] # NOTE: day range between 1 and 31 + frequency: int + count: None # no values for this, yet by_year_day: Optional[List[int]] - count: Optional[int] # maybe? -# NOTE: for this ^ enum, it is recommended to use "calendar" module constants: MONDAY; TUESDAY; WEDNESDAY; etc -# as they follow these patterns and is a built-in module. + by_weekday: Optional[List[int]] + by_month_day: Optional[List[int]] + by_month: Optional[List[int]] + by_n_weekday: NotRequired[List[_NWeekday]] -class GuildScheduledEventExceptionCounts(TypedDict): - guild_scheduled_event_count: int - guild_scheduled_event_exception_counts: Dict[Snowflake, int] -# NOTE: This class doesn't represent any of the user counts or the 'count' param in recurrence class _BaseGuildScheduledEvent(TypedDict): id: Snowflake @@ -64,8 +58,8 @@ class _BaseGuildScheduledEvent(TypedDict): privacy_level: PrivacyLevel status: EventStatus auto_start: bool - guild_scheduled_events_exceptions: List # Didn't found items in the list yet - recurrence_rule: Optional[GuildScheduledEventRecurrence] + guild_scheduled_events_exceptions: List[int] + recurrence_rule: Optional[ScheduledEventRecurrenceRule] sku_ids: List[Snowflake] creator_id: NotRequired[Optional[Snowflake]] description: NotRequired[Optional[str]]