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

Discord.py:如何在on_message事件中使用@commands.check装饰器?

问题解答
  • @commands.check装饰器确实不适用于非命令类函数,它是专门为discord.py的命令函数(比如用@bot.command()装饰的函数)设计的,用来校验命令的执行条件,对on_message这类事件监听器完全不起作用,这就是你用它阻止自回复无效的核心原因。

  • 无法通过@commands.check实现事件监听器的消息过滤,必须在事件函数内部做判断。比如可以直接在on_message里添加校验逻辑:

@commands.Cog.listener("on_message")
async def on_message(self, message):
    # 直接判断是否是机器人自身发送的消息,更通用
    if message.author.bot:
        return
    if str(message.content) == ":smile:":
        await message.channel.send(":smile:")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 13:15:16