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

使用discord.py开发斜杠封禁命令时遇options参数错误

解决discord.py斜杠封禁命令的options参数错误

你的报错核心原因是@tree.command装饰器不支持options这个参数,这是对discord.py斜杠命令(app_commands)用法的误区,下面是修正后的代码及关键说明:

修正后的代码

import discord
from discord import app_commands

# 假设tree是你已初始化完成的app_commands.CommandTree实例

@tree.command(name="ban", description="封禁指定用户")
@app_commands.describe(user="选择要封禁的用户", reason="封禁理由(可选)")
async def _ban(ctx: discord.Interaction, user: discord.Member, reason: str = "无理由"):
    await user.ban(reason=reason)
    await ctx.response.send_message(f'已封禁 {user.mention}! 理由: {reason}')

关键修正点

  • 移除options参数:discord.py的斜杠命令参数是通过函数的类型注解和默认值定义的,不需要手动传入options列表。比如user: discord.Member会自动识别为必填的用户选择参数,reason: str = "无理由"则是可选的字符串参数。
  • 修复未定义的reason变量:原代码中ctx.send引用的reason未定义,这里给它设置了默认值,如果你想让理由成为必填项,去掉默认值即可。
  • 使用正确的交互响应方式:斜杠命令必须用ctx.response.send_message回复,而非普通命令的ctx.send,否则会触发交互超时问题。
  • 优化参数说明:通过@app_commands.describe给参数添加描述,这会在Discord的命令菜单中显示,让用户清晰了解每个参数的作用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:01:17