discord.py 在slash_commands中使用选择菜单

问题描述 投票:0回答:1

我有这个代码

class DroppDownMenu(discord.ui.View):
    @discord.ui.select(placeholder="Choose one option", min_values=1, max_values=1, options=[
       discord.SelectOption(label="CPU", description="The CPUs scores list"),
        discord.SelectOption(label="GPU", description="The GPUs scores list"),
        discord.SelectOption(label="RAM", description="The RAMs scores list"),
        discord.SelectOption(label="All", description="All scores lists")
    ])
    async def callback(self, select, interaction : discord.Interaction):
        if select.values[0] == "CPU":
            await interaction.response.send_message("https://media.discordapp.net/attachments/838857610358292532/931919636461654046/CPU-Scores_Super_Dark_Mode_3.jpg")
        if select.values[0] == "GPU":
            await interaction.response.send_message("https://media.discordapp.net/attachments/838857610358292532/931919674134904982/GPU_Scores_Super_Dark_Mode_5.jpg")
        if select.values[0] == "RAM":
            await interaction.response.send_message("https://media.discordapp.net/attachments/838857610358292532/931919651070423100/RAM_scores_Super_Dark_Mode_4.jpg")
        if select.values[0] == "All":
            await interaction.response.send_message("https://media.discordapp.net/attachments/838857610358292532/931919636461654046/CPU-Scores_Super_Dark_Mode_3.jpg")        
            await interaction.followup.send("https://media.discordapp.net/attachments/838857610358292532/931919674134904982/GPU_Scores_Super_Dark_Mode_5.jpg")
            await interaction.followup.send("https://media.discordapp.net/attachments/838857610358292532/931919651070423100/RAM_scores_Super_Dark_Mode_4.jpg")

@commands.slash_command(name="scores_pcc1", description="Shows charts with benchmark of CPUs, GPUs or RAM")
    async def pcc1_scores_slash(self, ctx, part : Option(DroppDownMenu)):
        
        #await self.scores_buttons(ctx)
        pass

所以基本上我想在斜线命令中创建一个选择菜单,如下所示 (Example)

但是如何做到这一点 目前我只收到错误

python discord discord.py pycord
1个回答
1
投票

您在这里混合了两个概念。有 select component (

discord.ui.select
),这通常在调用交互后发送。您实际上要寻找的是斜杠命令
choices
Option
参数(我很想链接到这里的文档,但它们目前很空)。


本质上,您要做的就是丢弃整个

DroppDownMenu
类,并将逻辑从该回调移至
pcc1_scores_slash
。您可以通过将
part
的定义更改为
part : Option(str, 'StackOverflow provides great parameter descriptions', choices=['CPU', 'GPU', 'RAM', 'All'])
之类的内容来生成选择,然后在斜杠命令正文中的
part
变量上使用 if 链,如下所示:

@commands.slash_command(name='scores_pcc1', description='Shows charts with benchmark of CPUs, GPUs or RAM')
async def pcc1_scores_slash(self, ctx, part: Option(str, 'StackOverflow provides great parameter descriptions', choices=['CPU', 'GPU', 'RAM', 'All'])):
    if part in ('CPU', 'All'):
        await ctx.respond("https://media.discordapp.net/attachments/838857610358292532/931919636461654046/CPU-Scores_Super_Dark_Mode_3.jpg")
    if part in ('GPU', 'All'):
await ctx.respond("https://media.discordapp.net/attachments/838857610358292532/931919674134904982/GPU_Scores_Super_Dark_Mode_5.jpg")
    if part in ('RAM', 'All'):
await ctx.respond("https://media.discordapp.net/attachments/838857610358292532/931919651070423100/RAM_scores_Super_Dark_Mode_4.jpg")
© www.soinside.com 2019 - 2024. All rights reserved.