【问题标题】:Discord.py bad messages are deleting other messagesDiscord.py 坏消息正在删除其他消息
【发布时间】:2020-07-21 16:01:37
【问题描述】:

我有它,所以我的机器人会删除并发送带有坏词的消息。出于某种原因,如果我连续做了 2 个坏词,它会删除第一条消息和 dm 的 me 一次,然后删除另外 2 条消息和 dm 的 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)

谁能告诉我为什么它会堆积消息以及如何解决它?

【问题讨论】:

    标签: python discord discord.py


    【解决方案1】:

    您应该使用message.delete 而不是从频道中清除。与其删除每个坏词的消息,不如删除任何坏词的消息。我们可以使用带有else 子句的for 循环:

    @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,所以你可以检查一下。

    【讨论】:

    • 非常感谢!还有一个问题。我将如何获得用户所说的确切单词。如果我尝试使用“单词”,它会说它不是变量。如果我做 message.content,它会向我发送一个 dm 来说明坏词的数量。我想告诉用户所说的特定单词。我该怎么做。
    • 哦,我错过了。在这种情况下,您将不得不对单词进行 for 循环。当我们找到一个单词时,我们将退出循环
    • 非常感谢!
    猜你喜欢
    • 2018-06-29
    • 2021-06-13
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 2019-05-07
    相关资源
    最近更新 更多