Guest User

Untitled

a guest
Jun 26th, 2024
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.41 KB | None | 0 0
  1. import disnake
  2.  
  3. from disnake.enums import ButtonStyle
  4.  
  5. class Pagination(disnake.ui.View):
  6.     message: disnake.Message
  7.  
  8.     def __init__(self, embeds: list[disnake.Embed]) -> None:
  9.         super().__init__(timeout=None)
  10.         self.embeds = embeds
  11.         self.index = 0
  12.         self._update_state()
  13.  
  14.     def _update_state(self) -> None:
  15.         self.overview.disabled = self.prev_page.disabled = self.index == 0
  16.         self.end_page.disabled = self.next_page.disabled = self.index == len(self.embeds) - 1
  17.  
  18.     async def on_error(self, error: Exception, item: disnake.ui.Button, inter: disnake.MessageInteraction) -> None:
  19.         """Called if the interaction check failed or any other errors occur within this view"""
  20.         print(error)
  21.         print(item)
  22.         print(inter)
  23.  
  24.         await inter.response.send_message(
  25.             "You Do Not Have Permission To Interact With This Paginator. Contact Support Staff If This Is An Error.",
  26.             ephemeral=True)
  27.  
  28.     async def interaction_check(self, interaction: disnake.MessageInteraction) -> bool:
  29.         return interaction.message.interaction.author == interaction.author
  30.  
  31.     @disnake.ui.button(label="Overview", style=disnake.ButtonStyle.primary)
  32.     async def overview(self, button: disnake.ui.Button, interaction: disnake.MessageInteraction):
  33.         self.index = 0
  34.         self._update_state()
  35.  
  36.         await interaction.response.edit_message(embed=self.embeds[self.index], view=self)
  37.  
  38.     @disnake.ui.button(label="Previous", style=disnake.ButtonStyle.secondary)
  39.     async def prev_page(self, button: disnake.ui.Button, interaction: disnake.MessageInteraction):
  40.         self.index -= 1
  41.         self._update_state()
  42.  
  43.         await interaction.response.edit_message(embed=self.embeds[self.index], view=self)
  44.  
  45.     @disnake.ui.button(label="Next", style=disnake.ButtonStyle.secondary)
  46.     async def next_page(self, button: disnake.ui.Button, interaction: disnake.MessageInteraction):
  47.         self.index += 1
  48.         self._update_state()
  49.  
  50.         await interaction.response.edit_message(embed=self.embeds[self.index], view=self)
  51.  
  52.     @disnake.ui.button(label="End", style=disnake.ButtonStyle.primary)
  53.     async def end_page(self, button: disnake.ui.Button, interaction: disnake.MessageInteraction):
  54.         self.index = -1
  55.         self._update_state()
  56.  
  57.         await interaction.response.edit_message(embed=self.embeds[self.index], view=self)
  58.  
Advertisement
Add Comment
Please, Sign In to add comment