Discord.py on_message 打破了其余的命令?

时间:2021-01-23 00:56:06

标签: python discord discord.py

添加 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)

1 个答案:

答案 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)