discord.py Bot 并不总是删除消息

Posted

技术标签:

【中文标题】discord.py Bot 并不总是删除消息【英文标题】:discord.py Bot not always deleting messages 【发布时间】:2019-02-20 09:09:03 【问题描述】:

作为一个小测试,我正在制作一个不和谐的机器人,它将接收我发送的消息,删除它,然后让机器人发送消息。我有一些工作,但我有几个问题。

首先,机器人不会总是删除消息。

使用此代码

if message.content.startswith("H"):
    print("test")
    print(message.author)
    msg=message.content
    await client.delete_message(message)
    await client.send_message(message.channel, msg)

机器人有时只会删除我的消息。知道为什么吗?

其次,我希望它只重复我的消息,但是当我这样做时;

if message.author=="Myusername#1234":
    print("test")
    print(message.author)
    msg=message.content
    await client.delete_message(message)
    await client.send_message(message.channel, msg)

什么都没有发生。没有错误,什么都没有。有人可以帮忙吗?

P.S:Myusername#1234 只是一个例子,并不是我要输入的内容。

【问题讨论】:

请注意,第二组代码中的`实际上并不存在 【参考方案1】:

在第一个代码示例中,您的机器人的消息也将通过if 语句,并且只会陷入编写以“H”开头的消息并删除它们的循环中。

您应该将其更新为类似

  if message.content.startswith("H") and message.author.id != "bot_id":

至于第二个代码示例,最好的办法是使用用户 ID,因为它们不会改变

if message.author.id == "user_id":

如果你真的想使用其他东西,你可以使用message.author.namemessage.author.nick

【讨论】:

对于第一个,我确实有它,所以它不会回复自己,但它仍然会这样做。至于第二个,谢谢!我不知道你可以获得用户 ID 我认为您遇到的问题是机器人删除了该消息,但您的 Discord 客户端并未将其显示为已删除。我有时会发生这种情况,但是除了您之外没有人看到该消息,因此无论如何它都被有效地删除了。希望这有帮助! 确实有帮助!你的两个建议都有帮助!谢谢!

以上是关于discord.py Bot 并不总是删除消息的主要内容,如果未能解决你的问题,请参考以下文章

discord.py bot 找到要删除的频道消息,但显示其客户端 ID 与我的相同

如何删除 discord.py 中的消息信息?

用户执行命令后,如何删除 discord.py 中的消息?

Discord bot 添加对消息 discord.py 的反应(无自定义表情符号)

在 Discord (discord.py bot) 中仅从 1 个频道发送消息

{discord.py} 删除特定用户的特定信息