Discord Bot Python删除作者的消息

时间:2018-05-17 20:31:53

标签: python discord

我做了一个小的不和谐机器人以获得一些乐趣:

我想在作者运行此命令时删除作者的消息。但这不起作用。

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

2 个答案:

答案 0 :(得分:2)

查看他们的docslogs_from会占用一个频道,还有其他参数可供您使用 过滤要检索的邮件。

因此,如果您只想删除所有邮件,则可以执行类似

的操作
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)

将删除在该命令中键入的用户的所有消息。您的机器人必须拥有该频道的manage messages权限。

请注意,返回的消息数量是有限的,在这里我只写下一些任意的无意义限制。如果你想要准确,你必须弄清楚频道中有多少消息,然后用它作为限制。

我在最近5分钟内查找了discord API,所以我不知道是否有更有效的方法来实现它。

答案 1 :(得分:1)

您的问题出在client.logs_from(message.channel, message.author)声明中。 logs_from接受以下参数:logs_from(channel, limit=100, *, before=None, after=None, around=None, reverse=False)。见the API reference。所以你有两个频道参数logs_from只接受1.也许你打算client.logs_from(message.author)代替?