Skip to content

Commit c5dea90

Browse files
committed
refactor!: move some guild events
1 parent b27c61b commit c5dea90

File tree

5 files changed

+351
-173
lines changed

5 files changed

+351
-173
lines changed

discord/app/state.py

Lines changed: 0 additions & 173 deletions
Original file line numberDiff line numberDiff line change
@@ -491,113 +491,6 @@ async def query_members(
491491
)
492492
raise
493493

494-
495-
def parse_guild_member_add(self, data) -> None:
496-
guild = self._get_guild(int(data["guild_id"]))
497-
if guild is None:
498-
_log.debug(
499-
"GUILD_MEMBER_ADD referencing an unknown guild ID: %s. Discarding.",
500-
data["guild_id"],
501-
)
502-
return
503-
504-
member = Member(guild=guild, data=data, state=self)
505-
if self.member_cache_flags.joined:
506-
guild._add_member(member)
507-
508-
if guild._member_count is not None:
509-
guild._member_count += 1
510-
511-
self.dispatch("member_join", member)
512-
513-
def parse_guild_member_remove(self, data) -> None:
514-
user = self.store_user(data["user"])
515-
raw = RawMemberRemoveEvent(data, user)
516-
517-
guild = self._get_guild(int(data["guild_id"]))
518-
if guild is not None:
519-
if guild._member_count is not None:
520-
guild._member_count -= 1
521-
522-
member = guild.get_member(user.id)
523-
if member is not None:
524-
raw.user = member
525-
guild._remove_member(member) # type: ignore
526-
self.dispatch("member_remove", member)
527-
else:
528-
_log.debug(
529-
"GUILD_MEMBER_REMOVE referencing an unknown guild ID: %s. Discarding.",
530-
data["guild_id"],
531-
)
532-
self.dispatch("raw_member_remove", raw)
533-
534-
def parse_guild_member_update(self, data) -> None:
535-
guild = self._get_guild(int(data["guild_id"]))
536-
user = data["user"]
537-
user_id = int(user["id"])
538-
if guild is None:
539-
_log.debug(
540-
"GUILD_MEMBER_UPDATE referencing an unknown guild ID: %s. Discarding.",
541-
data["guild_id"],
542-
)
543-
return
544-
545-
member = guild.get_member(user_id)
546-
if member is not None:
547-
old_member = Member._copy(member)
548-
member._update(data)
549-
user_update = member._update_inner_user(user)
550-
if user_update:
551-
self.dispatch("user_update", user_update[0], user_update[1])
552-
553-
self.dispatch("member_update", old_member, member)
554-
else:
555-
if self.member_cache_flags.joined:
556-
member = Member(data=data, guild=guild, state=self)
557-
558-
# Force an update on the inner user if necessary
559-
user_update = member._update_inner_user(user)
560-
if user_update:
561-
self.dispatch("user_update", user_update[0], user_update[1])
562-
563-
guild._add_member(member)
564-
_log.debug(
565-
"GUILD_MEMBER_UPDATE referencing an unknown member ID: %s. Discarding.",
566-
user_id,
567-
)
568-
569-
def parse_guild_emojis_update(self, data) -> None:
570-
guild = self._get_guild(int(data["guild_id"]))
571-
if guild is None:
572-
_log.debug(
573-
"GUILD_EMOJIS_UPDATE referencing an unknown guild ID: %s. Discarding.",
574-
data["guild_id"],
575-
)
576-
return
577-
578-
before_emojis = guild.emojis
579-
for emoji in before_emojis:
580-
self._emojis.pop(emoji.id, None)
581-
# guild won't be None here
582-
guild.emojis = tuple(map(lambda d: self.store_emoji(guild, d), data["emojis"])) # type: ignore
583-
self.dispatch("guild_emojis_update", guild, before_emojis, guild.emojis)
584-
585-
def parse_guild_stickers_update(self, data) -> None:
586-
guild = self._get_guild(int(data["guild_id"]))
587-
if guild is None:
588-
_log.debug(
589-
("GUILD_STICKERS_UPDATE referencing an unknown guild ID: %s. Discarding."),
590-
data["guild_id"],
591-
)
592-
return
593-
594-
before_stickers = guild.stickers
595-
for emoji in before_stickers:
596-
self._stickers.pop(emoji.id, None)
597-
# guild won't be None here
598-
guild.stickers = tuple(map(lambda d: self.store_sticker(guild, d), data["stickers"])) # type: ignore
599-
self.dispatch("guild_stickers_update", guild, before_stickers, guild.stickers)
600-
601494
def _get_create_guild(self, data):
602495
if data.get("unavailable") is False:
603496
# GUILD_CREATE with unavailable in the response
@@ -638,72 +531,6 @@ async def _chunk_and_dispatch(self, guild, unavailable):
638531
else:
639532
self.dispatch("guild_join", guild)
640533

