Prevent empty dictionaries from being added to the ViewStore

Fix #10405
This commit is contained in:
Rapptz
2026-02-23 02:30:05 -05:00
parent 8bad09e1d8
commit ef1cb6a089

View File

@@ -899,7 +899,7 @@ class ViewStore:
self._modals[view.custom_id] = view # type: ignore self._modals[view.custom_id] = view # type: ignore
return return
dispatch_info = self._views.setdefault(message_id, {}) dispatch_info = self._views.get(message_id, {})
is_fully_dynamic = True is_fully_dynamic = True
for item in view.walk_children(): for item in view.walk_children():
if isinstance(item, DynamicItem): if isinstance(item, DynamicItem):
@@ -910,6 +910,9 @@ class ViewStore:
is_fully_dynamic = False is_fully_dynamic = False
view._cache_key = message_id view._cache_key = message_id
if dispatch_info:
self._views[message_id] = dispatch_info
if message_id is not None and not is_fully_dynamic: if message_id is not None and not is_fully_dynamic:
self._synced_message_views[message_id] = view self._synced_message_views[message_id] = view
@@ -927,7 +930,7 @@ class ViewStore:
elif item.is_dispatchable(): elif item.is_dispatchable():
dispatch_info.pop((item.type.value, item.custom_id), None) # type: ignore dispatch_info.pop((item.type.value, item.custom_id), None) # type: ignore
if len(dispatch_info) == 0: if dispatch_info is not None and len(dispatch_info) == 0:
self._views.pop(view._cache_key, None) self._views.pop(view._cache_key, None)
self._synced_message_views.pop(view._cache_key, None) # type: ignore self._synced_message_views.pop(view._cache_key, None) # type: ignore