committed by
GitHub
1 changed files with 63 additions and 0 deletions
@ -0,0 +1,63 @@ |
|||||
|
import typing |
||||
|
|
||||
|
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('$')) |
||||
|
|
||||
|
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') |
Loading…
Reference in new issue