3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-03-15 05:41:51 +00:00

automod: update match summaries for match_* triggers

This commit is contained in:
Dragory 2020-07-29 22:42:17 +03:00
parent 06997b59b0
commit b73c8668e3
No known key found for this signature in database
GPG key ID: 5F387BA66DF8AAC1
6 changed files with 53 additions and 38 deletions

View file

@ -0,0 +1,32 @@
import { MatchableTextType } from "./matchMultipleTextTypesOnMessage";
import { AutomodContext, AutomodPluginType } from "../types";
import { messageSummary, verboseChannelMention } from "../../../utils";
import { PluginData } from "knub";
import { User } from "eris";
export function getTextMatchPartialSummary(
pluginData: PluginData<AutomodPluginType>,
type: MatchableTextType,
context: AutomodContext,
) {
if (type === "message") {
const channel = pluginData.guild.channels.get(context.message.channel_id);
const channelMention = channel ? verboseChannelMention(channel) : `\`#${context.message.channel_id}\``;
return `message in ${channelMention}:\n${messageSummary(context.message)}`;
} else if (type === "embed") {
const channel = pluginData.guild.channels.get(context.message.channel_id);
const channelMention = channel ? verboseChannelMention(channel) : `\`#${context.message.channel_id}\``;
return `message embed in ${channelMention}:\n${messageSummary(context.message)}`;
} else if (type === "username") {
return `username: ${context.user.username}`;
} else if (type === "nickname") {
return `nickname: ${context.member.nick}`;
} else if (type === "visiblename") {
const visibleName = context.member?.nick || context.user.username;
return `visible name: ${visibleName}`;
} else if (type === "customstatus") {
return `custom status: ${context.member.game.state}`;
}
}

View file

@ -1,6 +1,12 @@
import * as t from "io-ts";
import { automodTrigger } from "../helpers";
import { asSingleLine, disableCodeBlocks, disableInlineCode, verboseChannelMention } from "../../../utils";
import {
asSingleLine,
disableCodeBlocks,
disableInlineCode,
messageSummary,
verboseChannelMention,
} from "../../../utils";
interface MatchResultType {
matchedType: string;
@ -64,10 +70,7 @@ export const MatchAttachmentTypeTrigger = automodTrigger<MatchResultType>()({
Matched attachment type \`${disableInlineCode(matchResult.extra.matchedType)}\`
(${matchResult.extra.mode === "blacklist" ? "(blacklisted)" : "(not in whitelist)"})
in message (\`${contexts[0].message.id}\`) in ${prettyChannel}:
`) +
"\n```" +
disableCodeBlocks(contexts[0].message.data.content) +
"```"
`) + messageSummary(contexts[0].message)
);
},
});

View file

@ -3,6 +3,7 @@ import { GuildInvite } from "eris";
import { automodTrigger } from "../helpers";
import {
disableCodeBlocks,
disableInlineCode,
getInviteCodesInString,
isGuildInvite,
resolveInvite,
@ -10,6 +11,7 @@ import {
verboseChannelMention,
} from "../../../utils";
import { MatchableTextType, matchMultipleTextTypesOnMessage } from "../functions/matchMultipleTextTypesOnMessage";
import { getTextMatchPartialSummary } from "../functions/getTextMatchPartialSummary";
interface MatchResultType {
type: MatchableTextType;
@ -79,9 +81,6 @@ export const MatchInvitesTrigger = automodTrigger<MatchResultType>()({
},
renderMatchInformation({ pluginData, contexts, matchResult }) {
const channel = pluginData.guild.channels.get(contexts[0].message.channel_id);
const prettyChannel = verboseChannelMention(channel);
let matchedText;
if (matchResult.extra.invite) {
@ -91,11 +90,7 @@ export const MatchInvitesTrigger = automodTrigger<MatchResultType>()({
matchedText = `invite code \`${matchResult.extra.code}\``;
}
return (
`${matchedText} in message (\`${contexts[0].message.id}\`) in ${prettyChannel}:\n` +
"```" +
disableCodeBlocks(contexts[0].message.data.content) +
"```"
);
const partialSummary = getTextMatchPartialSummary(pluginData, matchResult.extra.type, contexts[0]);
return `Matched ${matchedText} in ${partialSummary}`;
},
});

