如何让Discord机器人删除含特定词汇的消息?代码报错求助
修复Discord机器人消息过滤器的报错问题
嘿,我来帮你搞定这个报错!咱们先拆解下你代码里的问题,再一步步修正:
错误原因分析
- on_message事件参数写错了:Discord.py的
on_message回调函数只需要接收message这一个参数,你写了ctx, message,直接导致参数不匹配,这就是报错TypeError: on_message() missing 1 required positional argument: 'message'的根源。 - 大小写混淆:Python是大小写敏感的,你代码里用了大写的
Message,但实际传入的参数是小写的message,程序会找不到对应的对象。 - 方法调用漏了括号:
lower是字符串的方法,必须加()才能调用它把内容转成小写,你写的lower只是引用了方法本身,没法判断内容里有没有敏感词。
修正后的完整代码
@bot.event async def on_message(message): # 先排除机器人自己发的消息,避免触发无限循环 if message.author == bot.user: return if 'fuck' in message.content.lower(): await message.delete()
额外优化说明
我加了if message.author == bot.user: return这一行,是为了防止机器人误删自己发送的消息,避免出现不必要的循环问题。
内容的提问来源于stack exchange,提问作者user12731692
相关产品推荐
相关产品推荐

