如何在Discord.py中清除特定用户的消息

时间:2020-10-13 03:59:54

标签: python discord discord.py discord.py-rewrite purge

嘿,所以我试图在discord.py中改写命令,正在执行类似let Teacher = function() { this.age = 12 } Teacher.prototype.job = function() { return "I teach"; } let professor = new Professor(); professor.job(); // "I teach" 的操作,该操作会清除发送该消息的用户的5条消息,但是由于某种原因,它将无法正常工作。我在回复中使用它,因此它不会显示错误;-;但是到目前为止,这是我为使之正常工作所做的事情!

>purgemessage 5

1 个答案:

答案 0 :(得分:0)

我还没有做完彻底的测试,但是我遇到的第一个错误是(在齿轮之外重写以便可以快速测试之后)

discord.errors.HTTPException:400错误的请求(错误代码:50034):您只能批量删除14天以内的邮件。

此错误可能是由于您的代码未包含任何内容而导致在到达amount之后停止添加消息,并继续向用户返回频道中的整个历史记录。
取决于您要测试的渠道,这很可能不是您遇到的错误。我强烈建议您开始在会向您显示错误的环境中工作,以便我们更好地帮助您。
我对调试给定的代码还不了解,但是下面的代码可以用更少的代码来完成您想要的事情,并且我知道可以工作:

channel = ctx.channel
await channel.purge(limit=amount, check=lambda message: message.author == ctx.author)

ctx.channel是发送命令的通道,ctx.author是发送命令的通道。
channel.purgepurge limit满足check函数的消息数量,在这种情况下,该消息是lambda(在一行中定义的函数,看起来像这样:{{ 1}}。lambda会隐式返回表达式)。

check关键字将通过lambda argument: expression作为参数,因此我已经适当地使用了lambda参数命名。该表达式检查我们正在检查的消息(message)是否由命令的调用者(message.author)编写。

即使对于超过14天的邮件,此代码也有效,但是对于大量邮件,确实需要一些时间。