From fedee05a575e44101da98218c0c0f69302f91643 Mon Sep 17 00:00:00 2001 From: baronkobama <66051646+baronkobama@users.noreply.github.com> Date: Sun, 10 Jul 2022 15:08:01 -0500 Subject: [PATCH] fix: channel data being removed on Option._invoke --- discord/channel.py | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/discord/channel.py b/discord/channel.py index 10ebb42f90..22d55e0edb 100644 --- a/discord/channel.py +++ b/discord/channel.py @@ -1025,18 +1025,22 @@ def _get_voice_state_pair(self) -> Tuple[int, int]: return self.guild.id, self.id def _update(self, guild: Guild, data: Union[VoiceChannelPayload, StageChannelPayload]) -> None: + # This data will always exist self.guild = guild self.name: str = data["name"] - rtc = data.get("rtc_region") - self.rtc_region: Optional[VoiceRegion] = try_enum(VoiceRegion, rtc) if rtc is not None else None - self.video_quality_mode: VideoQualityMode = try_enum(VideoQualityMode, data.get("video_quality_mode", 1)) self.category_id: Optional[int] = utils._get_as_snowflake(data, "parent_id") - self.last_message_id: Optional[int] = utils._get_as_snowflake(data, "last_message_id") - self.position: int = data.get("position") - self.bitrate: int = data.get("bitrate") - self.user_limit: int = data.get("user_limit") - self.flags: ChannelFlags = ChannelFlags._from_value(data.get("flags", 0)) - self._fill_overwrites(data) + + # This data may be missing depending on how this object is being created/updated + if not data.pop("_invoke_flag", False): + rtc = data.get("rtc_region") + self.rtc_region: Optional[VoiceRegion] = try_enum(VoiceRegion, rtc) if rtc is not None else None + self.video_quality_mode: VideoQualityMode = try_enum(VideoQualityMode, data.get("video_quality_mode", 1)) + self.last_message_id: Optional[int] = utils._get_as_snowflake(data, "last_message_id") + self.position: int = data.get("position") + self.bitrate: int = data.get("bitrate") + self.user_limit: int = data.get("user_limit") + self.flags: ChannelFlags = ChannelFlags._from_value(data.get("flags", 0)) + self._fill_overwrites(data) @property def _sorting_bucket(self) -> int: @@ -1921,13 +1925,17 @@ def __repr__(self) -> str: return f"" def _update(self, guild: Guild, data: CategoryChannelPayload) -> None: + # This data will always exist self.guild: Guild = guild self.name: str = data["name"] self.category_id: Optional[int] = utils._get_as_snowflake(data, "parent_id") - self.nsfw: bool = data.get("nsfw", False) - self.position: int = data.get("position") - self.flags: ChannelFlags = ChannelFlags._from_value(data.get("flags", 0)) - self._fill_overwrites(data) + + # This data may be missing depending on how this object is being created/updated + if not data.pop("_invoke_flag", False): + self.nsfw: bool = data.get("nsfw", False) + self.position: int = data.get("position") + self.flags: ChannelFlags = ChannelFlags._from_value(data.get("flags", 0)) + self._fill_overwrites(data) @property def _sorting_bucket(self) -> int: