discord.py中如何单独调用子命令而不触发父命令逻辑?
discord.py 直接调用子命令且不触发父命令逻辑的实现方案
你可以通过直接调用子命令回调的方式实现需求,该方式不会触发父命令help的任何执行逻辑,有两种常用实现方式:
方式1:直接访问子命令回调(更简洁)
@help.command()装饰器会将fun子命令绑定为help命令组的属性,直接调用其回调即可:
@client.command() async def invoke_fun(ctx): # 直接调用fun子命令的回调函数,仅执行子命令逻辑 await help.fun.callback(ctx)
方式2:通过客户端获取子命令(更稳定)
如果后续命令组结构有调整,你可以通过get_command方法按路径获取子命令,避免硬绑定:
@client.command() async def invoke_fun(ctx): # 按 父命令 子命令 的格式获取目标子命令对象 fun_cmd = client.get_command("help fun") await fun_cmd(ctx)
注意事项
如果你的fun子命令需要接收额外参数,调用时将参数按顺序传入即可,例如fun定义为async def fun(ctx, arg1: str, arg2: int),调用时写为await help.fun.callback(ctx, "参数1", 2)即可。
内容的提问来源于stack exchange,提问作者EpicEfeathers
相关产品推荐
相关产品推荐

