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)