From 70758af75c51e30dc9b20704fb506eb5560cb457 Mon Sep 17 00:00:00 2001 From: Cynthia Foxwell Date: Thu, 24 Apr 2025 14:04:16 -0600 Subject: [PATCH] logging: another roles edgecase --- src/modules/logging.js | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/src/modules/logging.js b/src/modules/logging.js index 45866a8..0db2201 100644 --- a/src/modules/logging.js +++ b/src/modules/logging.js @@ -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(", ")}`, },