aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVexs <[email protected]>2019-04-17 17:50:50 -0500
committerRapptz <[email protected]>2019-04-18 07:56:02 -0400
commit0f48b7898785ccda76c94330f4f3e333bca92e08 (patch)
tree4619cf72fd1e4aa5a6c0bf3edf67ca36c71d3b69
parentAdd support for <:name:id> format for adding reactions (diff)
downloaddiscord.py-0f48b7898785ccda76c94330f4f3e333bca92e08.tar.xz
discord.py-0f48b7898785ccda76c94330f4f3e333bca92e08.zip
Add delay kwarg to message.delete()
Refactor delete_after kwargs to use new delay kwarg
-rw-r--r--discord/abc.py8
-rw-r--r--discord/message.py29
2 files changed, 20 insertions, 17 deletions
diff --git a/discord/abc.py b/discord/abc.py
index 015f38d2..ec668f5c 100644
--- a/discord/abc.py
+++ b/discord/abc.py
@@ -784,13 +784,7 @@ class Messageable(metaclass=abc.ABCMeta):
ret = state.create_message(channel=channel, data=data)
if delete_after is not None:
- async def delete():
- await asyncio.sleep(delete_after, loop=state.loop)
- try:
- await ret.delete()
- except HTTPException:
- pass
- asyncio.ensure_future(delete(), loop=state.loop)
+ await ret.delete(delay=delete_after)
return ret
async def trigger_typing(self):
diff --git a/discord/message.py b/discord/message.py
index a156a0cd..c46fd21d 100644
--- a/discord/message.py
+++ b/discord/message.py
@@ -563,7 +563,7 @@ class Message:
else:
return '{0.author.name} started a call \N{EM DASH} Join the call.'.format(self)
- async def delete(self):
+ async def delete(self, *, delay=None):
"""|coro|
Deletes the message.
@@ -572,6 +572,12 @@ class Message:
delete other people's messages, you need the :attr:`~Permissions.manage_messages`
permission.
+ Parameters
+ -----------
+ delay: Optional[:class:`float`]
+ If provided, the number of seconds to wait in the background
+ before deleting the message.
+
Raises
------
Forbidden
@@ -579,7 +585,17 @@ class Message:
HTTPException
Deleting the message failed.
"""
- await self._state.http.delete_message(self.channel.id, self.id)
+ if delay is not None:
+ async def delete():
+ await asyncio.sleep(delay, loop=self._state.loop)
+ try:
+ await self._state.http.delete_message(self.channel.id, self.id)
+ except HTTPException:
+ pass
+
+ asyncio.ensure_future(delete(), loop=self._state.loop)
+ else:
+ await self._state.http.delete_message(self.channel.id, self.id)
async def edit(self, **fields):
"""|coro|
@@ -632,14 +648,7 @@ class Message:
pass
else:
if delete_after is not None:
- async def delete():
- await asyncio.sleep(delete_after, loop=self._state.loop)
- try:
- await self._state.http.delete_message(self.channel.id, self.id)
- except HTTPException:
- pass
-
- asyncio.ensure_future(delete(), loop=self._state.loop)
+ await self.delete(delay=delete_after)
async def pin(self):
"""|coro|