641-
def parse_guild_create(self, data) -> None:
642-
unavailable = data.get("unavailable")
643-
if unavailable is True:
644-
# joined a guild with unavailable == True so..
645-
return
646-
647-
guild = self._get_create_guild(data)
648-
649-
try:
650-
# Notify the on_ready state, if any, that this guild is complete.
651-
self._ready_state.put_nowait(guild)
652-
except AttributeError:
653-
pass
654-
else:
655-
# If we're waiting for the event, put the rest on hold
656-
return
657-
658-
# check if it requires chunking
659-
if self._guild_needs_chunking(guild):
660-
asyncio.create_task(self._chunk_and_dispatch(guild, unavailable))
661-
return
662-
663-
# Dispatch available if newly available
664-
if unavailable is False:
665-
self.dispatch("guild_available", guild)
666-
else:
667-
self.dispatch("guild_join", guild)
668-
669-
def parse_guild_update(self, data) -> None:
670-
guild = self._get_guild(int(data["id"]))
671-
if guild is not None:
672-
old_guild = copy.copy(guild)
673-
guild._from_data(data)
674-
self.dispatch("guild_update", old_guild, guild)
675-
else:
676-
_log.debug(
677-
"GUILD_UPDATE referencing an unknown guild ID: %s. Discarding.",
678-
data["id"],
679-
)
680-
681-
def parse_guild_delete(self, data) -> None:
682-
guild = self._get_guild(int(data["id"]))
683-
if guild is None:
684-
_log.debug(
685-
"GUILD_DELETE referencing an unknown guild ID: %s. Discarding.",
686-
data["id"],
687-
)
688-
return
689-
690-
if data.get("unavailable", False):
691-
# GUILD_DELETE with unavailable being True means that the
692-
# guild that was available is now currently unavailable
693-
guild.unavailable = True
694-
self.dispatch("guild_unavailable", guild)
695-
return
696-
697-
# do a cleanup of the messages cache
698-
if self._messages is not None:
699-
self._messages: Deque[Message] | None = deque(
700-
(msg for msg in self._messages if msg.guild != guild),
701-
maxlen=self.max_messages,
702-
)
703-
704-
self._remove_guild(guild)
705-
self.dispatch("guild_remove", guild)
706-
707534
def parse_guild_audit_log_entry_create(self, data) -> None:
708535
guild = self._get_guild(int(data["guild_id"]))
709536
if guild is None:

discord/audit_logs.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,7 @@ class AuditLogChanges:
272272
"exempt_channels": (None, _transform_channels),
273273
}
274274

275+
@staticmethod
275276
async def _maybe_await(func: Any) -> Any:
276277
if isawaitable(func):
277278
return await func

discord/events/automod.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131

3232
class AutoModRuleCreate(Event):
3333
__event_name__ = "AUTO_MODERATION_RULE_CREATE"
34+
__slots__ = ("rule")
3435

3536
rule: AutoModRule
3637

@@ -43,6 +44,7 @@ async def __load__(cls, data: Any, state: ConnectionState) -> Self:
4344

4445
class AutoModRuleUpdate(Event):
4546
__event_name__ = "AUTO_MODERATION_RULE_UPDATE"
47+
__slots__ = ("rule")
4648

4749
rule: AutoModRule
4850

@@ -55,6 +57,7 @@ async def __load__(cls, data: Any, state: ConnectionState) -> Self:
5557

5658
class AutoModRuleDelete(Event):
5759
__event_name__ = "AUTO_MODERATION_RULE_DELETE"
60+
__slots__ = ("rule")
5861

5962
rule: AutoModRule
6063

0 commit comments

Comments
 (0)