我正在使用 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)
那里应该给出的论点是什么?提前致谢。
答案 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