aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bot/pagination.py93
1 files changed, 38 insertions, 55 deletions
diff --git a/bot/pagination.py b/bot/pagination.py
index 10bef1c9f..5b96d8fbb 100644
--- a/bot/pagination.py
+++ b/bot/pagination.py
@@ -301,42 +301,30 @@ class LinePaginator(Paginator):
if str(reaction.emoji) == DELETE_EMOJI:
log.debug("Got delete reaction")
return await message.delete()
-
- if reaction.emoji == FIRST_EMOJI:
- await message.remove_reaction(reaction.emoji, user)
- current_page = 0
-
- log.debug(f"Got first page reaction - changing to page 1/{len(paginator.pages)}")
-
- embed.description = paginator.pages[current_page]
- if footer_text:
- embed.set_footer(text=f"{footer_text} (Page {current_page + 1}/{len(paginator.pages)})")
- else:
- embed.set_footer(text=f"Page {current_page + 1}/{len(paginator.pages)}")
- await message.edit(embed=embed)
-
- if reaction.emoji == LAST_EMOJI:
- await message.remove_reaction(reaction.emoji, user)
- current_page = len(paginator.pages) - 1
-
- log.debug(f"Got last page reaction - changing to page {current_page + 1}/{len(paginator.pages)}")
-
- embed.description = paginator.pages[current_page]
- if footer_text:
- embed.set_footer(text=f"{footer_text} (Page {current_page + 1}/{len(paginator.pages)})")
- else:
- embed.set_footer(text=f"Page {current_page + 1}/{len(paginator.pages)}")
- await message.edit(embed=embed)
-
- if reaction.emoji == LEFT_EMOJI:
+ elif reaction.emoji in PAGINATION_EMOJI:
+ total_pages = len(paginator.pages)
await message.remove_reaction(reaction.emoji, user)
- if current_page <= 0:
- log.debug("Got previous page reaction, but we're on the first page - ignoring")
- continue
-
- current_page -= 1
- log.debug(f"Got previous page reaction - changing to page {current_page + 1}/{len(paginator.pages)}")
+ if reaction.emoji == FIRST_EMOJI:
+ current_page = 0
+ log.debug(f"Got first page reaction - changing to page 1/{total_pages}")
+ elif reaction.emoji == LAST_EMOJI:
+ current_page = len(paginator.pages) - 1
+ log.debug(f"Got last page reaction - changing to page {current_page + 1}/{total_pages}")
+ elif reaction.emoji == LEFT_EMOJI:
+ if current_page <= 0:
+ log.debug("Got previous page reaction, but we're on the first page - ignoring")
+ continue
+
+ current_page -= 1
+ log.debug(f"Got previous page reaction - changing to page {current_page + 1}/{total_pages}")
+ elif reaction.emoji == RIGHT_EMOJI:
+ if current_page >= len(paginator.pages) - 1:
+ log.debug("Got next page reaction, but we're on the last page - ignoring")
+ continue
+
+ current_page += 1
+ log.debug(f"Got next page reaction - changing to page {current_page + 1}/{total_pages}")
embed.description = paginator.pages[current_page]
@@ -345,27 +333,22 @@ class LinePaginator(Paginator):
else:
embed.set_footer(text=f"Page {current_page + 1}/{len(paginator.pages)}")
- await message.edit(embed=embed)
-
- if reaction.emoji == RIGHT_EMOJI:
- await message.remove_reaction(reaction.emoji, user)
-
- if current_page >= len(paginator.pages) - 1:
- log.debug("Got next page reaction, but we're on the last page - ignoring")
- continue
-
- current_page += 1
- log.debug(f"Got next page reaction - changing to page {current_page + 1}/{len(paginator.pages)}")
-
- embed.description = paginator.pages[current_page]
-
- if footer_text:
- embed.set_footer(text=f"{footer_text} (Page {current_page + 1}/{len(paginator.pages)})")
- else:
- embed.set_footer(text=f"Page {current_page + 1}/{len(paginator.pages)}")
-
- await message.edit(embed=embed)
+ try:
+ await message.edit(embed=embed)
+ except discord.HTTPException as e:
+ if e.code == 50083:
+ # Trying to act on an archived thread, just ignore and abort
+ break
+ else:
+ raise e
log.debug("Ending pagination and clearing reactions.")
with suppress(discord.NotFound):
- await message.clear_reactions()
+ try:
+ await message.clear_reactions()
+ except discord.HTTPException as e:
+ if e.code == 50083:
+ # Trying to act on an archived thread, just ignore
+ pass
+ else:
+ raise e