Dropdowns (Select Menus)
How to use dropdowns/select menus with Pycord



Way 1: Subclassing discord.ui.View
Way 2: Sublcassing discord.ui.SelectMenu
Rows
Last updated
How to use dropdowns/select menus with Pycord



Last updated
class MyView(discord.ui.View):
@discord.ui.select(placeholder='Pick your colour', min_values=1, max_values=1, options=[
discord.SelectOption(label='Red', description='Your favourite colour is red', emoji='π₯'),
discord.SelectOption(label='Green', description='Your favourite colour is green', emoji='π©'),
discord.SelectOption(label='Blue', description='Your favourite colour is blue', emoji='π¦')
])
async def select_callback(self, select, interaction):
await interaction.response.send_message(f'Your favourite colour is {select.values[0]}', ephemeral=True)
@bot.command()
async def my_select(ctx):
await ctx.send('What is your favourite colour?', view=MyView(timeout=0))class MySelect(discord.ui.Select):
def __init__(self):
options = [
discord.SelectOption(label='Red', description='Your favourite colour is red', emoji='π₯'),
discord.SelectOption(label='Green', description='Your favourite colour is green', emoji='π©'),
discord.SelectOption(label='Blue', description='Your favourite colour is blue', emoji='π¦')
]
super().__init__(placeholder='Pick your colour', min_values=1, max_values=1, options=options)
async def callback(self, interaction):
await interaction.response.send_message(f'Your favourite colour is {self.values[0]}', ephemeral=True)
view = discord.ui.View(timeout=10) # timeout is optional, it can be defined in seconds
view.add_item(MySelect())
@bot.command()
async def my_select(ctx):
await ctx.send('What is your favourite colour?', view=view)class MyView(discord.ui.View):
@discord.ui.select(min_values=1, max_values=1, options=[
...,
row=1)
async def select_callback(self, select, interaction):
...
@discord.ui.select(min_values=1, max_values=1, options=[
...,
row=2)
async def second_select_callback(self, select, interaction):
...
@bot.command()
async def my_select(ctx):
await ctx.send('What is your favourite colour?', view=MyView(timeout=0))