From 93b62d781d3d825bbd9af7a0462c5ccb94a50d2b Mon Sep 17 00:00:00 2001 From: harumaki4649 Date: Sat, 23 May 2026 21:21:08 +0900 Subject: [PATCH] Fix View add and remove item state --- discord/ui/view.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/discord/ui/view.py b/discord/ui/view.py index 3672c373d..e82c8fe9e 100644 --- a/discord/ui/view.py +++ b/discord/ui/view.py @@ -783,20 +783,17 @@ class View(BaseView): return components def add_item(self, item: Item[Any]) -> Self: + if not isinstance(item, Item): + raise TypeError(f'expected Item not {item.__class__.__name__}') + if len(self._children) >= 25: raise ValueError('maximum number of children exceeded') if item._is_v2(): raise ValueError('v2 items cannot be added to this view') + self.__weights.add_item(item) super().add_item(item) - try: - self.__weights.add_item(item) - except ValueError as e: - # if the item has no space left then remove it from _children - self._children.remove(item) - raise e - return self def remove_item(self, item: Item[Any]) -> Self: @@ -806,6 +803,7 @@ class View(BaseView): pass else: self.__weights.remove_item(item) + self._add_count(-item._total_count) item._update_view(None) return self