python-3.x 有没有办法在www.example.com中创建带有选项的命令discord.py?

bkkx9g8r  于 2023-05-30  发布在  Python
关注(0)|答案(2)|浏览(112)

有没有一种方法可以使用discord.py创建一个命令,允许用户选择一个选项?我已经画了一个例子,如here所示,用户不应该能够键入select /键入其他选项。
我已经尝试过这样做,但不幸的是,这抛出了一个错误:

@tree.command(name="createticket", description="Create a ticket", guild=discord.Object(GUILD_ID))
@app_commands.choices(choices=[
    app_commands.Choice(name="Bug", value="bug"),
    app_commands.Choice(name="Report", value="report")
    # ...
])
async def embed_command(interaction:discord.Interaction, choice:app_commands.Choice[str]):
    if interaction.user.guild_permissions.administrator and interaction.user != None:
        if choice.value == "bug":
           #open ticket code here
        elif choice.calue == "report":
           # ...

错误:

TypeError: unknown parameter given: choices
  • (显示整个错误here)*
bqucvtff

bqucvtff1#

所以你实际上只是打了个错字:app_commands.choices中的参数需要与函数中的参数同名。所以只要替换成

@app_commands.choices(choice=[
    app_commands.Choice(name="Bug", value="bug"),
    app_commands.Choice(name="Report", value="report")
    # ...
])
mec1mxoz

mec1mxoz2#

简单地说,请求一个参数并添加一个类型注解。

@tree.command(name="createticket", description="Create a ticket", guild=discord.Object(GUILD_ID))
async def embed_command(interaction:discord.Interaction, report: str):
    ...

您可以使用app_commands.Range更进一步。

from discord import app_commands

@tree.command(name="createticket", description="Create a ticket", guild=discord.Object(GUILD_ID))
async def embed_command(interaction:discord.Interaction, report: app_commands.Range[str, 1, 10]:

相关问题