logging: another roles edgecase

This commit is contained in:
Cynthia Foxwell 2025-04-24 14:04:16 -06:00
parent 6cfe1a9e62
commit 70758af75c
Signed by: Cynosphere
SSH key fingerprint: SHA256:H3SM8ufP/uxqLwKSH7xY89TDnbR9uOHzjLoBr0tlajk

View file

@ -131,29 +131,44 @@ events.add("guildAuditLogEntryCreate", "logging", async function (entry) {
break;
}
case AuditLogActions.MEMBER_ROLE_UPDATE: {
const added = entry.after.$add != null;
const isAdd = entry.after.$add != null;
const isSelf = entry.user.id === entry.targetID;
const roles = entry.after.$add ?? entry.after.$remove;
const added = entry.after.$add;
const removed = entry.after.$remove;
let roles = added ?? removed;
const addAndRemove = added != null && removed != null;
if (addAndRemove) roles = [...added, ...removed];
const plural = roles.length > 1 ? "s" : "";
channel
.createMessage({
embeds: [
{
color: added ? COLOR_ADDED : COLOR_REMOVED,
color: addAndRemove ? COLOR_CHANGED : isAdd ? COLOR_ADDED : COLOR_REMOVED,
title: `Member Role${plural} Updated`,
description: `<@${entry.user.id}> (${formatUsername(entry.user)}) ${added ? "added" : "removed"} ${
roles.length > 1 ? `${roles.length} ` : ""
}role${plural} ${added ? "to" : "from"} ${
description: `<@${entry.user.id}> (${formatUsername(entry.user)}) ${
addAndRemove ? "added and removed" : isAdd ? "added" : "removed"
} ${roles.length > 1 ? `${roles.length} ` : ""}role${plural} ${added ? "to" : "from"} ${
isSelf ? "self" : `<@${entry.targetID}> (${formatUsername(entry.target.user)})`
}`,
timestamp: new Date().toISOString(),
fields: [
{
!addAndRemove && {
name: `Role${plural}`,
value: roles.map((role) => `<@&${role.id}> (${role.name})`).join("\n"),
},
],
addAndRemove && {
name: "Added",
value: added.map((role) => `<@&${role.id}> (${role.name})`).join("\n"),
},
addAndRemove && {
name: "Removed",
value: removed.map((role) => `<@&${role.id}> (${role.name})`).join("\n"),
},
].filter((x) => !!x),
footer: {
text: `Role ID${plural}: ${roles.map((role) => role.id).join(", ")}`,
},