Discord.py плохие сообщения удаляют другие сообщения - PullRequest
0 голосов
/ 09 апреля 2020

У меня так, что мой бот удаляет и сообщение с плохим словом в нем. По какой-то причине, если я делаю 2 плохих слова подряд, он удаляет первое сообщение и dm's me один раз, затем удаляет 2 других сообщения и dm's me дважды. Может кто-нибудь сказать мне, что я делаю не так?

@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 Ответ

1 голос
/ 09 апреля 2020

Вы должны использовать message.delete вместо очистки от канала. Вместо удаления сообщения для каждого плохого слова, вы должны удалить сообщение, если оно верно для любого плохого слова. Мы можем использовать for l oop с предложением 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, так что вы можете проверить это.

...