From 4095c9f2a012bf13b6089b90511c128f02a144fd Mon Sep 17 00:00:00 2001 From: vmphase Date: Fri, 21 Aug 2026 13:29:11 +0300 Subject: [PATCH 1/3] fix(ui): use correct keys when removing views from the store --- discord/ui/view.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/discord/ui/view.py b/discord/ui/view.py index fdc478b868..6e981813b9 100644 --- a/discord/ui/view.py +++ b/discord/ui/view.py @@ -47,9 +47,8 @@ from ..components import Button as ButtonComponent from ..components import Checkbox as CheckboxComponent from ..components import CheckboxGroup as CheckboxGroupComponent -from ..components import Component +from ..components import Component, FileComponent, _component_factory from ..components import Container as ContainerComponent -from ..components import FileComponent from ..components import FileUpload as FileUploadComponent from ..components import InputText as InputTextComponent from ..components import Label as LabelComponent @@ -60,10 +59,8 @@ from ..components import Separator as SeparatorComponent from ..components import TextDisplay as TextDisplayComponent from ..components import Thumbnail as ThumbnailComponent -from ..components import _component_factory -from ..enums import ChannelType, SeparatorSpacingSize +from ..enums import ChannelType from ..errors import Forbidden, NotFound -from ..utils import find from .core import ItemInterface from .item import Item, ItemCallbackType, ModalItem, ViewItem @@ -1002,9 +999,11 @@ def add_view(self, view: BaseView, message_id: int | None = None): self._synced_message_views[message_id] = view def remove_view(self, view: BaseView): - for item in view.walk_children(): - if item.is_storable(): - self._views.pop((item.type.value, item.custom_id), None) # type: ignore + keys_to_remove = [ + key for key, (stored_view, _) in self._views.items() if stored_view is view + ] + for key in keys_to_remove: + del self._views[key] for key, value in self._synced_message_views.items(): if value.id == view.id: From 6630a8da7607d2fa6fdf87bd95eb35cdad0a1f52 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 21 Aug 2026 10:32:55 +0000 Subject: [PATCH 2/3] style(pre-commit): auto fixes from pre-commit.com hooks --- discord/ui/view.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/discord/ui/view.py b/discord/ui/view.py index 6e981813b9..af25a6ceb7 100644 --- a/discord/ui/view.py +++ b/discord/ui/view.py @@ -47,8 +47,9 @@ from ..components import Button as ButtonComponent from ..components import Checkbox as CheckboxComponent from ..components import CheckboxGroup as CheckboxGroupComponent -from ..components import Component, FileComponent, _component_factory +from ..components import Component from ..components import Container as ContainerComponent +from ..components import FileComponent from ..components import FileUpload as FileUploadComponent from ..components import InputText as InputTextComponent from ..components import Label as LabelComponent @@ -59,6 +60,7 @@ from ..components import Separator as SeparatorComponent from ..components import TextDisplay as TextDisplayComponent from ..components import Thumbnail as ThumbnailComponent +from ..components import _component_factory from ..enums import ChannelType from ..errors import Forbidden, NotFound from .core import ItemInterface From 3d193934692062885ba8cf85ca82e4330d1d9a90 Mon Sep 17 00:00:00 2001 From: vmphase Date: Fri, 21 Aug 2026 13:43:39 +0300 Subject: [PATCH 3/3] chore: update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d407f3758..87e9a3213e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,8 @@ These changes are available on the `master` branch, but have not yet been releas ([#3320](https://github.com/Pycord-Development/pycord/pull/3320)) - Fix `SyntaxWarning` about `return` in a `finally` block raised on Python 3.14+ ([#3332](https://github.com/Pycord-Development/pycord/pull/3334)) +- Fix an issue where stopped views would not be cleaned up. + ([#3360](https://github.com/Pycord-Development/pycord/pull/3360)) ### Deprecated