diff --git a/discord/ui/view.py b/discord/ui/view.py index 57faa312d..547d8280b 100644 --- a/discord/ui/view.py +++ b/discord/ui/view.py @@ -118,6 +118,7 @@ class View: self.id = os.urandom(16).hex() self._cancel_callback: Optional[Callable[[View], None]] = None + self._stopped = asyncio.Event() def to_components(self) -> List[Dict[str, Any]]: def key(item: Item) -> int: @@ -212,9 +213,17 @@ class View: This operation cannot be undone. """ + self._stopped.set() if self._cancel_callback: self._cancel_callback(self) + async def wait(self) -> None: + """Waits until the view has finished interacting. + + A view is considered finished when :meth:`stop` is called. + """ + await self._stopped.wait() + class ViewStore: def __init__(self, state):