使用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
相关产品推荐
相关产品推荐

