@client.event
async def on_guild_channel_delete(channel):
entry = await channel.guild.audit_logs(action=discord.AuditLogAction.channel_delete, limit=1).get()
print("User {} deleted channel {} at time {}".format(entry.user.name, channel.name, entry.created_at))
通道删除事件上的输出:
User MyDeleter deleted channel my-test-channel at time 2020-09-22 03:08:11.638000
发生的情况:guild.audit_logs()将条目返回到公会的审核日志中(我们从channel.guild获取公会)。 .get()返回该迭代器中的第一项,它将是最新的条目。 action=discord.AuditLogAction.channel_delete将只查找删除频道的条目。
limit=1将在最大返回1个事件时返回。对于编写迭代器很有用,但是如果使用.get(),这是不必要的,但是我还是会保留它,以防有效率方面的好处(事实上,在我写这篇文章之前,我忘记了它在那里)
> discord.on_guild_channel_delete(channel)
> Called whenever a guild channel is deleted or created
> Parameters
> channel (abc.GuildChannel) – The guild channel that got created or deleted.
编辑 要分析通道删除事件上的audit logs,请尝试以下操作(您的bot需要查看审核日志的权限):
通道删除事件上的输出:
User MyDeleter deleted channel my-test-channel at time 2020-09-22 03:08:11.638000
发生的情况:
guild.audit_logs()
将条目返回到公会的审核日志中(我们从channel.guild
获取公会)。.get()
返回该迭代器中的第一项,它将是最新的条目。action=discord.AuditLogAction.channel_delete
将只查找删除频道的条目。limit=1
将在最大返回1个事件时返回。对于编写迭代器很有用,但是如果使用.get()
,这是不必要的,但是我还是会保留它,以防有效率方面的好处(事实上,在我写这篇文章之前,我忘记了它在那里)关于从通道删除事件获取删除程序(原始答案): 从docs
唯一可用的参数是
channel
。同样的限制也适用于角色,唯一的参数是
role
。如果出于调节目的需要此信息,Discord会将此信息存储在服务器设置中>;审核日志
进一步: 我注意到您使用参数ctx(context)调用它,对于事件来说,按参数的具体内容引用参数是一种很好的做法,因为它不像命令的第一个参数那样携带大量信息(context)。 可以这样称呼:
相关问题 更多 >
编程相关推荐