我有这个代码
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
但是如何做到这一点 目前我只收到错误
您在这里混合了两个概念。有 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")