You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在discord.py的斜杠命令中添加可选参数

修改discord.py斜杠命令为可选参数的方法

要让say命令里的thing_to_say变成可选参数,只需要做两个关键调整:

  • 给函数参数设置默认值,标记它为可选
  • 适配参数未传入时的逻辑判断

修改后的完整代码如下:

@client.tree.command(name="say", description="让机器人发送指定内容")
@app_commands.describe(thing_to_say="要发送的文本(可选)")
async def say(interaction: discord.Interaction, thing_to_say: str = ""):
    if not interaction.user.guild_permissions.administrator:
        return await interaction.response.send_message("你需要管理员权限才能使用这个命令")
    if thing_to_say:  # 直接判断字符串是否非空,比len判断更简洁
        await interaction.response.send_message(f'{thing_to_say}')
    else:
        await interaction.response.send_message(f'nothing to be said')

关键修改点说明:

  1. 设置参数默认值:在thing_to_say: str后添加= "",这样用户调用命令时可以不填写该参数,默认传入空字符串。如果偏好用None做默认值,需要把后续判断改成if thing_to_say is not None and thing_to_say:。
  2. 更新参数描述:在@app_commands.describe里补充“(可选)”字样,让用户明确知道这个参数不是必填项。
  3. 简化判断逻辑:把len(thing_to_say) != 0替换成if thing_to_say:,Python中空字符串会被视为False,写法更直观简洁。

当用户不传入参数时,机器人会自动执行else分支,发送预设的提示内容。

内容的提问来源于stack exchange,提问作者CYKLER

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 20:22:03