Discord.py 如何使用斜杠命令创建选择

Sur*_*arn -3 python discord discord.py

在此输入图像描述

我需要在discord.py斜线命令中这样做,但我不知道该怎么做

3nw*_*nws 11

你可以像这样简单地使用它。

进口:

import discord
from discord import app_commands
from typing import List
Run Code Online (Sandbox Code Playgroud)
    @app_commands.command(name="rps")
    @app_commands.choices(choices=[
        app_commands.Choice(name="Rock", value="rock"),
        app_commands.Choice(name="Paper", value="paper"),
        app_commands.Choice(name="Scissors", value="scissors"),
        ])
    async def rps(self, i: discord.Interaction, choices: app_commands.Choice[str]):
        if (choices.value == 'rock'):
            counter = 'paper'
        elif (choices.value == 'paper'):
            counter = 'scissors'
        else:
            counter = 'rock'
        # rest of your command
Run Code Online (Sandbox Code Playgroud)

这是使用自动完成功能的另一种方法:

    async def rps_autocomplete(self,
        interaction: discord.Interaction,
        current: str,
    ) -> List[app_commands.Choice[str]]:
        choices = ['Rock', 'Paper', 'Scissors']
        return [
            app_commands.Choice(name=choice, value=choice)
            for choice in choices if current.lower() in choice.lower()
        ]

    # play rock paper scissors
    @app_commands.command(name="rps")
    @app_commands.autocomplete(choices=rps_autocomplete)
    async def rps(self, i: discord.Interaction, choices:str):
        choices = choices.lower()
        if (choices == 'rock'):
            counter = 'paper'
        elif (choices == 'paper'):
            counter = 'scissors'
        else:
            counter = 'rock'
        # rest of your command
Run Code Online (Sandbox Code Playgroud)

另外,请查看此内容以了解更多信息。

如果你的命令不是在齿轮中:

@bot.tree.command(name="rps")
@app_commands.choices(choices=[
    app_commands.Choice(name="Rock", value="rock"),
    app_commands.Choice(name="Paper", value="paper"),
    app_commands.Choice(name="Scissors", value="scissors"),
    ])
async def rps(i: discord.Interaction, choices: app_commands.Choice[str]):
    if (choices.value == 'rock'):
        counter = 'paper'
    elif (choices.value == 'paper'):
        counter = 'scissors'
    else:
        counter = 'rock'
    # rest of your command
Run Code Online (Sandbox Code Playgroud)

假设您的机器人定义如下:

bot = commands.Bot(command_prefix="r.", intents=intents)
Run Code Online (Sandbox Code Playgroud)