Add Guild.fetch_channel
This commit is contained in:
		| @@ -1401,6 +1401,51 @@ class Guild(Hashable): | |||||||
|             reason=data['reason'] |             reason=data['reason'] | ||||||
|         ) |         ) | ||||||
|  |  | ||||||
|  |     async def fetch_channel(self, channel_id: int, /) -> abc.GuildChannel: | ||||||
|  |         """|coro| | ||||||
|  |  | ||||||
|  |         Retrieves a :class:`.abc.GuildChannel` with the specified ID. | ||||||
|  |  | ||||||
|  |         .. note:: | ||||||
|  |  | ||||||
|  |             This method is an API call. For general usage, consider :meth:`get_channel` instead. | ||||||
|  |  | ||||||
|  |         .. versionadded:: 2.0 | ||||||
|  |  | ||||||
|  |         Raises | ||||||
|  |         ------- | ||||||
|  |         :exc:`.InvalidData` | ||||||
|  |             An unknown channel type was received from Discord | ||||||
|  |             or the guild the channel belongs to is not the same | ||||||
|  |             as the one in this object points to. | ||||||
|  |         :exc:`.HTTPException` | ||||||
|  |             Retrieving the channel failed. | ||||||
|  |         :exc:`.NotFound` | ||||||
|  |             Invalid Channel ID. | ||||||
|  |         :exc:`.Forbidden` | ||||||
|  |             You do not have permission to fetch this channel. | ||||||
|  |  | ||||||
|  |         Returns | ||||||
|  |         -------- | ||||||
|  |         :class:`.abc.GuildChannel` | ||||||
|  |             The channel from the ID. | ||||||
|  |         """ | ||||||
|  |         data = await self._state.http.get_channel(channel_id) | ||||||
|  |  | ||||||
|  |         factory, ch_type = _channel_factory(data['type']) | ||||||
|  |         if factory is None: | ||||||
|  |             raise InvalidData('Unknown channel type {type} for channel ID {id}.'.format_map(data)) | ||||||
|  |  | ||||||
|  |         if ch_type in (ChannelType.group, ChannelType.private): | ||||||
|  |             raise InvalidData('Channel ID resolved to a private channel') | ||||||
|  |  | ||||||
|  |         guild_id = int(data['guild_id']) | ||||||
|  |         if self.id != guild_id: | ||||||
|  |             raise InvalidData('Guild ID resolved to a different guild') | ||||||
|  |  | ||||||
|  |         channel: abc.GuildChannel = factory(guild=self, state=self._state, data=data)  # type: ignore | ||||||
|  |         return channel | ||||||
|  |  | ||||||
|     async def bans(self): |     async def bans(self): | ||||||
|         """|coro| |         """|coro| | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user