Discord开发:自定义cog下指令执行help命令无显示问题咨询
Discord自定义Cog指令未在help命令中展示的常见问题排查
必查基础配置
- 首先确认
cogs/commands.py末尾存在合法的setup函数,没有这个函数扩展会加载失败,自然不会展示指令:
# 放在cogs/commands.py的最末尾 async def setup(client): await client.add_cog(Commands(client))
注意如果是discord.py v2.0及以上版本,setup函数必须是异步的,且调用
add_cog需要加await,旧版本同步setup的写法已经废弃,加载会报错。
- 检查你贴出的main.py加载代码的字符串引号,末尾的全角引号
’属于语法错误,如果实际代码也是这个写法,扩展会直接加载失败,需要改为半角引号:
# 修正后的加载代码 client.load_extension('cogs.commands')
- 检查Cog类是否设置了
cog_hidden = True类属性,该配置会隐藏整个Cog下的所有指令:
class Commands(commands.Cog, name="通用指令"): # 去掉下面这行,或者设为False才会展示Cog # cog_hidden = True def __init__(self, client): self.client = client
指令属性排查
- 检查你每个指令的装饰器是否设置了
hidden=True,该参数会让指定指令在help中隐藏,示例合法的前缀指令写法:
# 正确可展示的指令示例 @commands.command(name="测试", brief="测试指令", description="这是一个测试用的指令") async def test(self, ctx): await ctx.send("测试成功")
- 如果你写的是斜杠应用指令,默认自带的前缀help命令不会展示这类指令,需要自行实现适配斜杠指令的自定义help命令。
- 检查指令是否加了
@commands.is_owner()、@commands.has_permissions(administrator=True)这类权限装饰器,如果你当前执行help的账号不满足权限要求,指令会默认隐藏,可以给help命令加show_hidden=True参数临时验证:
!help show_hidden=True
加载验证排查
- 可以在main.py的扩展加载代码前后加异常捕获,确认扩展没有抛出加载异常:
try: await client.load_extension('cogs.commands') print("commands扩展加载成功") except Exception as e: print(f"commands扩展加载失败: {e}")
内容的提问来源于stack exchange,提问作者dogluva
相关产品推荐
相关产品推荐

