不一致的机器人Python删除作者';s信息

不一致的机器人Python删除作者';s信息,python,discord,Python,Discord,为了好玩,我制作了一个小的discord机器人: 我希望在作者运行此命令时删除作者的消息。但这是行不通的 if message.content.startswith('Delete me.'): async for msg in client.logs_from(message.channel, message.author): await client.delete_message(msg) 您的问题出现在(message.channel,message.au

为了好玩,我制作了一个小的discord机器人:

我希望在作者运行此命令时删除作者的消息。但这是行不通的

if message.content.startswith('Delete me.'):
    async for msg in client.logs_from(message.channel, message.author):
            await client.delete_message(msg)

您的问题出现在(message.channel,message.author)语句的
客户机.logs\u中
logs\u from
接受以下参数:
logs\u from(channel,limit=100,*,before=None,after=None,around=None,reverse=False)
。看见因此,您有两个通道参数,
logs\u from
只接受1。也许您打算改为使用(message.author)
client.logs\u

您的问题出现在
客户机的日志中(message.channel,message.author)
语句
logs\u from
接受以下参数:
logs\u from(channel,limit=100,*,before=None,after=None,around=None,reverse=False)
。看见因此,您有两个通道参数,
logs\u from
只接受1。也许您打算改为使用(message.author)
client.logs\u

查看他们的,
日志从
获取一个频道,以及允许您 筛选要检索的邮件

因此,如果您只想删除所有消息,您可以执行以下操作

async def on_message(message):
    NONSENSE_LIMIT = 999999999999
    if message.content.startswith('!delete'):
        async for log in client.logs_from(message.channel, limit=NONSENSE_LIMIT):            
            if log.author == message.author:
                await client.delete_message(log)
这将删除在该命令中键入的用户的所有消息。您的bot必须具有该频道的
管理消息
权限

请注意,返回的消息数量是有限的,这里我只写下一些任意的无意义限制。如果你想准确,你必须计算出频道中有多少条消息,然后以此作为限制

在过去的5分钟里,我只是查找了discord API,所以我不知道是否有更有效的方法来执行此操作。

查看他们的,
日志需要一个通道,以及允许您
筛选要检索的邮件

因此,如果您只想删除所有消息,您可以执行以下操作

async def on_message(message):
    NONSENSE_LIMIT = 999999999999
    if message.content.startswith('!delete'):
        async for log in client.logs_from(message.channel, limit=NONSENSE_LIMIT):            
            if log.author == message.author:
                await client.delete_message(log)
这将删除在该命令中键入的用户的所有消息。您的bot必须具有该频道的
管理消息
权限

请注意,返回的消息数量是有限的,这里我只写下一些任意的无意义限制。如果你想准确,你必须计算出频道中有多少条消息,然后以此作为限制


我只是在最后5分钟查找了discord API,所以我不知道是否有更有效的方法。

谁告诉过你logs\u from接受作者作为第二个位置参数?这是为了
限制
。嗨@narae choi别忘了接受有效答案,并对答案进行投票以提高投稿人的声誉!如果你找到了答案,那就太棒了!另外,别忘了,你也可以向上投一些有帮助的评论,以增加你的理解力!谁告诉你把作者作为第二个位置参数?这是为了
限制
。嗨@narae choi别忘了接受有效答案,并对答案进行投票以提高投稿人的声誉!如果你找到了答案,那就太棒了!另外,别忘了,你也可以向上投一些有帮助的评论,以增加你的理解力!非常感谢。但是来自(message.author)
的这个
client.logs\u也不起作用<代码>discord.errors.NotFound:未找到(状态代码:404):未知频道
如何解决此问题?@NaraeChoi您需要输入正确的频道名称,我只是猜测而已。我只能看到您的代码片段,因此我不知道您的频道是如何命名的。@NaraeChoi读取可接受的参数时,函数在任何地方都不接受author参数。非常感谢。但是来自(message.author)
的这个
client.logs\u也不起作用<代码>discord.errors.NotFound:未找到(状态代码:404):未知频道
如何解决此问题?@NaraeChoi您需要输入正确的频道名称,我只是猜测而已。我只能看到您的代码片段,因此我不知道您的频道是如何命名的。@NaraeChoi读取可接受的参数时,函数在任何地方都不接受author参数。但我不得不说,我查到的文档写得很好,很容易建立一个discord机器人。它只获取最后100条消息,其中删除了用户发布的消息。我认为OP希望删除作者的所有消息,而不仅仅是用户在最后100条消息中发送的消息。不,没有比这更有效的方法了,因为discord.py本机不支持它(如果你想从函数链中重新写入整个日志,那么效率会更高)。@abccd你说得对,我只是注意到它默认为100。可能会硬编码一个无意义的限制,比如99999999,但是如果一个频道可以有更多的消息,那么这个限制就失败了。否则,我猜OP将不得不计算通道中的消息总数,并将其用作上限。这真的很有效!谢谢,但我必须说,我查到的文档写得很好,很容易建立一个discord机器人。它只获取最后100条消息,其中删除了用户发布的消息。我认为OP希望删除作者的所有消息,而不仅仅是用户在最后100条消息中发送的消息。不,没有比这更有效的方法了,因为discord.py本机不支持它(如果你想从函数链中重新写入整个日志,那么效率会更高)。@abccd你说得对,我只是注意到它默认为100。可能会硬编码一个无意义的限制,比如99999999,但是如果一个频道可以有更多的消息,那么这个限制就失败了。否则,我猜OP将不得不计算通道中的消息总数,并将其用作上限。这真的很有效!非常感谢。