Skip to content

Commit c4cafb6

Browse files
Log forward & embed data to mod log on autowarn
1 parent ac9034e commit c4cafb6

File tree

2 files changed

+27
-25
lines changed

2 files changed

+27
-25
lines changed

Events/MessageEvent.cs

+25-23
Original file line numberDiff line numberDiff line change
@@ -71,12 +71,12 @@ public static async Task MessageDeleted(DiscordClient client, MessageDeletedEven
7171
await DiscordHelpers.DoEmptyThreadCleanupAsync(e.Channel, e.Message);
7272
}
7373

74-
static async Task DeleteAndWarnAsync(DiscordMessage message, string reason, DiscordClient client)
74+
static async Task DeleteAndWarnAsync(DiscordMessage message, string reason, DiscordClient client, string messageContentOverride = default)
7575
{
76-
await DeleteAndWarnAsync(new MockDiscordMessage(message), reason, client);
76+
await DeleteAndWarnAsync(new MockDiscordMessage(message), reason, client, messageContentOverride: messageContentOverride);
7777
}
7878

79-
static async Task DeleteAndWarnAsync(MockDiscordMessage message, string reason, DiscordClient client, bool wasAutoModBlock = false)
79+
static async Task DeleteAndWarnAsync(MockDiscordMessage message, string reason, DiscordClient client, bool wasAutoModBlock = false, string messageContentOverride = default)
8080
{
8181
var channel = message.Channel;
8282
DiscordMessage msg;
@@ -100,7 +100,7 @@ static async Task DeleteAndWarnAsync(MockDiscordMessage message, string reason,
100100

101101
try
102102
{
103-
_ = InvestigationsHelpers.SendInfringingMessaageAsync("mod", message, reason, null, wasAutoModBlock: wasAutoModBlock);
103+
_ = InvestigationsHelpers.SendInfringingMessaageAsync("mod", message, reason, null, wasAutoModBlock: wasAutoModBlock, messageContentOverride: messageContentOverride);
104104
}
105105
catch
106106
{
@@ -121,7 +121,8 @@ public static async Task MessageHandlerAsync(DiscordClient client, MockDiscordMe
121121

122122
string msgContentWithEmbedData = message.Content;
123123
var embeds = new List<DiscordEmbed>();
124-
embeds.AddRange(message.Embeds);
124+
if (message.Embeds is not null)
125+
embeds.AddRange(message.Embeds.Where(embed => embed.Type != "auto_moderation_message"));
125126

126127
if (message.MessageSnapshots is not null)
127128
foreach (var snapshot in message.MessageSnapshots)
@@ -347,8 +348,8 @@ public static async Task MessageHandlerAsync(DiscordClient client, MockDiscordMe
347348
var mentionCount = message.MentionedUsers is not null && message.MentionedUsers.Count > 0 ? message.MentionedUsers.Count : message.MentionedUsersCount;
348349
string content = $"{Program.cfgjson.Emoji.Banned} {message.Author.Mention} was automatically banned for mentioning **{mentionCount}** users.";
349350
var chatMsg = await channel.SendMessageAsync(content);
350-
_ = InvestigationsHelpers.SendInfringingMessaageAsync("investigations", message, "Mass mentions (Ban threshold)", DiscordHelpers.MessageLink(chatMsg), content: content, wasAutoModBlock: wasAutoModBlock);
351-
_ = InvestigationsHelpers.SendInfringingMessaageAsync("mod", message, "Mass mentions (Ban threshold)", DiscordHelpers.MessageLink(chatMsg), content: content, wasAutoModBlock: wasAutoModBlock);
351+
_ = InvestigationsHelpers.SendInfringingMessaageAsync("investigations", message, "Mass mentions (Ban threshold)", DiscordHelpers.MessageLink(chatMsg), content: content, messageContentOverride: msgContentWithEmbedData, wasAutoModBlock: wasAutoModBlock);
352+
_ = InvestigationsHelpers.SendInfringingMessaageAsync("mod", message, "Mass mentions (Ban threshold)", DiscordHelpers.MessageLink(chatMsg), content: content, messageContentOverride: msgContentWithEmbedData, wasAutoModBlock: wasAutoModBlock);
352353
return;
353354
}
354355

@@ -374,7 +375,7 @@ public static async Task MessageHandlerAsync(DiscordClient client, MockDiscordMe
374375
string reason = listItem.Reason;
375376
try
376377
{
377-
await InvestigationsHelpers.SendInfringingMessaageAsync("mod", message, reason, null, wasAutoModBlock: wasAutoModBlock);
378+
await InvestigationsHelpers.SendInfringingMessaageAsync("mod", message, reason, null, messageContentOverride: msgContentWithEmbedData, wasAutoModBlock: wasAutoModBlock);
378379
}
379380
catch
380381
{
@@ -393,7 +394,7 @@ public static async Task MessageHandlerAsync(DiscordClient client, MockDiscordMe
393394

394395
DiscordMessage msg = await WarningHelpers.SendPublicWarningMessageAndDeleteInfringingMessageAsync(message, $"{Program.cfgjson.Emoji.Denied} {message.Author.Mention} was automatically warned: **{reason.Replace("`", "\\`").Replace("*", "\\*")}**", wasAutoModBlock, 1);
395396
var warning = await WarningHelpers.GiveWarningAsync(message.Author, client.CurrentUser, reason, contextMessage: msg, channel, " automatically ");
396-
await InvestigationsHelpers.SendInfringingMessaageAsync("investigations", message, reason, warning.ContextLink, extraField: ("Match", flaggedWord, true), wasAutoModBlock: wasAutoModBlock);
397+
await InvestigationsHelpers.SendInfringingMessaageAsync("investigations", message, reason, warning.ContextLink, extraField: ("Match", flaggedWord, true), messageContentOverride: msgContentWithEmbedData, wasAutoModBlock: wasAutoModBlock);
397398
return;
398399
}
399400
}
@@ -423,7 +424,7 @@ public static async Task MessageHandlerAsync(DiscordClient client, MockDiscordMe
423424
string reason = "Sent an unapproved invite";
424425
try
425426
{
426-
_ = InvestigationsHelpers.SendInfringingMessaageAsync("mod", message, reason, null, wasAutoModBlock: wasAutoModBlock);
427+
_ = InvestigationsHelpers.SendInfringingMessaageAsync("mod", message, reason, null, messageContentOverride: msgContentWithEmbedData, wasAutoModBlock: wasAutoModBlock);
427428
}
428429
catch
429430
{
@@ -432,7 +433,7 @@ public static async Task MessageHandlerAsync(DiscordClient client, MockDiscordMe
432433

433434
DiscordMessage msg = await WarningHelpers.SendPublicWarningMessageAndDeleteInfringingMessageAsync(message, $"{Program.cfgjson.Emoji.Denied} {message.Author.Mention} was automatically warned: **{reason.Replace("`", "\\`").Replace("*", "\\*")}**", wasAutoModBlock, 1);
434435
var warning = await WarningHelpers.GiveWarningAsync(message.Author, client.CurrentUser, reason, contextMessage: msg, channel, " automatically ");
435-
await InvestigationsHelpers.SendInfringingMessaageAsync("investigations", message, reason, warning.ContextLink, wasAutoModBlock: wasAutoModBlock);
436+
await InvestigationsHelpers.SendInfringingMessaageAsync("investigations", message, reason, warning.ContextLink, messageContentOverride: msgContentWithEmbedData, wasAutoModBlock: wasAutoModBlock);
436437
match = true;
437438
return;
438439
}
@@ -442,7 +443,7 @@ public static async Task MessageHandlerAsync(DiscordClient client, MockDiscordMe
442443
if ((await GetPermLevelAsync(member)) < (ServerPermLevel)Program.cfgjson.InviteTierRequirement && inviteMatches.Count > 3)
443444
{
444445
string reason = "Sent too many invites";
445-
await DeleteAndWarnAsync(message, reason, client, wasAutoModBlock);
446+
await DeleteAndWarnAsync(message, reason, client, wasAutoModBlock, messageContentOverride: msgContentWithEmbedData);
446447
match = true;
447448
return;
448449
}
@@ -469,7 +470,7 @@ public static async Task MessageHandlerAsync(DiscordClient client, MockDiscordMe
469470
if (!match)
470471
{
471472
string reason = "Sent an unapproved invite";
472-
await DeleteAndWarnAsync(message, reason, client, wasAutoModBlock);
473+
await DeleteAndWarnAsync(message, reason, client, wasAutoModBlock, messageContentOverride: msgContentWithEmbedData);
473474
match = true;
474475
}
475476
break;
@@ -502,7 +503,7 @@ public static async Task MessageHandlerAsync(DiscordClient client, MockDiscordMe
502503
string responseToSend = $"```json\n{JsonConvert.SerializeObject(maliciousCache)}\n```";
503504

504505
(string name, string value, bool inline) extraField = new("Cached API response", responseToSend, false);
505-
await InvestigationsHelpers.SendInfringingMessaageAsync("investigations", message, reason, warning.ContextLink, extraField, wasAutoModBlock: wasAutoModBlock);
506+
await InvestigationsHelpers.SendInfringingMessaageAsync("investigations", message, reason, warning.ContextLink, extraField, messageContentOverride: msgContentWithEmbedData, wasAutoModBlock: wasAutoModBlock);
506507

507508
match = true;
508509
break;
@@ -530,7 +531,7 @@ public static async Task MessageHandlerAsync(DiscordClient client, MockDiscordMe
530531
if (!match)
531532
{
532533
string reason = "Sent an unapproved invite";
533-
await DeleteAndWarnAsync(message, reason, client, wasAutoModBlock);
534+
await DeleteAndWarnAsync(message, reason, client, wasAutoModBlock, messageContentOverride: msgContentWithEmbedData);
534535
}
535536
return;
536537
}
@@ -592,7 +593,7 @@ public static async Task MessageHandlerAsync(DiscordClient client, MockDiscordMe
592593
pardonOutput = $"{Program.cfgjson.Emoji.Information} {message.Author.Mention} Your message was automatically deleted for mass emoji.";
593594

594595
var msgOut = await WarningHelpers.SendPublicWarningMessageAndDeleteInfringingMessageAsync(message, pardonOutput, wasAutoModBlock);
595-
await InvestigationsHelpers.SendInfringingMessaageAsync("investigations", message, reason, DiscordHelpers.MessageLink(msgOut), wasAutoModBlock: wasAutoModBlock);
596+
await InvestigationsHelpers.SendInfringingMessaageAsync("investigations", message, reason, DiscordHelpers.MessageLink(msgOut), messageContentOverride: msgContentWithEmbedData, wasAutoModBlock: wasAutoModBlock);
596597
return;
597598
}
598599

@@ -605,7 +606,7 @@ public static async Task MessageHandlerAsync(DiscordClient client, MockDiscordMe
605606

606607
DiscordMessage msg = await WarningHelpers.SendPublicWarningMessageAndDeleteInfringingMessageAsync(message, output, wasAutoModBlock);
607608
var warning = await WarningHelpers.GiveWarningAsync(message.Author, client.CurrentUser, reason, contextMessage: msg, channel, " automatically ");
608-
await InvestigationsHelpers.SendInfringingMessaageAsync("investigations", message, reason, warning.ContextLink, wasAutoModBlock: wasAutoModBlock);
609+
await InvestigationsHelpers.SendInfringingMessaageAsync("investigations", message, reason, warning.ContextLink, messageContentOverride: msgContentWithEmbedData, wasAutoModBlock: wasAutoModBlock);
609610
return;
610611
}
611612

@@ -684,7 +685,7 @@ public static async Task MessageHandlerAsync(DiscordClient client, MockDiscordMe
684685
string responseToSend = await StringHelpers.CodeOrHasteBinAsync(responseText, "json", 1000, true);
685686

686687
(string name, string value, bool inline) extraField = new("API Response", responseToSend, false);
687-
await InvestigationsHelpers.SendInfringingMessaageAsync("investigations", message, reason, warning.ContextLink, extraField, wasAutoModBlock: wasAutoModBlock);
688+
await InvestigationsHelpers.SendInfringingMessaageAsync("investigations", message, reason, warning.ContextLink, extraField, messageContentOverride: msgContentWithEmbedData, wasAutoModBlock: wasAutoModBlock);
688689
return;
689690
}
690691
}
@@ -708,7 +709,7 @@ public static async Task MessageHandlerAsync(DiscordClient client, MockDiscordMe
708709
string reason = "Attempted to ping everyone/here";
709710
DiscordMessage msg = await WarningHelpers.SendPublicWarningMessageAndDeleteInfringingMessageAsync(message, $"{Program.cfgjson.Emoji.Denied} {message.Author.Mention} was automatically warned: **{reason.Replace("`", "\\`").Replace("*", "\\*")}**", wasAutoModBlock);
710711
var warning = await WarningHelpers.GiveWarningAsync(message.Author, client.CurrentUser, reason, contextMessage: msg, channel, " automatically ");
711-
await InvestigationsHelpers.SendInfringingMessaageAsync("investigations", message, reason, warning.ContextLink, wasAutoModBlock: wasAutoModBlock);
712+
await InvestigationsHelpers.SendInfringingMessaageAsync("investigations", message, reason, warning.ContextLink, messageContentOverride: msgContentWithEmbedData, wasAutoModBlock: wasAutoModBlock);
712713
return;
713714
}
714715

@@ -727,7 +728,7 @@ public static async Task MessageHandlerAsync(DiscordClient client, MockDiscordMe
727728
string reason = "Mass mentions";
728729
try
729730
{
730-
_ = InvestigationsHelpers.SendInfringingMessaageAsync("mod", message, reason, null, wasAutoModBlock: wasAutoModBlock);
731+
_ = InvestigationsHelpers.SendInfringingMessaageAsync("mod", message, reason, null, messageContentOverride: msgContentWithEmbedData, wasAutoModBlock: wasAutoModBlock);
731732
}
732733
catch
733734
{
@@ -736,7 +737,7 @@ public static async Task MessageHandlerAsync(DiscordClient client, MockDiscordMe
736737

737738
DiscordMessage msg = await WarningHelpers.SendPublicWarningMessageAndDeleteInfringingMessageAsync(message, $"{Program.cfgjson.Emoji.Denied} {message.Author.Mention} was automatically warned: **{reason.Replace("`", "\\`").Replace("*", "\\*")}**", wasAutoModBlock);
738739
var warning = await WarningHelpers.GiveWarningAsync(message.Author, client.CurrentUser, reason, contextMessage: msg, channel, " automatically ");
739-
await InvestigationsHelpers.SendInfringingMessaageAsync("investigations", message, reason, warning.ContextLink, wasAutoModBlock: wasAutoModBlock);
740+
await InvestigationsHelpers.SendInfringingMessaageAsync("investigations", message, reason, warning.ContextLink, messageContentOverride: msgContentWithEmbedData, wasAutoModBlock: wasAutoModBlock);
740741
return;
741742
}
742743

@@ -783,7 +784,7 @@ public static async Task MessageHandlerAsync(DiscordClient client, MockDiscordMe
783784
{
784785
msg = await channel.SendMessageAsync(messageBuilder);
785786
}
786-
await InvestigationsHelpers.SendInfringingMessaageAsync("investigations", message, reason, DiscordHelpers.MessageLink(msg), wasAutoModBlock: wasAutoModBlock);
787+
await InvestigationsHelpers.SendInfringingMessaageAsync("investigations", message, reason, DiscordHelpers.MessageLink(msg), messageContentOverride: msgContentWithEmbedData, wasAutoModBlock: wasAutoModBlock);
787788
return;
788789
}
789790
else
@@ -805,7 +806,7 @@ public static async Task MessageHandlerAsync(DiscordClient client, MockDiscordMe
805806
}
806807

807808
var warning = await WarningHelpers.GiveWarningAsync(message.Author, client.CurrentUser, reason, contextMessage: msg, channel, " automatically ");
808-
await InvestigationsHelpers.SendInfringingMessaageAsync("investigations", message, reason, warning.ContextLink, wasAutoModBlock: wasAutoModBlock);
809+
await InvestigationsHelpers.SendInfringingMessaageAsync("investigations", message, reason, warning.ContextLink, messageContentOverride: msgContentWithEmbedData, wasAutoModBlock: wasAutoModBlock);
809810

810811
return;
811812
}
@@ -892,6 +893,7 @@ await InvestigationsHelpers.SendInfringingMessaageAsync(
892893
colour: new DiscordColor(0xFEC13D),
893894
channelOverride: logChannel,
894895
extraField: extraField,
896+
messageContentOverride: msgContentWithEmbedData,
895897
wasAutoModBlock: wasAutoModBlock
896898
);
897899
}

Helpers/InvestigationsHelpers.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ public static async Task SendInfringingMessaageAsync(string logChannelKey, Disco
66
{
77
await SendInfringingMessaageAsync(logChannelKey, new MockDiscordMessage(infringingMessage), reason, messageURL, extraField, content, colour, channelOverride);
88
}
9-
public static async Task SendInfringingMessaageAsync(string logChannelKey, MockDiscordMessage infringingMessage, string reason, string messageURL, (string name, string value, bool inline) extraField = default, string content = default, DiscordColor? colour = null, DiscordChannel channelOverride = default, bool wasAutoModBlock = false)
9+
public static async Task SendInfringingMessaageAsync(string logChannelKey, MockDiscordMessage infringingMessage, string reason, string messageURL, (string name, string value, bool inline) extraField = default, string content = default, DiscordColor? colour = null, DiscordChannel channelOverride = default, string messageContentOverride = default, bool wasAutoModBlock = false)
1010
{
1111
if (colour is null)
1212
colour = new DiscordColor(0xf03916);
1313

1414
var embed = new DiscordEmbedBuilder()
15-
.WithDescription(infringingMessage.Content)
15+
.WithDescription(string.IsNullOrWhiteSpace(messageContentOverride) ? infringingMessage.Content : messageContentOverride)
1616
.WithColor((DiscordColor)colour)
1717
.WithTimestamp(infringingMessage.Timestamp)
1818
.WithFooter(

0 commit comments

Comments
 (0)