diff --git a/examples/views/channel_select.py b/examples/views/channel_select.py new file mode 100644 index 0000000000..2c2ba8e8db --- /dev/null +++ b/examples/views/channel_select.py @@ -0,0 +1,39 @@ +import discord + +# Channel selects (dropdowns) are a new type of select menu/dropdown Discord has added so users can select channels from a dropdown. + +# Defines a simple View that allows the user to use the Select menu. +# In this view, we define the channel_select with `discord.ui.channel_select` +# Using the decorator automatically sets `select_type` to `discord.ComponentType.channel_select`. +class DropdownView(discord.ui.View): + @discord.ui.channel_select( + placeholder="Select channels...", min_values=1, max_values=3 + ) # Users can select a maximum of 3 channels in the dropdown + async def channel_select_dropdown(self, select, interaction): + await interaction.response.send_message( + f"You selected the following channels:" + + f", ".join(f"{channel.mention}" for channel in select.values) + ) + + +bot = discord.Bot(debug_guilds=[...]) + + +@bot.slash_command() +async def channel_select(ctx: discord.ApplicationContext): + """Sends a message with our dropdown that contains a channel select.""" + + # Create the view containing our dropdown + view = DropdownView() + + # Sending a message containing our View + await ctx.respond("Select channels:", view=view) + + +@bot.event +async def on_ready(): + print(f"Logged in as {bot.user} (ID: {bot.user.id})") + print("------") + + +bot.run("TOKEN") diff --git a/examples/views/role_select.py b/examples/views/role_select.py new file mode 100644 index 0000000000..c3774b4de5 --- /dev/null +++ b/examples/views/role_select.py @@ -0,0 +1,39 @@ +import discord + +# Role selects (dropdowns) are a new type of select menu/dropdown Discord has added so people can select server roles from a dropdown. + +# Defines a simple View that allows the user to use the Select menu. +# In this view, we define the role_select with `discord.ui.role_select` +# Using the decorator automatically sets `select_type` to `discord.ComponentType.role_select`. +class DropdownView(discord.ui.View): + @discord.ui.role_select( + placeholder="Select roles...", min_values=1, max_values=3 + ) # Users can select a maximum of 3 roles in the dropdown + async def role_select_dropdown(self, select, interaction): + await interaction.response.send_message( + f"You selected the following roles:" + + f", ".join(f"{role.mention}" for role in select.values) + ) + + +bot = discord.Bot(debug_guilds=[...]) + + +@bot.slash_command() +async def role_select(ctx: discord.ApplicationContext): + """Sends a message with our dropdown that contains a role select.""" + + # Create the view containing our dropdown + view = DropdownView() + + # Sending a message containing our View + await ctx.respond("Select roles:", view=view) + + +@bot.event +async def on_ready(): + print(f"Logged in as {bot.user} (ID: {bot.user.id})") + print("------") + + +bot.run("TOKEN")