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

Discord.py使用cogs时如何自动生成命令正确用法的错误提示

实现方案

Discord.py 内置的命令对象已经封装了参数相关的元数据,无需手动解析函数签名即可自动生成用法提示,你只需要在已有的错误触发逻辑中加入如下的用法生成代码即可:

核心代码片段

# 你可以直接把这段逻辑嵌入你现有的错误检测分支中,此处以缺必填参数的错误场景为例
if ctx.command is not None:
    # 方案1:直接使用官方自动生成的完整参数签名(包含类型提示、可选参数标记)
    cmd_usage = f"{ctx.prefix}{ctx.command.name} {ctx.command.signature}"
    
    # 方案2:仅保留参数名,去掉类型提示(匹配你示例要求的输出格式)
    # param_str = " ".join([f"<{param.name}>" for param in ctx.command.clean_params.values()])
    # cmd_usage = f"{ctx.prefix}{ctx.command.name} {param_str}"
    
    # 发送提示
    await ctx.reply(f"> 正确用法:**{cmd_usage}**")

属性说明

  • ctx.command:当前触发错误的命令实例,调用前先判断非空可以避免用户输入不存在的命令时抛出异常
  • ctx.prefix:用户当前调用命令使用的前缀,适配多前缀场景,无需硬编码!之类的固定前缀
  • ctx.command.signature:Discord.py 自动生成的参数签名,会自动区分必填/可选参数,必填参数用<>包裹,可选参数用[]包裹,同时会显示你定义的参数类型注解,符合通用命令用法书写规范
  • ctx.command.clean_params:命令的参数字典,遍历即可获取所有参数的名称、类型、默认值等信息,适合需要自定义用法格式的场景

你示例中的test_command使用方案2的代码时,就会直接生成你要求的!test_command <arg1> <arg2>格式的输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 17:27:03