diff options
| author | Vexs <[email protected]> | 2019-04-17 17:50:50 -0500 |
|---|---|---|
| committer | Rapptz <[email protected]> | 2019-04-18 07:56:02 -0400 |
| commit | 0f48b7898785ccda76c94330f4f3e333bca92e08 (patch) | |
| tree | 4619cf72fd1e4aa5a6c0bf3edf67ca36c71d3b69 | |
| parent | Add support for <:name:id> format for adding reactions (diff) | |
| download | discord.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.py | 8 | ||||
| -rw-r--r-- | discord/message.py | 29 |
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| |