Add ButtonOptions and Update Pagination
This commit is contained in:
parent
095d290226
commit
f2c5eaf843
94
helpers.py
94
helpers.py
@ -262,16 +262,92 @@ class Confirm(discord.ui.View):
|
|||||||
self.stop()
|
self.stop()
|
||||||
|
|
||||||
|
|
||||||
|
class ButtonOptions(discord.ui.View):
|
||||||
|
def __init__(self, responders: list, timeout: float = 300.0, labels=None):
|
||||||
|
super().__init__(timeout=timeout)
|
||||||
|
if not isinstance(responders, list):
|
||||||
|
raise TypeError('responders must be a list')
|
||||||
|
self.value = None
|
||||||
|
self.responders = responders
|
||||||
|
self.options = labels
|
||||||
|
for count, x in enumerate(labels):
|
||||||
|
if count == 0:
|
||||||
|
self.option1.label = x
|
||||||
|
if x is None or x.lower() == 'na' or x == 'N/A':
|
||||||
|
self.remove_item(self.option1)
|
||||||
|
if count == 1:
|
||||||
|
self.option2.label = x
|
||||||
|
if x is None or x.lower() == 'na' or x == 'N/A':
|
||||||
|
self.remove_item(self.option2)
|
||||||
|
if count == 2:
|
||||||
|
self.option3.label = x
|
||||||
|
if x is None or x.lower() == 'na' or x == 'N/A':
|
||||||
|
self.remove_item(self.option3)
|
||||||
|
if count == 3:
|
||||||
|
self.option4.label = x
|
||||||
|
if x is None or x.lower() == 'na' or x == 'N/A':
|
||||||
|
self.remove_item(self.option4)
|
||||||
|
if count == 4:
|
||||||
|
self.option5.label = x
|
||||||
|
if x is None or x.lower() == 'na' or x == 'N/A':
|
||||||
|
self.remove_item(self.option5)
|
||||||
|
|
||||||
|
@discord.ui.button(label='Option 1', style=discord.ButtonStyle.primary)
|
||||||
|
async def option1(self, interaction: discord.Interaction, button: discord.ui.Button):
|
||||||
|
if interaction.user not in self.responders:
|
||||||
|
return
|
||||||
|
|
||||||
|
self.value = self.options[0]
|
||||||
|
self.clear_items()
|
||||||
|
self.stop()
|
||||||
|
|
||||||
|
@discord.ui.button(label='Option 2', style=discord.ButtonStyle.primary)
|
||||||
|
async def option2(self, interaction: discord.Interaction, button: discord.ui.Button):
|
||||||
|
if interaction.user not in self.responders:
|
||||||
|
return
|
||||||
|
|
||||||
|
self.value = self.options[1]
|
||||||
|
self.clear_items()
|
||||||
|
self.stop()
|
||||||
|
|
||||||
|
@discord.ui.button(label='Option 3', style=discord.ButtonStyle.primary)
|
||||||
|
async def option3(self, interaction: discord.Interaction, button: discord.ui.Button):
|
||||||
|
if interaction.user not in self.responders:
|
||||||
|
return
|
||||||
|
|
||||||
|
self.value = self.options[2]
|
||||||
|
self.clear_items()
|
||||||
|
self.stop()
|
||||||
|
|
||||||
|
@discord.ui.button(label='Option 4', style=discord.ButtonStyle.primary)
|
||||||
|
async def option4(self, interaction: discord.Interaction, button: discord.ui.Button):
|
||||||
|
if interaction.user not in self.responders:
|
||||||
|
return
|
||||||
|
|
||||||
|
self.value = self.options[3]
|
||||||
|
self.clear_items()
|
||||||
|
self.stop()
|
||||||
|
|
||||||
|
@discord.ui.button(label='Option 5', style=discord.ButtonStyle.primary)
|
||||||
|
async def option5(self, interaction: discord.Interaction, button: discord.ui.Button):
|
||||||
|
if interaction.user not in self.responders:
|
||||||
|
return
|
||||||
|
|
||||||
|
self.value = self.options[4]
|
||||||
|
self.clear_items()
|
||||||
|
self.stop()
|
||||||
|
|
||||||
|
|
||||||
class Pagination(discord.ui.View):
|
class Pagination(discord.ui.View):
|
||||||
def __init__(self, responders: list):
|
def __init__(self, responders: list, timeout: float = 300.0):
|
||||||
super().__init__()
|
super().__init__(timeout=timeout)
|
||||||
if not isinstance(responders, list):
|
if not isinstance(responders, list):
|
||||||
raise TypeError('responders must be a list')
|
raise TypeError('responders must be a list')
|
||||||
|
|
||||||
self.value = None
|
self.value = None
|
||||||
self.responders = responders
|
self.responders = responders
|
||||||
|
|
||||||
@discord.ui.button(label='⏮️', style=discord.ButtonStyle.grey)
|
@discord.ui.button(label='⏮️', style=discord.ButtonStyle.blurple)
|
||||||
async def left_button(self, interaction: discord.Interaction, button: discord.ui.Button):
|
async def left_button(self, interaction: discord.Interaction, button: discord.ui.Button):
|
||||||
if interaction.user not in self.responders:
|
if interaction.user not in self.responders:
|
||||||
logging.info(f'{interaction.user} is not in {self.responders}')
|
logging.info(f'{interaction.user} is not in {self.responders}')
|
||||||
@ -281,7 +357,17 @@ class Pagination(discord.ui.View):
|
|||||||
await interaction.response.defer()
|
await interaction.response.defer()
|
||||||
self.stop()
|
self.stop()
|
||||||
|
|
||||||
@discord.ui.button(label='⏭️', style=discord.ButtonStyle.grey)
|
@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):
|
async def right_button(self, interaction: discord.Interaction, button: discord.ui.Button):
|
||||||
if interaction.user not in self.responders:
|
if interaction.user not in self.responders:
|
||||||
logging.info(f'{interaction.user} is not in {self.responders}')
|
logging.info(f'{interaction.user} is not in {self.responders}')
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user