From bf25342122a7ac2f0953f72c901f076220041a92 Mon Sep 17 00:00:00 2001 From: Dragory Date: Sun, 13 Jan 2019 18:10:48 +0200 Subject: [PATCH] Add 'joined with prior records' log entry --- src/data/DefaultLogMessages.json | 4 +++- src/data/LogType.ts | 4 +++- src/plugins/Logs.ts | 16 ++++++++++++++-- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/data/DefaultLogMessages.json b/src/data/DefaultLogMessages.json index 3a2768fe..11cf9fc3 100644 --- a/src/data/DefaultLogMessages.json +++ b/src/data/DefaultLogMessages.json @@ -43,5 +43,7 @@ "CASE_CREATE": "✏ **{mod.username}#{mod.discriminator}** (`{mod.id}`) manually created new **{caseType}** case (#{caseNum})", - "MASSBAN": "⚒ **{mod.username}#{mod.discriminator}** massbanned {count} users" + "MASSBAN": "⚒ **{mod.username}#{mod.discriminator}** massbanned {count} users", + + "MEMBER_JOIN_WITH_PRIOR_RECORDS": "⚠ **{member.user.username}#{member.user.discriminator}** joined with prior records ({caseCount} case(s))" } diff --git a/src/data/LogType.ts b/src/data/LogType.ts index 975e0224..a3d83083 100644 --- a/src/data/LogType.ts +++ b/src/data/LogType.ts @@ -42,5 +42,7 @@ export enum LogType { MASSBAN, MEMBER_TIMED_MUTE, - MEMBER_TIMED_UNMUTE + MEMBER_TIMED_UNMUTE, + + MEMBER_JOIN_WITH_PRIOR_RECORDS } diff --git a/src/plugins/Logs.ts b/src/plugins/Logs.ts index 9cd5f6fe..47afc7de 100644 --- a/src/plugins/Logs.ts +++ b/src/plugins/Logs.ts @@ -19,6 +19,7 @@ import diff from "lodash.difference"; import { GuildSavedMessages } from "../data/GuildSavedMessages"; import { SavedMessage } from "../data/entities/SavedMessage"; import { GuildArchives } from "../data/GuildArchives"; +import { GuildCases } from "../data/GuildCases"; interface ILogChannel { include?: string[]; @@ -36,11 +37,12 @@ const unknownUser = { }; export class LogsPlugin extends Plugin { - public static pluginName = 'logs'; + public static pluginName = "logs"; protected guildLogs: GuildLogs; protected savedMessages: GuildSavedMessages; protected archives: GuildArchives; + protected cases: GuildCases; protected logListener; @@ -64,6 +66,7 @@ export class LogsPlugin extends Plugin { this.guildLogs = new GuildLogs(this.guildId); this.savedMessages = GuildSavedMessages.getInstance(this.guildId); this.archives = GuildArchives.getInstance(this.guildId); + this.cases = GuildCases.getInstance(this.guildId); this.logListener = ({ type, data }) => this.log(type, data); this.guildLogs.on("log", this.logListener); @@ -118,7 +121,7 @@ export class LogsPlugin extends Plugin { } @d.event("guildMemberAdd") - onMemberJoin(_, member) { + async onMemberJoin(_, member) { const newThreshold = moment().valueOf() - 1000 * 60 * 60; const accountAge = humanizeDuration(moment().valueOf() - member.createdAt, { largest: 2, @@ -130,6 +133,15 @@ export class LogsPlugin extends Plugin { new: member.createdAt >= newThreshold ? " :new:" : "", account_age: accountAge }); + + const cases = (await this.cases.getByUserId(member.id)).filter(c => !c.is_hidden); + + if (cases.length) { + this.guildLogs.log(LogType.MEMBER_JOIN_WITH_PRIOR_RECORDS, { + member: stripObjectToScalars(member, ["user"]), + caseCount: cases.length + }); + } } @d.event("guildMemberRemove")