【问题标题】:Discord.py Getting a number of messages deleted from audit logDiscord.py 获取从审计日志中删除的大量消息
【发布时间】:2021-05-17 23:15:38
【问题描述】:

我正在用 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)

应该在那里给出什么论据?提前致谢。

【问题讨论】:

    标签: discord.py


    【解决方案1】:

    有可能,使用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

    参考资料:

    【讨论】:

    • 我现在明白了。虽然不一定与您的答案相同,但您的答案确实有助于弄清楚如何使用该属性。事实证明,使用该属性的正确方法是entry.extra.count。此外,它确实适用于 AuditLogAction.message_delete 以及 AuditLogAction.message_bulk_delete。非常感谢您的帮助。
    • 我很乐意提供帮助,entry.action 属性返回给我一个这样的字典:{"count": "5"},奇怪的是你得到了另一个东西......
    猜你喜欢
    • 1970-01-01
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    • 2017-06-18
    • 2018-06-29
    • 1970-01-01
    相关资源
    最近更新 更多