如何在Pycord中实现词汇过滤?我编写的指定消息删除代码无效
问题修正方案
你的代码存在几个关键错误,导致自动删除消息的功能无法正常运行,以下是具体修正方案:
错误点梳理
on_message事件参数错误:Pycord 中该事件仅接收message参数,不需要额外的ctx- 消息内容判断逻辑错误:直接将
message对象与字符串"test"比较永远不会成立,需通过message.content获取消息文本内容 - 方法调用错误:
message.delete是方法,必须添加括号()才能执行删除操作 - 缺少自我消息过滤:若机器人自身发送
"test"消息,也会触发删除逻辑,建议添加判断避免这种情况
修正后的代码
@bot.event async def on_message(message): # 跳过机器人自己的消息,避免循环删除 if message.author == bot.user: return # 判断消息内容是否完全等于"test" if message.content == "test": await message.delete()
扩展说明
如果需要删除包含"test"的消息(而非完全匹配),可以将判断逻辑改为:
if "test" in message.content: await message.delete()
内容的提问来源于stack exchange,提问作者Josh Brown
相关产品推荐
相关产品推荐

