From f6caa6f016d96f0bc323b568d595b16b6c717a09 Mon Sep 17 00:00:00 2001 From: disqualifier Date: Sun, 28 Jun 2026 18:45:25 -0400 Subject: [PATCH] fix: wire on_timeout so delete_message_after actually deletes delete_message_after was stored but never read and no on_timeout override existed, so the documented 'delete the message on timeout' never happened. added on_timeout that deletes self.message when the flag is set, swallowing only the expected discord.NotFound (already deleted) / discord.Forbidden (no permission) and letting any unexpected error surface. Signed-off-by: disqualifier --- src/dpy_paginator/dpy_paginator.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/dpy_paginator/dpy_paginator.py b/src/dpy_paginator/dpy_paginator.py index 2ce0599..b1a7851 100644 --- a/src/dpy_paginator/dpy_paginator.py +++ b/src/dpy_paginator/dpy_paginator.py @@ -388,3 +388,16 @@ class ButtonPaginator(Generic[PageT_co], discord.ui.View): raise TypeError(f"expected Interaction or Messageable, got {obj.__class__.__name__}") return self.message + + async def on_timeout(self) -> None: + """delete the message on timeout when delete_message_after is set + + only the expected discord failures (already deleted, or no permission) are + swallowed; an unexpected error surfaces rather than being silently dropped. + """ + if not self.delete_message_after or self.message is None: + return + try: + await self.message.delete() + except (discord.NotFound, discord.Forbidden): + pass