添加 on_message 后,我的其余命令停止工作。我之前看到有人问过这个问题,我尝试添加 await client.process_commands(message)
来修复它,但是在更改了一些东西后,它停止了工作。这应该检测列入黑名单的单词,删除它们,然后删除消息。
@client.event
async def on_message(message):
if message.author.bot: return
message.content = message.content.lower().replace(' ', '')
if "example1" in message.content or "example2" in message.content or "example3" in message.content or "example4" in message.content:
await message.delete()
await message.channel.send(f"{message.author.mention} That word is not allowed!", delete_after=1.5)
await message.delete()
await client.process_commands(message)
答案 0 :(得分:2)
在将 message.content
传递给 process_commands
之前,您正在修改它;具体来说,您要删除所有空格。当然,您的任何命令名称都不会与巨大的单字字符串匹配。
不要直接修改message.content
。由于您使用 in
进行检查,因此您甚至不需要删除空格。您的条件也可以简化。
此外,正如 effprime 指出的那样,如果您要删除有问题的消息,尝试处理来自它们的任何命令是没有意义的。因此,您需要删除消息或从中处理命令,而不是两者。
bad_words = ['example1', 'example2', 'example3', 'example4']
if any(word in message.content.lower() for word in bad_words):
await message.delete()
...
else:
await client.process_commands(message)