discord.py 选择菜单 slash_command 与选择选项的



我想创建一个tree.command,这是一个slash_command,在slash_command中,用户可以在SelectMenu中选择一个SelectOption,如果选择了变量'hack'的SelectOption,它将发送一个响应。bot现在甚至不能启动,因为我得到TypeError: 'member_descriptor'对象是不可调用的';脚本如下:

@tree.command(name='test', description='test', guild=discord.Object(12345678))
async def slash_command(interaction: discord.Interaction, reporttype: discord.SelectMenu(discord.SelectMenu.options(
discord.SelectOption(label='Hacking', value='hack', description='did you experience someone hacking?'), 
discord.SelectOption(label='Harassment', value='harass', description='did someone harass you?'),
discord.SelectOption(label='Discord ToS', value='tos', description='did you experience someone break the discord ToS in the server?'),
discord.SelectOption(label='Support', value='sup', description='do you need support?'))),
name: discord.Member):
if reporttype is discord.SelectOption(value='hack'):
interaction.response('successfull')

我正在使用这个导入:

import discord
import discord.app_commands
import discord.ext
from datetime import timedelta, datetime

是tree的变量:

tree = discord.app_commands.CommandTree(client)

我已经试过了:

@tree.command(name='test', description='test', guild=discord.Object(12345678))
async def slash_command(interaction: discord.Interaction, reporttype: discord.SelectMenu.options(
discord.SelectOption(label='Hacking', value='hack', description='did you experience someone hacking?'), 
discord.SelectOption(label='Harassment', value='harass', description='did someone harass you?'),
discord.SelectOption(label='Discord ToS', value='tos', description='did you experience someone break the discord ToS in the server?'),
discord.SelectOption(label='Support', value='sup', description='do you need support?'))),
name: discord.Member):
if reporttype is discord.SelectOption(value='hack'):
interaction.response('successfull')

但是行不通

顺便说一句,我对discord.py有点陌生,我已经向一个朋友寻求帮助,但他在hikari和lighblub编码,他不能帮助我

发送响应必须使用:

await interaction.response.send_message('successfull')

我相信这是你代码中的错误。另外,我建议您使用视图来处理用户交互。我给你看一个例子:

HACK_OPTIONS = [
discord.SelectOption(label='Hacking', value='hack', description='did you experience someone hacking?'),
discord.SelectOption(label='Harassment', value='harass', description='did someone harass you?'),
discord.SelectOption(label='Discord ToS', value='tos', description='did you experience someone break the discord ToS in the server?'),
discord.SelectOption(label='Support', value='sup', description='do you need support?')
]
class HackView(discord.ui.View)
def __init__(self):
super().__init__(timeout=100)

@discord.ui.select(placeholder="Please select an option", options=HACK_OPTIONS, max_values=1)
async def reply_select(interaction: discord.Interaction, select: discord.ui.Select):
value = select.values[0]
if value == 'hack':
await interaction.responde.send_message("You selected hack!")
else:
await interaction.responde.send_message("You didn't select hack.")

准备好视图后,您需要做的就是将其作为对命令的响应发送:

@tree.command(name='test', description='test', guild=discord.Object(12345678))
async def test(interaction: discord.Interaction):
await interaction.response.send_message("I'm here to help you", view=HackView())

注意:我还没有测试这段代码,但我希望它的工作如预期。

最新更新