65 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import discord
 | 
						|
from discord.ext import commands
 | 
						|
 | 
						|
# Defines a custom Select containing colour options
 | 
						|
# that the user can choose. The callback function
 | 
						|
# of this class is called when the user changes their choice
 | 
						|
class Dropdown(discord.ui.Select):
 | 
						|
    def __init__(self):
 | 
						|
 | 
						|
        # Set the options that will be presented inside the dropdown
 | 
						|
        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='🟦')
 | 
						|
        ]
 | 
						|
 | 
						|
        # The placeholder is what will be shown when no option is chosen
 | 
						|
        # The min and max values indicate we can only pick one of the three options
 | 
						|
        # The options parameter defines the dropdown options. We defined this above
 | 
						|
        super().__init__(placeholder='Choose your favourite colour...', min_values=1, max_values=1, options=options)
 | 
						|
 | 
						|
    async def callback(self, interaction: discord.Interaction):
 | 
						|
        # Use the interaction object to send a response message containing
 | 
						|
        # the user's favourite colour or choice. The self object refers to the
 | 
						|
        # Select object, and the values attribute gets a list of the user's 
 | 
						|
        # selected options. We only want the first one.
 | 
						|
        await interaction.response.send_message(f'Your favourite colour is {self.values[0]}')
 | 
						|
 | 
						|
 | 
						|
class DropdownView(discord.ui.View):
 | 
						|
    def __init__(self):
 | 
						|
        super().__init__()
 | 
						|
 | 
						|
        # Adds the dropdown to our view object.
 | 
						|
        self.add_item(Dropdown())
 | 
						|
 | 
						|
 | 
						|
class Bot(commands.Bot):
 | 
						|
    def __init__(self):
 | 
						|
        super().__init__(
 | 
						|
            command_prefix=commands.when_mentioned_or('$'),
 | 
						|
            intents=discord.Intents(guilds=True, messages=True)
 | 
						|
        )
 | 
						|
 | 
						|
    async def on_ready(self):
 | 
						|
        print(f'Logged in as {self.user} (ID: {self.user.id})')
 | 
						|
        print('------')
 | 
						|
    
 | 
						|
    
 | 
						|
bot = Bot()
 | 
						|
 | 
						|
 | 
						|
@bot.command()
 | 
						|
async def colour(ctx):
 | 
						|
    """Sends a message with our dropdown containing colours"""
 | 
						|
 | 
						|
    # Create the view containing our dropdown
 | 
						|
    view = DropdownView()
 | 
						|
 | 
						|
    # Sending a message containing our view
 | 
						|
    await ctx.send('Pick your favourite colour:', view=view)
 | 
						|
 | 
						|
 | 
						|
bot.run('token')
 |