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

自定义装饰器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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 19:02:59