import discord import logging class Pagination(discord.ui.View): def __init__(self, responders: list, timeout: float = 300.0): super().__init__(timeout=timeout) if not isinstance(responders, list): raise TypeError('responders must be a list') self.value = None self.responders = responders @discord.ui.button(label='⏮️', style=discord.ButtonStyle.blurple) async def left_button(self, interaction: discord.Interaction, button: discord.ui.Button): if interaction.user not in self.responders: logging.info(f'{interaction.user} is not in {self.responders}') return self.value = 'left' await interaction.response.defer() self.stop() @discord.ui.button(label='❌️', style=discord.ButtonStyle.secondary) async def cancel_button(self, interaction: discord.Interaction, button: discord.ui.Button): if interaction.user not in self.responders: logging.info(f'{interaction.user} is not in {self.responders}') return self.value = 'cancel' await interaction.response.defer() self.stop() @discord.ui.button(label='⏭️', style=discord.ButtonStyle.blurple) async def right_button(self, interaction: discord.Interaction, button: discord.ui.Button): if interaction.user not in self.responders: logging.info(f'{interaction.user} is not in {self.responders}') return self.value = 'right' await interaction.response.defer() self.stop()