Discord.py 从审计日志中删除一些消息

时间:2021-05-17 13:40:31

标签: discord.py

我正在使用 discord.py 制作日志系统。现在,我正在尝试获取从单个审核日志条目中删除的消息数(因为有时审核日志会更新条目而不是创建新条目),因此我尝试使用“entry.action.count”。这是我的代码

@client.command()
@commands.has_permissions(administrator=True)
async def deletecount(ctx):
    async for entry in ctx.guild.audit_logs(limit=1, action=discord.AuditLogAction.message_delete):
        print(entry.action.count)

但不是打印删除的消息数,它只是打印

<built-in method count of _EnumValue_AuditLogAction object at 0x000001FF9769C640>

从这个 screenshot 开始,在这种情况下,最新条目有 5 条已删除的消息。我试图打印出那个“5”。那么如何获取从最新审核日志条目中删除的消息数量?该文档没有关于如何使用 entry.action 的额外属性的更多信息。

我还应该补充一点,我曾向某人询问过这个问题,他们建议尝试print(entry.action.count()),但我得到了

TypeError: tuple.count() takes exactly one argument (0 given)

那里应该给出的论点是什么?提前致谢。

2 个答案:

答案 0 :(得分:0)

据我所知,这是不可能的。每次有人删除此频道中的消息时,您都可以计算一个计数器,但遗憾的是,这无法通过审核日志实现。

答案 1 :(得分:0)

有可能,使用 extra 属性,它会返回一个包含你想要的数据的字典(文档没有给你很多关于它的信息,因为返回值与操作类型不同):

async for entry in ctx.guild.audit_logs(limit=1, action=discord.AuditLogAction.message_bulk_delete):
    count = entry.extra['count']

AuditLogEntry.extra 的返回值因事件类型而异,上面的示例仅适用于 message_bulk_delete

PS:您在迭代器中使用了错误的 action,应该是 AuditLogAction.message_bulk_delete 而不是 AuditLogAction.message_delete

参考:

相关问题