From bca6b874c6bfed157ca88551f0f2145c5022c181 Mon Sep 17 00:00:00 2001 From: disqualifier Date: Mon, 29 Jun 2026 01:10:25 -0400 Subject: [PATCH] fix: only pass ephemeral on interaction paths, not raw-channel send start() put ephemeral into send_kwargs unconditionally, so the raw Messageable.send() path raised TypeError (discord.py's channel send has no ephemeral param). ephemeral is now passed only on the interaction-response paths (followup.send / response.send_message), which support it; raw-channel send never receives it. Signed-off-by: disqualifier --- src/dpy_paginator/dpy_paginator.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/dpy_paginator/dpy_paginator.py b/src/dpy_paginator/dpy_paginator.py index b1a7851..cbe238a 100644 --- a/src/dpy_paginator/dpy_paginator.py +++ b/src/dpy_paginator/dpy_paginator.py @@ -374,15 +374,16 @@ class ButtonPaginator(Generic[PageT_co], discord.ui.View): kwargs.pop("view", None) self.reset_files(kwargs) - send_kwargs["ephemeral"] = self.ephemeral if isinstance(obj, discord.Interaction): + # ephemeral is an interaction-response concept; only these paths accept it if obj.response.is_done(): - self.message = await obj.followup.send(**kwargs, **send_kwargs) + self.message = await obj.followup.send(**kwargs, ephemeral=self.ephemeral, **send_kwargs) else: - await obj.response.send_message(**kwargs, **send_kwargs) + await obj.response.send_message(**kwargs, ephemeral=self.ephemeral, **send_kwargs) self.message = await obj.original_response() elif isinstance(obj, Messageable): + # Messageable.send (a raw channel) has no ephemeral param — never pass it self.message = await obj.send(**kwargs, **send_kwargs) else: raise TypeError(f"expected Interaction or Messageable, got {obj.__class__.__name__}")