50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
"""J.A.R.V.I.S. Modlog Cog Utilities."""
|
|
from datetime import datetime, timedelta
|
|
from typing import List
|
|
|
|
import discord
|
|
from discord import AuditLogEntry, Member
|
|
from discord.utils import find
|
|
|
|
from jarvis.utils import build_embed
|
|
from jarvis.utils.field import Field
|
|
|
|
|
|
def modlog_embed(
|
|
member: discord.Member,
|
|
admin: discord.Member,
|
|
log: discord.AuditLogEntry,
|
|
title: str,
|
|
desc: str,
|
|
) -> discord.Embed:
|
|
"""Get modlog embed."""
|
|
fields = [
|
|
Field(
|
|
name="Moderator",
|
|
value=f"{admin.mention} ({admin.name}#{admin.discriminator})",
|
|
),
|
|
]
|
|
if log.reason:
|
|
fields.append(Field(name="Reason", value=log.reason, inline=False))
|
|
embed = build_embed(
|
|
title=title,
|
|
description=desc,
|
|
color="#fc9e3f",
|
|
fields=fields,
|
|
timestamp=log.created_at,
|
|
)
|
|
embed.set_author(
|
|
name=f"{member.name}",
|
|
icon_url=member.avatar_url,
|
|
)
|
|
embed.set_footer(text=f"{member.name}#{member.discriminator} | {member.id}")
|
|
return embed
|
|
|
|
|
|
def get_latest_log(auditlog: List[AuditLogEntry], target: Member) -> AuditLogEntry:
|
|
"""Filter AuditLog to get latest entry."""
|
|
before = datetime.utcnow() - timedelta(seconds=10)
|
|
return find(
|
|
lambda x: x.target.id == target.id and x.created_at > before,
|
|
auditlog,
|
|
)
|