Discord.py错误消息正在删除其他消息

时间:2020-04-09 05:00:56

标签: python discord discord.py

我拥有它,因此我的机器人删除了并输入了带有错误词的消息。由于某种原因,如果我连续执行2个坏词,它将删除第一条消息,并且dm是我一次,然后删除另外2条消息,并且dm是我两次。有人可以告诉我我在做什么错吗?

@client.event
async def on_message(message):
    bad_words = ['bad','bot']
    user = client.get_user(647589407515213866)
    for word in bad_words:
        if (message.content.count(word) > 0) and (message.content.count(word) < 2):
            print("A bad word was said")
            await message.channel.purge(limit=1)
            await user.send(f'User {message.author} wrote {word}')
        else:
            await client.process_commands(message)

有人可以告诉我为什么它会堆积消息以及如何解决它吗?

1 个答案:

答案 0 :(得分:1)

您应该使用message.delete而不是从频道中清除。如果每个坏词都为真,则应删除该消息,而不是删除每个坏词的消息。我们可以在for子句中使用else循环:

@client.event
async def on_message(message):
    bad_words = ['bad','bot']
    user = client.get_user(647589407515213866)
    for word in bad_words:
        if 0 < message.content.count(word) < 2:
            print("A bad word was said")
            await user.send(f'User {message.author} wrote {word}')
            await message.delete()
            break
    else:
        await client.process_commands(message)

此外,大于0且小于2仅为1,因此您可以检查一下。