diff --git a/discord/abc.py b/discord/abc.py index 7cc80f52e..99985880a 100644 --- a/discord/abc.py +++ b/discord/abc.py @@ -319,13 +319,14 @@ async def _handle_message_search( if offset < 0: raise ValueError('offset must be greater than or equal to 0') + _channels = {c.id: c for c in channels} if channels else {} + # Guild channels must go through the guild search endpoint _state = destination._state endpoint = _state.http.search_guild - entity_id = None - channel = None if isinstance(destination, Messageable): channel = await destination._get_channel() + _channels[channel.id] = channel if isinstance(channel, PrivateChannel): endpoint = _state.http.search_channel entity_id = channel.id @@ -334,13 +335,10 @@ async def _handle_message_search( entity_id = getattr(channel.guild, 'id', getattr(channel, 'guild_id', None)) else: entity_id = destination.id + if not entity_id: raise ValueError('Could not resolve channel guild ID') - _channels = {c.id: c for c in channels} if channels else {} - if channel: - _channels[channel.id] = channel - def _resolve_channel(message: PartialMessagePayload, /): _channel, _ = _state._get_guild_channel(message) if isinstance(_channel, PartialMessageable) and _channel.id in _channels: diff --git a/discord/message.py b/discord/message.py index e5c127b14..a2e94f942 100644 --- a/discord/message.py +++ b/discord/message.py @@ -691,7 +691,7 @@ class PartialMessage(Hashable): self.guild: Optional[Guild] = getattr(channel, 'guild', None) self.guild_id: Optional[int] = self.guild.id if self.guild else None if hasattr(channel, 'guild_id'): - if self.guild_id: + if self.guild_id is not None: channel.guild_id = self.guild_id # type: ignore else: self.guild_id = channel.guild_id # type: ignore