diff --git a/backend/src/plugins/Logs/LogsPlugin.ts b/backend/src/plugins/Logs/LogsPlugin.ts index 7a143a0f..243c83e5 100644 --- a/backend/src/plugins/Logs/LogsPlugin.ts +++ b/backend/src/plugins/Logs/LogsPlugin.ts @@ -11,7 +11,6 @@ import { onMessageDeleteBulk } from "./util/onMessageDeleteBulk"; import { onMessageUpdate } from "./util/onMessageUpdate"; import { LogsGuildMemberAddEvt } from "./events/LogsGuildMemberAddEvt"; import { LogsGuildMemberRemoveEvt } from "./events/LogsGuildMemberRemoveEvt"; -import { LogsGuildBanAddEvt, LogsGuildBanRemoveEvt } from "./events/LogsGuildBanEvts"; import { LogsGuildMemberUpdateEvt, LogsUserUpdateEvt } from "./events/LogsUserUpdateEvts"; import { LogsChannelCreateEvt, LogsChannelDeleteEvt } from "./events/LogsChannelModifyEvts"; import { LogsRoleCreateEvt, LogsRoleDeleteEvt } from "./events/LogsRoleModifyEvts"; @@ -52,8 +51,6 @@ export const LogsPlugin = zeppelinPlugin()("logs", { events: [ LogsGuildMemberAddEvt, LogsGuildMemberRemoveEvt, - LogsGuildBanAddEvt, - LogsGuildBanRemoveEvt, LogsGuildMemberUpdateEvt, LogsUserUpdateEvt, LogsChannelCreateEvt, diff --git a/backend/src/plugins/Logs/events/LogsGuildBanEvts.ts b/backend/src/plugins/Logs/events/LogsGuildBanEvts.ts deleted file mode 100644 index 25c4c808..00000000 --- a/backend/src/plugins/Logs/events/LogsGuildBanEvts.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { logsEvent } from "../types"; -import { stripObjectToScalars, findRelevantAuditLogEntry, UnknownUser } from "src/utils"; -import { LogType } from "src/data/LogType"; -import { Constants as ErisConstants } from "eris"; - -export const LogsGuildBanAddEvt = logsEvent({ - event: "guildBanAdd", - - async listener(meta) { - const pluginData = meta.pluginData; - const user = meta.args.user; - - const relevantAuditLogEntry = await findRelevantAuditLogEntry( - pluginData.guild, - ErisConstants.AuditLogActions.MEMBER_BAN_ADD, - user.id, - ); - const mod = relevantAuditLogEntry ? relevantAuditLogEntry.user : new UnknownUser(); - - pluginData.state.guildLogs.log( - LogType.MEMBER_BAN, - { - mod: stripObjectToScalars(mod), - user: stripObjectToScalars(user), - }, - user.id, - ); - }, -}); - -export const LogsGuildBanRemoveEvt = logsEvent({ - event: "guildBanRemove", - - async listener(meta) { - const pluginData = meta.pluginData; - const user = meta.args.user; - - const relevantAuditLogEntry = await findRelevantAuditLogEntry( - pluginData.guild, - ErisConstants.AuditLogActions.MEMBER_BAN_REMOVE, - user.id, - ); - const mod = relevantAuditLogEntry ? relevantAuditLogEntry.user : new UnknownUser(); - - pluginData.state.guildLogs.log( - LogType.MEMBER_UNBAN, - { - mod: stripObjectToScalars(mod), - userId: user.id, - }, - user.id, - ); - }, -}); diff --git a/backend/src/plugins/ModActions/commands/ForcebanCmd.ts b/backend/src/plugins/ModActions/commands/ForcebanCmd.ts index d75d158c..0fc1ddbe 100644 --- a/backend/src/plugins/ModActions/commands/ForcebanCmd.ts +++ b/backend/src/plugins/ModActions/commands/ForcebanCmd.ts @@ -87,6 +87,7 @@ export const ForcebanCmd = modActionsCommand({ pluginData.state.serverLogs.log(LogType.MEMBER_FORCEBAN, { mod: stripObjectToScalars(mod.user), userId: user.id, + caseNumber: createdCase.case_number, reason, }); }, diff --git a/backend/src/plugins/ModActions/commands/NoteCmd.ts b/backend/src/plugins/ModActions/commands/NoteCmd.ts index c07eab6f..e7ad485d 100644 --- a/backend/src/plugins/ModActions/commands/NoteCmd.ts +++ b/backend/src/plugins/ModActions/commands/NoteCmd.ts @@ -36,6 +36,7 @@ export const NoteCmd = modActionsCommand({ pluginData.state.serverLogs.log(LogType.MEMBER_NOTE, { mod: stripObjectToScalars(msg.author), user: stripObjectToScalars(user, ["user", "roles"]), + caseNumber: createdCase.case_number, reason, }); diff --git a/backend/src/plugins/ModActions/commands/UnbanCmd.ts b/backend/src/plugins/ModActions/commands/UnbanCmd.ts index 32754c9c..7ad47848 100644 --- a/backend/src/plugins/ModActions/commands/UnbanCmd.ts +++ b/backend/src/plugins/ModActions/commands/UnbanCmd.ts @@ -70,6 +70,7 @@ export const UnbanCmd = modActionsCommand({ pluginData.state.serverLogs.log(LogType.MEMBER_UNBAN, { mod: stripObjectToScalars(mod.user), userId: user.id, + caseNumber: createdCase.case_number, reason, }); }, diff --git a/backend/src/plugins/ModActions/events/CreateBanCaseOnManualBanEvt.ts b/backend/src/plugins/ModActions/events/CreateBanCaseOnManualBanEvt.ts index 764055f3..eeace843 100644 --- a/backend/src/plugins/ModActions/events/CreateBanCaseOnManualBanEvt.ts +++ b/backend/src/plugins/ModActions/events/CreateBanCaseOnManualBanEvt.ts @@ -6,6 +6,8 @@ import { Constants as ErisConstants } from "eris"; import { safeFindRelevantAuditLogEntry } from "../functions/safeFindRelevantAuditLogEntry"; import { CasesPlugin } from "../../Cases/CasesPlugin"; import { CaseTypes } from "../../../data/CaseTypes"; +import { LogType } from "src/data/LogType"; +import { stripObjectToScalars, resolveUser } from "src/utils"; /** * Create a BAN case automatically when a user is banned manually. @@ -26,24 +28,39 @@ export const CreateBanCaseOnManualBanEvt = eventListener() ); const casesPlugin = pluginData.getPlugin(CasesPlugin); + + let createdCase; + let mod = null; + let reason = ""; + if (relevantAuditLogEntry) { const modId = relevantAuditLogEntry.user.id; const auditLogId = relevantAuditLogEntry.id; - casesPlugin.createCase({ + mod = resolveUser(pluginData.client, modId); + reason = relevantAuditLogEntry.reason; + createdCase = await casesPlugin.createCase({ userId: user.id, modId, type: CaseTypes.Ban, auditLogId, - reason: relevantAuditLogEntry.reason, + reason, automatic: true, }); } else { - casesPlugin.createCase({ + createdCase = await casesPlugin.createCase({ userId: user.id, modId: null, type: CaseTypes.Ban, }); } + + mod = await mod; + pluginData.state.serverLogs.log(LogType.MEMBER_BAN, { + mod: mod ? stripObjectToScalars(mod, ["user"]) : null, + user: stripObjectToScalars(user, ["user"]), + caseNumber: createdCase.case_number, + reason, + }); }, ); diff --git a/backend/src/plugins/ModActions/events/CreateKickCaseOnManualKickEvt.ts b/backend/src/plugins/ModActions/events/CreateKickCaseOnManualKickEvt.ts index 6606b708..e10e6836 100644 --- a/backend/src/plugins/ModActions/events/CreateKickCaseOnManualKickEvt.ts +++ b/backend/src/plugins/ModActions/events/CreateKickCaseOnManualKickEvt.ts @@ -30,13 +30,14 @@ export const CreateKickCaseOnManualKickEvt = eventListener if (kickAuditLogEntry) { const existingCaseForThisEntry = await pluginData.state.cases.findByAuditLogId(kickAuditLogEntry.id); + let createdCase; if (existingCaseForThisEntry) { logger.warn( `Tried to create duplicate case for audit log entry ${kickAuditLogEntry.id}, existing case id ${existingCaseForThisEntry.id}`, ); } else { const casesPlugin = pluginData.getPlugin(CasesPlugin); - casesPlugin.createCase({ + createdCase = await casesPlugin.createCase({ userId: member.id, modId: kickAuditLogEntry.user.id, type: CaseTypes.Kick, @@ -49,6 +50,7 @@ export const CreateKickCaseOnManualKickEvt = eventListener pluginData.state.serverLogs.log(LogType.MEMBER_KICK, { user: stripObjectToScalars(member.user), mod: stripObjectToScalars(kickAuditLogEntry.user), + caseNumber: createdCase.case_number, }); } }, diff --git a/backend/src/plugins/ModActions/events/CreateUnbanCaseOnManualUnbanEvt.ts b/backend/src/plugins/ModActions/events/CreateUnbanCaseOnManualUnbanEvt.ts index 9e9fd7a5..4dfde252 100644 --- a/backend/src/plugins/ModActions/events/CreateUnbanCaseOnManualUnbanEvt.ts +++ b/backend/src/plugins/ModActions/events/CreateUnbanCaseOnManualUnbanEvt.ts @@ -6,6 +6,8 @@ import { Constants as ErisConstants } from "eris"; import { safeFindRelevantAuditLogEntry } from "../functions/safeFindRelevantAuditLogEntry"; import { CasesPlugin } from "../../Cases/CasesPlugin"; import { CaseTypes } from "../../../data/CaseTypes"; +import { stripObjectToScalars, resolveUser } from "src/utils"; +import { LogType } from "src/data/LogType"; /** * Create an UNBAN case automatically when a user is unbanned manually. @@ -26,11 +28,16 @@ export const CreateUnbanCaseOnManualUnbanEvt = eventListener, @@ -106,7 +107,7 @@ export async function muteUser( // Create/update a case const casesPlugin = pluginData.getPlugin(CasesPlugin); - let theCase; + let theCase: Case; if (existingMute && existingMute.case_id) { // Update old case @@ -153,12 +154,14 @@ export async function muteUser( mod: stripObjectToScalars(mod), user: stripObjectToScalars(user), time: timeUntilUnmute, + caseNumber: theCase.case_number, reason, }); } else { pluginData.state.serverLogs.log(LogType.MEMBER_MUTE, { mod: stripObjectToScalars(mod), user: stripObjectToScalars(user), + caseNumber: theCase.case_number, reason, }); } diff --git a/backend/src/plugins/Mutes/functions/unmuteUser.ts b/backend/src/plugins/Mutes/functions/unmuteUser.ts index 6e8af597..cebbdf9b 100644 --- a/backend/src/plugins/Mutes/functions/unmuteUser.ts +++ b/backend/src/plugins/Mutes/functions/unmuteUser.ts @@ -72,6 +72,7 @@ export async function unmuteUser( pluginData.state.serverLogs.log(LogType.MEMBER_TIMED_UNMUTE, { mod: stripObjectToScalars(mod), user: stripObjectToScalars(user), + caseNumber: createdCase.case_number, time: timeUntilUnmute, reason: caseArgs.reason, }); @@ -79,6 +80,7 @@ export async function unmuteUser( pluginData.state.serverLogs.log(LogType.MEMBER_UNMUTE, { mod: stripObjectToScalars(mod), user: stripObjectToScalars(user), + caseNumber: createdCase.case_number, reason: caseArgs.reason, }); }