From d0097c4281af7aa863e746e977a68517ddaba03b Mon Sep 17 00:00:00 2001 From: Rapptz Date: Mon, 31 May 2021 05:47:46 -0400 Subject: Remove view syncing before editing in views This prevents a potential race condition when a MESSAGE_UPDATE is received syncing and refreshing the view components causing a desync. --- discord/ui/view.py | 3 +++ 1 file changed, 3 insertions(+) (limited to 'discord/ui') diff --git a/discord/ui/view.py b/discord/ui/view.py index 13016a8e..4df899ed 100644 --- a/discord/ui/view.py +++ b/discord/ui/view.py @@ -409,6 +409,9 @@ class ViewStore: def is_message_tracked(self, message_id: int): return message_id in self._synced_message_views + def remove_message_tracking(self, message_id: int) -> Optional[View]: + return self._synced_message_views.pop(message_id, None) + def update_from_message(self, message_id: int, components: List[ComponentPayload]): # pre-req: is_message_tracked == true view = self._synced_message_views[message_id] -- cgit v1.2.3