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 <dev@disqualifier.me>
This commit is contained in:
disqualifier 2026-06-28 18:45:25 -04:00
parent 6dae35001e
commit f6caa6f016

View File

@ -388,3 +388,16 @@ class ButtonPaginator(Generic[PageT_co], discord.ui.View):
raise TypeError(f"expected Interaction or Messageable, got {obj.__class__.__name__}") raise TypeError(f"expected Interaction or Messageable, got {obj.__class__.__name__}")
return self.message 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