From eb4c3efb28cad31c0183799f00d32152c32ce51e Mon Sep 17 00:00:00 2001 From: disqualifier Date: Fri, 16 Oct 2026 04:10:23 -0400 Subject: [PATCH] fix: default mentions block @everyone; jump modal times out with the paginator T2-10 (operator-ruled): mentions_allowed defaulted to AllowedMentions.all(), so page content (often user-supplied) could ping @everyone/@here and the paginator overrode a bot-wide none(). default to AllowedMentions(everyone= False): user/role pings and the bot-wide settings still apply. T2-11: JumpToPageModal used discord.py's default timeout=None, so every dismissed modal stayed in ViewStore._modals forever, pinning its paginator. pass the paginator's timeout. Signed-off-by: disqualifier --- README.md | 3 ++- src/dpy_paginator/dpy_paginator.py | 8 +++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 1d07a6f..26f8fbf 100644 --- a/README.md +++ b/README.md @@ -149,7 +149,8 @@ through. - `timeout` — seconds before the view stops (default 180) - `delete_message_after` — delete the message on timeout - `per_page` — entries per page (default 1) -- `mentions_allowed` — `AllowedMentions` for sends (default `.all()`) +- `mentions_allowed` — `AllowedMentions` for sends (default `AllowedMentions(everyone=False)`: + no @everyone/@here, user/role pings and the bot-wide settings still apply) - `ephemeral` — send/edit ephemerally - `page_text` — format string for the jump button label - `emojis` — override navigation emojis diff --git a/src/dpy_paginator/dpy_paginator.py b/src/dpy_paginator/dpy_paginator.py index b5b27a8..4087c15 100644 --- a/src/dpy_paginator/dpy_paginator.py +++ b/src/dpy_paginator/dpy_paginator.py @@ -85,7 +85,8 @@ class JumpToPageModal(discord.ui.Modal, title="Jump to Page"): """modal that lets a user jump to a specific page""" def __init__(self, paginator: "DPYPaginator"): - super().__init__() + # share the paginator's timeout so a dismissed modal leaves discord.py's ViewStore + super().__init__(timeout=paginator.timeout) self.paginator = paginator self.page_number = discord.ui.TextInput( label="Enter page number", @@ -142,7 +143,8 @@ class DPYPaginator(Generic[PageT_co], discord.ui.View): timeout: seconds before the view stops delete_message_after: delete the message on timeout per_page: how many entries render per page - mentions_allowed: AllowedMentions for sends (defaults to all) + mentions_allowed: AllowedMentions for sends (default: no @everyone/@here; + user/role pings and the bot-wide settings still apply) ephemeral: send/edit ephemerally page_text: format string for the jump button label emojis: override navigation emojis (keys: previous/next/cache) @@ -155,7 +157,7 @@ class DPYPaginator(Generic[PageT_co], discord.ui.View): raise ValueError("per_page must be >= 1") self.author_id: Optional[int] = author_id self.delete_message_after: bool = delete_message_after - self.mentions_allowed = mentions_allowed or discord.AllowedMentions.all() + self.mentions_allowed = mentions_allowed or discord.AllowedMentions(everyone=False) self.ephemeral: bool = ephemeral self.current_page: int = 0 self.per_page: int = per_page