自定义装饰器addLogger在Discord命令函数上失效的问题求助
自定义装饰器addLogger在Discord命令函数上失效的问题求助
我自己写了一个日志装饰器,代码如下:
def addLogger(fn): from functools import wraps @wraps(fn) async def add_logger(*args, **kwargs): print(f"addLogger: About to run {fn.__name__}") log = logger startTime = time.time() log.info('About to run %s' % fn.__name__) result = await fn(*args, **kwargs) log.info('Done running %s Execution time: %s' % (fn.__name__, time.time() - startTime)) print(f"addLogger: Done running {fn.__name__}") return result return add_logger
这个装饰器在on_ready事件函数上工作得非常正常,日志和打印信息都能正常输出:
@bot.event @addLogger async def on_ready(): logger.info(f'{bot.user.name} has connected to Discord!') try : synced = await bot.tree.sync() print(f"Synced {len(synced)} command") except Exception as e: print(e)
但是当我把它用在list_cogs这个Discord斜杠命令上时,就完全没效果了——装饰器里的打印和日志都没触发,就像装饰器根本没被应用一样:
@addLogger @bot.tree.command(name="list_cogs", description="list all cogs") async def list_cogs(interaction): await interaction.response.send_message(f"{cogList}")
我还试过把装饰器的返回值改成commands.check(add_logger),结果不仅list_cogs还是不行,连之前正常的on_ready也完全失效了,现在实在摸不着头脑,有没有朋友能帮忙分析一下问题出在哪呀?
备注:内容来源于stack exchange,提问作者Etoile
相关产品推荐
相关产品推荐

