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
相关产品推荐
相关产品推荐

