Discord.py开发疑问:管理员踢出语音频道用户时审计日志Target显示None
在discord.py中获取语音频道移出操作的目标用户
- 你遇到的
Target字段为None是正常现象,因为member_move类型的审计日志不会把目标用户放在常规的target属性里,而是存储在extra对象中。 - 要获取被管理员移动/踢出的用户,直接访问审计日志条目的
entry.extra.members即可,这是一个包含所有受影响用户的列表。 - 示例代码实现:
@bot.event async def on_audit_log_entry_create(entry): if entry.action == discord.AuditLogAction.member_move: admin = entry.user # 获取所有被移出的用户 affected_users = entry.extra.members # 区分是踢出还是移动:after_channel为None则是踢出 is_kick = entry.extra.after_channel is None for user in affected_users: action = "踢出" if is_kick else "移动" print(f"管理员 {admin.display_name} 将用户 {user.display_name} {action} 出语音频道")
- 注意事项:机器人必须拥有
view_audit_log权限,否则无法读取完整的审计日志内容。
内容的提问来源于stack exchange,提问作者user28857236
相关产品推荐
相关产品推荐

