Skip to content

Commit 830858c

Browse files
committed
Add MessageType.is_deletable to fix Messageable.purge failing
Fix #10319
1 parent 78ff166 commit 830858c

File tree

3 files changed

+22
-0
lines changed

3 files changed

+22
-0
lines changed

discord/abc.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,9 @@ async def _purge_helper(
195195
count = 0
196196
await asyncio.sleep(1)
197197

198+
if not message.type.is_deletable():
199+
continue
200+
198201
if not check(message):
199202
continue
200203

discord/enums.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,16 @@ class MessageType(Enum):
279279
poll_result = 46
280280
emoji_added = 63
281281

282+
def is_deletable(self) -> bool:
283+
return self not in {
284+
MessageType.recipient_add,
285+
MessageType.recipient_remove,
286+
MessageType.call,
287+
MessageType.channel_name_change,
288+
MessageType.channel_icon_change,
289+
MessageType.thread_starter_message,
290+
}
291+
282292

283293
class SpeakingState(Enum):
284294
none = 0

docs/api.rst

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1732,6 +1732,15 @@ of :class:`enum.Enum`.
17321732

17331733
Checks if two messages are not equal.
17341734

1735+
.. method:: is_deletable()
1736+
1737+
Checks if the message type is deletable, as some system messages cannot be deleted.
1738+
1739+
.. versionadded:: 2.7
1740+
1741+
:return: A boolean denoting if the message type is deletable.
1742+
:rtype: :class:`bool`
1743+
17351744
.. attribute:: default
17361745

17371746
The default message type. This is the same as regular messages.

0 commit comments

Comments
 (0)