View file

@ -11,6 +11,7 @@ import {
} from "../../../utils";
import { MatchableTextType, matchMultipleTextTypesOnMessage } from "../functions/matchMultipleTextTypesOnMessage";
import { TSafeRegex } from "../../../validatorUtils";
import { getTextMatchPartialSummary } from "../functions/getTextMatchPartialSummary";
interface MatchResultType {
type: MatchableTextType;
@ -131,17 +132,7 @@ export const MatchLinksTrigger = automodTrigger<MatchResultType>()({
},
renderMatchInformation({ pluginData, contexts, matchResult }) {
const channel = pluginData.guild.channels.get(contexts[0].message.channel_id);
const prettyChannel = verboseChannelMention(channel);
return (
asSingleLine(`
Matched link \`${disableInlineCode(matchResult.extra.link)}\`
in message (\`${contexts[0].message.id}\`) in ${prettyChannel}:
`) +
"\n```" +
disableCodeBlocks(contexts[0].message.data.content) +
"```"
);
const partialSummary = getTextMatchPartialSummary(pluginData, matchResult.extra.type, contexts[0]);
return `Matched link \`${disableInlineCode(matchResult.extra.link)}\` in ${partialSummary}`;
},
});

View file

@ -4,6 +4,7 @@ import { automodTrigger } from "../helpers";
import { disableInlineCode, verboseChannelMention } from "../../../utils";
import { MatchableTextType, matchMultipleTextTypesOnMessage } from "../functions/matchMultipleTextTypesOnMessage";
import { TSafeRegex } from "../../../validatorUtils";
import { getTextMatchPartialSummary } from "../functions/getTextMatchPartialSummary";
interface MatchResultType {
pattern: string;
@ -62,11 +63,7 @@ export const MatchRegexTrigger = automodTrigger<MatchResultType>()({
},
renderMatchInformation({ pluginData, contexts, matchResult }) {
const channel = pluginData.guild.channels.get(contexts[0].message.channel_id);
const prettyChannel = verboseChannelMention(channel);
return `Matched regex \`${disableInlineCode(matchResult.extra.pattern)}\` in message (\`${
contexts[0].message.id
}\`) in ${prettyChannel}:`;
const partialSummary = getTextMatchPartialSummary(pluginData, matchResult.extra.type, contexts[0]);
return `Matched regex \`${disableInlineCode(matchResult.extra.pattern)}\` in ${partialSummary}`;
},
});

View file

@ -4,6 +4,7 @@ import escapeStringRegexp from "escape-string-regexp";
import { automodTrigger } from "../helpers";
import { disableInlineCode, verboseChannelMention } from "../../../utils";
import { MatchableTextType, matchMultipleTextTypesOnMessage } from "../functions/matchMultipleTextTypesOnMessage";
import { getTextMatchPartialSummary } from "../functions/getTextMatchPartialSummary";
interface MatchResultType {
word: string;
@ -80,11 +81,7 @@ export const MatchWordsTrigger = automodTrigger<MatchResultType>()({
},
renderMatchInformation({ pluginData, contexts, matchResult }) {
const channel = pluginData.guild.channels.get(contexts[0].message.channel_id);
const prettyChannel = verboseChannelMention(channel);
return `Matched word \`${disableInlineCode(matchResult.extra.word)}\` in message (\`${
contexts[0].message.id
}\`) in ${prettyChannel}:`;
const partialSummary = getTextMatchPartialSummary(pluginData, matchResult.extra.type, contexts[0]);
return `Matched word \`${disableInlineCode(matchResult.extra.word)}\` in ${partialSummary}`;
},
});