aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkhazhyk <[email protected]>2020-09-07 20:04:11 -0700
committerGitHub <[email protected]>2020-09-07 23:04:11 -0400
commita309088ae4be7c2e837e5d180822c0f9060fe86d (patch)
tree983ed73d224e91c0e79c8156e20537e6337fb6a7
parent[commands] Update Bot.command() decorator docs (diff)
downloaddiscord.py-a309088ae4be7c2e837e5d180822c0f9060fe86d.tar.xz
discord.py-a309088ae4be7c2e837e5d180822c0f9060fe86d.zip
Add fetch_message_fast using history endpoint
-rw-r--r--discord/abc.py37
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|