From 9eac36501ae291be08a85af9161869376dde0020 Mon Sep 17 00:00:00 2001 From: Michael H Date: Fri, 14 Jun 2024 18:08:12 -0400 Subject: [PATCH] Allow deletion race conditions to work with purge --- discord/abc.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/discord/abc.py b/discord/abc.py index d9dc1a14c..fec57b52a 100644 --- a/discord/abc.py +++ b/discord/abc.py @@ -49,7 +49,7 @@ from typing import ( from .object import OLDEST_OBJECT, Object from .context_managers import Typing from .enums import ChannelType, InviteTarget -from .errors import ClientException +from .errors import ClientException, NotFound from .mentions import AllowedMentions from .permissions import PermissionOverwrite, Permissions from .role import Role @@ -122,7 +122,14 @@ _undefined: Any = _Undefined() async def _single_delete_strategy(messages: Iterable[Message], *, reason: Optional[str] = None): for m in messages: - await m.delete() + try: + await m.delete() + except NotFound as exc: + if exc.code == 10008: + continue # bulk deletion ignores not found messages, single deletion does not. + # several other race conditions with deletion should fail without continuing, + # such as the channel being deleted and not found. + raise async def _purge_helper(