46 lines
1.6 KiB
Python
46 lines
1.6 KiB
Python
import discord
|
|
import logging
|
|
|
|
|
|
logger = logging.getLogger('discord_app')
|
|
|
|
|
|
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:
|
|
logger.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:
|
|
logger.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:
|
|
logger.info(f'{interaction.user} is not in {self.responders}')
|
|
return
|
|
|
|
self.value = 'right'
|
|
await interaction.response.defer()
|
|
self.stop()
|