Skip to content
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ These changes are available on the `master` branch, but have not yet been releas

### Fixed

- Fix an issue where stopped views would not be cleaned up.
([#3360](https://github.com/Pycord-Development/pycord/pull/3360))
- Fix `TypeError` when accessing `ApplicationCommand.guild_only` or
`SlashCommandGroup.guild_only` when `contexts` is `None`.
([#3320](https://github.com/Pycord-Development/pycord/pull/3320))
Expand Down
11 changes: 6 additions & 5 deletions discord/ui/view.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,8 @@
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

Expand Down Expand Up @@ -1002,9 +1001,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:
Expand Down
Loading