diff options
| author | khazhyk <[email protected]> | 2020-09-07 20:04:11 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2020-09-07 23:04:11 -0400 |
| commit | a309088ae4be7c2e837e5d180822c0f9060fe86d (patch) | |
| tree | 983ed73d224e91c0e79c8156e20537e6337fb6a7 | |
| parent | [commands] Update Bot.command() decorator docs (diff) | |
| download | discord.py-a309088ae4be7c2e837e5d180822c0f9060fe86d.tar.xz discord.py-a309088ae4be7c2e837e5d180822c0f9060fe86d.zip | |
Add fetch_message_fast using history endpoint
| -rw-r--r-- | discord/abc.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/discord/abc.py b/discord/abc.py index d97b8efd..698582e4 100644 --- a/discord/abc.py +++ b/discord/abc.py @@ -930,6 +930,7 @@ class Messageable(metaclass=abc.ABCMeta): """ return Typing(self) + @utils.deprecated('fetch_message_fast') async def fetch_message(self, id): """|coro| @@ -937,6 +938,8 @@ class Messageable(metaclass=abc.ABCMeta): This can only be used by bot accounts. + Prefer using :meth:`fetch_message_fast`. + Parameters ------------ id: :class:`int` @@ -961,6 +964,40 @@ class Messageable(metaclass=abc.ABCMeta): data = await self._state.http.get_message(channel.id, id) return self._state.create_message(channel=channel, data=data) + async def fetch_message_fast(self, id): + """|coro| + + Retrieves a single :class:`~discord.Message` from the destination, using + the history endpoint. + + .. versionadded:: 1.5 + + Parameters + ------------ + id: :class:`int` + The message ID to look for. + + Raises + -------- + ~discord.NotFound + The specified channel was not found. + ~discord.Forbidden + You do not have permissions to get channel message history. + ~discord.HTTPException + The request to get message history failed. + + Returns + -------- + Optional[:class:`~discord.Message`] + The message asked for, or None if there is no match. + """ + + channel = await self._get_channel() + data = await self._state.http.logs_from(channel.id, limit=1, around=id) + if data and int(data[0]['id']) == id: + return self._state.create_message(channel=channel, data=data[0]) + return None + async def pins(self): """|coro| |