【问题标题】:how to get specific info from audit logs discord py如何从审计日志中获取特定信息 discord py
【发布时间】:2020-11-12 05:55:21
【问题描述】:

我需要审核日志来提供有关名称更改的信息,而不是所有日志。这是我正在使用的当前代码。您可以将其修改为仅读取某些日志

async def save_audit_logs(guild):
 with open(f'audit_logs_{guild.name}', 'w+') as f:
      async for entry in guild.audit_logs(limit=100):
           f.write('{0.user} did {0.action} to {0.target}'.format(entry))

@client.event
    async def on_message(message):
    if message.content.startswith('audit'):
        await save_audit_logs(message.channel.guild)

【问题讨论】:

  • 我的机器人可以记录自己的名字更改,但如果有人更改了别人的名字,它不会记录

标签: discord.py


【解决方案1】:

您可以使用on_member_update() 来执行此操作:

@client.event
async def on_member_update(self, before, after):
    channel = get(before.guild.text_channels, name='log channel name')
    if before.display_name != after.display_name:
        await channel.send(f'{before.mention} changed named')

如果您想知道谁更改了用户名:

entry = list(await after.guild.audit_logs(limit=1).flatten())[0]
user = entry.user

如果您想访问旧名称和新名称:

prev_name = before.display_name
cur_name = after.display_name

【讨论】:

  • 它是一个很好的孤例,但它只在有人更改机器人用户名时记录我想记录所有名称更改
  • 它会记录每一个名字的变化,不仅仅是机器人的名字:) 如果不是这样,你没有enabled Intents
猜你喜欢
  • 2020-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-26
  • 1970-01-01
  • 2018-12-15
相关资源
最近更新 更多