Skip to content

Commit 6474f26

Browse files
authored
Various Paginator fixes for disable(), cancel(), and respond methods. (#1088)
* potential fix for #1083 by converting WebhookMessage to Message * fix for #1082 * fix for #1082 * proper fix for #1083 by converting WebhookMessage and InteractionMessage to Message * apply fix for #1082 to `cancel()` method as well * apply fix for #1082 to `cancel()` method as well * fix logic for cancel/disable
1 parent 0a1b6b0 commit 6474f26

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

discord/ext/pages/pagination.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,7 @@ async def disable(
374374
"""
375375
page = self.get_page_content(page)
376376
for item in self.children:
377-
if item not in self.custom_view.children or include_custom:
377+
if include_custom or not self.custom_view or item not in self.custom_view.children:
378378
item.disabled = True
379379
if page:
380380
await self.message.edit(
@@ -402,7 +402,7 @@ async def cancel(
402402
items = self.children.copy()
403403
page = self.get_page_content(page)
404404
for item in items:
405-
if item not in self.custom_view.children or include_custom:
405+
if include_custom or not self.custom_view or item not in self.custom_view.children:
406406
self.remove_item(item)
407407
if page:
408408
await self.message.edit(
@@ -737,18 +737,22 @@ async def respond(
737737
view=self,
738738
ephemeral=ephemeral,
739739
)
740-
740+
# convert from WebhookMessage to Message reference to bypass 15min webhook token timeout
741+
msg = msg.channel.get_partial_message(msg.id) or await msg.channel.fetch_message(msg.id)
741742
else:
742743
msg = await interaction.response.send_message(
743744
content=page if isinstance(page, str) else None,
744745
embeds=[] if isinstance(page, str) else page,
745746
view=self,
746747
ephemeral=ephemeral,
747748
)
748-
if isinstance(msg, (discord.WebhookMessage, discord.Message)):
749+
if isinstance(msg, discord.WebhookMessage):
750+
self.message = await msg.channel.fetch_message(msg.id)
751+
elif isinstance(msg, discord.Message):
749752
self.message = msg
750753
elif isinstance(msg, discord.Interaction):
751-
self.message = await msg.original_message()
754+
msg = await msg.original_message()
755+
self.message = await msg.channel.fetch_message(msg.id)
752756

753757
return self.message
754758

0 commit comments

Comments
 (0)