Min Values: The Minimum number of values the user must select. A user can select multiple values in a select menu. If you want the user to be able to select only one option, set both min values and max values to 1.
Max Values: The Minimum number of values the user can select. A user can select multiple values in a select menu. If you want the user to be able to select only one option, set both min values and max values to 1.
Placeholder: The text to be displayed when no option is selected.
Way 1: Subclassing discord.ui.View
classMyView(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='🟦') ])asyncdefselect_callback(self,select,interaction):await interaction.response.send_message(f'Your favourite colour is {select.values[0]}', ephemeral=True)@bot.command()asyncdefmy_select(ctx):await ctx.send('What is your favourite colour?', view=MyView(timeout=0))
Way 2: Sublcassing discord.ui.SelectMenu
classMySelect(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)asyncdefcallback(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 secondsview.add_item(MySelect())@bot.command()asyncdefmy_select(ctx):await ctx.send('What is your favourite colour?', view=view)
Rows
A message can have up to five "action rows" and each of these "action" rows have five slots where you can put message components. A button takes up one of these slots but a select menus takes up all five slots of a "action row". Keep this in mind when creating your views since you don't want to run out of space!