这是我的代码:
import discord
from discord.ext import commands
from discord import app_commands
async def select_callback(self, select1, interaction: discord.Interaction):
if select1.values[0] == 1:
await interaction.response.send_message('success1')
elif select1.values[0] == 2:
await interaction.response.send_message('success2')
else:
await interaction.response.send_message('success3')
class aButton(commands.Cog):
def __init__(self, bot):
self.bot = bot
@app_commands.command(name = "view_base", description = "Simple View Example")
async def view_base(self, interaction: discord.Interaction):
view = discord.ui.View()
select1 = discord.ui.Select()
select1.add_option(label="A", value = 1, description="Explain a")
select1.add_option(label="B", value = 2, description="Explain B")
select1.add_option(label="C", value = 3, description="Explain C")
select1.callback = select_callback
view.add_item(select1)
await interaction.response.send_message(view = view)
async def setup(bot):
await bot.add_cog(aButton(bot))
当我使用选择菜单时,总是出现交互失败。
我猜回调有问题。
我在网上找了好久。但没有用。请帮忙或尝试给出一些如何实现这一目标的想法。
Select.callback 仅接受一个参数:
interaction
。
async def select_callback(interaction: discord.Interaction):
...
self
通常是类方法采用的参数;其中 self 是类对象。
select
参数仅在使用discord.ui.select装饰器时存在。
class SelectView(discord.ui.View):
def __init__(self):
super().__init__()
@discord.ui.select(...)
async def select_callback(self, interaction: discord.Interaction, select: discord.ui.Select):
...