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