Files
discord-decomp/modules/guild_automod/AutomodRuleUtils.tsx
T
2026-11-01 12:12:55 +02:00

180 lines
6.2 KiB
TypeScript

// Metro module 16374 (f16375).
import AuthenticationStore from "../../stores/AuthenticationStore";
import { getRuleCountByTriggerType } from "./AutomodStore";
import { AutomodActionType, AutomodEventType, AutomodTriggerType, MAX_CHARACTERS_PER_KEYWORD, MAX_KEYWORDS_PER_KEYWORD_FILTER, MAX_REGEX_PATTERNS_PER_KEYWORD_FILTER, MAX_REGEX_PATTERN_LENGTH, MIN_CHARACTERS_PER_KEYWORD, MIN_REGEX_PATTERN_LENGTH } from "./Constants";
import { triggerConfigs, getDefaultTriggerMetadataForTriggerType } from "./AutomodTriggerConfigs";
import { getRuleDefaultActionsFromConfig } from "./AutomodActionUtils";
import * as _index_native from "../../intl/index.native";
import { intl } from "../../intl/index.native";
import { InvalidKeywordError, InvalidRegexPatternError } from "./AutomodErrorUtils";
import { isSnowflake } from "../application_commands/ApplicationCommandUtils";
let $mk99436 = function() {
return (a0) => {
if (!(a0.length > MAX_CHARACTERS_PER_KEYWORD) && !(a0.length < MIN_CHARACTERS_PER_KEYWORD)) {
return void 0;
}
throw new InvalidKeywordError(intl.formatToPlainString(_index_native.t.rbRvGe, {
keyword: a0,
max: MAX_CHARACTERS_PER_KEYWORD,
min: MIN_CHARACTERS_PER_KEYWORD
}));
};
}, $mk99437 = function() {
return (a0) => {
if (!(a0.length > MAX_REGEX_PATTERN_LENGTH) && !(a0.length < MIN_REGEX_PATTERN_LENGTH)) {
return void 0;
}
throw new InvalidRegexPatternError(intl.formatToPlainString(_index_native.t.WR0m9w, {
regex: a0,
max: MAX_REGEX_PATTERN_LENGTH,
min: MIN_REGEX_PATTERN_LENGTH
}));
};
};
export function getNewAutomodRuleMockId(a0, a1) {
return `${a0}-${a1}-new-rule`;
}
export function isRuleKeywordFilter(a0) {
return a0?.triggerType === AutomodTriggerType.KEYWORD;
}
export function isRuleMLSpamFilter(a0) {
return a0?.triggerType === AutomodTriggerType.ML_SPAM;
}
export function isRuleDefaultKeywordListFilter(a0) {
return a0?.triggerType === AutomodTriggerType.DEFAULT_KEYWORD_LIST;
}
export function isRuleMentionSpamFilter(a0) {
return a0?.triggerType === AutomodTriggerType.MENTION_SPAM;
}
export function isRuleServerPolicyFilter(a0) {
return a0?.triggerType === AutomodTriggerType.SERVER_POLICY;
}
export function isRuleUserProfileFilter(a0) {
return a0?.triggerType === AutomodTriggerType.USER_PROFILE;
}
export function createDefaultRule(a0, a1) {
const r12 = triggerConfigs[a1];
const defaultTriggerMetadataForTriggerType = getDefaultTriggerMetadataForTriggerType(a1, a0);
const r27 = {
id: `${a0}-${a1}-new-rule`,
name: r12.getDefaultRuleName(),
guildId: a0,
eventType: r12.eventType,
triggerType: a1,
triggerMetadata: defaultTriggerMetadataForTriggerType,
enabled: true,
creatorId: AuthenticationStore.getId(),
actions: getRuleDefaultActionsFromConfig(r12),
position: 0,
exemptChannels: new Set(),
exemptRoles: new Set()
};
let id = r27.id;
if (id == null) {
id = "INVALID_SNOWFLAKE";
}
if (isSnowflake(id)) {
throw new Error(intl.string(_index_native.t["A/nX8D"]));
}
const ruleCountByTriggerType = getRuleCountByTriggerType(a0, a1);
if (ruleCountByTriggerType > 0) {
r27.name = r27.name + ` ${ruleCountByTriggerType + 1}`;
}
return r27;
}
export function validateKeywordsOrThrow(a0, a1) {
if (a0.length > a1) {
throw new Error(intl.formatToPlainString(_index_native.t.mee4qd, {
limit: a1
}));
}
a0.forEach($mk99436());
}
export function validateRegexPatternsOrThrow(a0) {
if (a0.length > MAX_REGEX_PATTERNS_PER_KEYWORD_FILTER) {
throw new Error(intl.formatToPlainString(_index_native.t.tDjhF1, {
limit: MAX_REGEX_PATTERNS_PER_KEYWORD_FILTER
}));
}
a0.forEach($mk99437());
}
export function validateRuleBeforeSaveOrThrow(a0) {
if (a0?.triggerType === AutomodTriggerType.KEYWORD) {
let keywordFilter = a0.triggerMetadata.keywordFilter;
if (keywordFilter == null) {
keywordFilter = [];
}
let regexPatterns = a0.triggerMetadata.regexPatterns;
if (regexPatterns == null) {
regexPatterns = [];
}
if (keywordFilter.length === 0 && regexPatterns.length === 0) {
throw new Error(intl.string(_index_native.t.kz2Av3));
}
if (keywordFilter.length > MAX_KEYWORDS_PER_KEYWORD_FILTER) {
throw new Error(intl.formatToPlainString(_index_native.t.mee4qd, {
limit: MAX_KEYWORDS_PER_KEYWORD_FILTER
}));
}
keywordFilter.forEach($mk99436());
if (regexPatterns.length > MAX_REGEX_PATTERNS_PER_KEYWORD_FILTER) {
throw new Error(intl.formatToPlainString(_index_native.t.tDjhF1, {
limit: MAX_REGEX_PATTERNS_PER_KEYWORD_FILTER
}));
}
regexPatterns.forEach($mk99437());
}
if (a0.actions.length === 0) {
throw new Error(intl.string(_index_native.t["t+gj5V"]));
}
}
export function isBackendPersistedRule(a0) {
let r10 = a0?.id;
if (r10 == null) {
r10 = "INVALID_SNOWFLAKE";
}
return isSnowflake(r10);
}
export function eventTypeToName(a0) {
if (AutomodEventType.MESSAGE_SEND === a0) {
return intl.string(_index_native.t.NlQW4P);
}
if (AutomodEventType.GUILD_MEMBER_JOIN_OR_UPDATE === a0) {
return intl.string(_index_native.t["Q+68IX"]);
}
return intl.string(_index_native.t.SP9BBx);
}
export function actionTypeToName(a0) {
if (AutomodActionType.BLOCK_MESSAGE === a0) {
return intl.string(_index_native.t.d1ab8n);
}
if (AutomodActionType.FLAG_TO_CHANNEL === a0) {
return intl.string(_index_native.t["Y+VmvU"]);
}
if (AutomodActionType.USER_COMMUNICATION_DISABLED === a0) {
return intl.string(_index_native.t["6WPxY2"]);
}
if (AutomodActionType.QUARANTINE_USER === a0) {
return intl.string(_index_native.t.NPO8ee);
}
return intl.string(_index_native.t.SP9BBx);
}
export function triggerTypeToName(a0) {
if (AutomodTriggerType.KEYWORD === a0) {
return intl.string(_index_native.t.ffR2cM);
}
if (AutomodTriggerType.ML_SPAM === a0) {
return intl.string(_index_native.t["puF/Os"]);
}
if (AutomodTriggerType.DEFAULT_KEYWORD_LIST === a0) {
return intl.string(_index_native.t.LnGhZv);
}
if (AutomodTriggerType.MENTION_SPAM === a0) {
return intl.string(_index_native.t.pX7i6n);
}
if (AutomodTriggerType.USER_PROFILE === a0) {
return intl.string(_index_native.t.q1L2v8);
}
return intl.string(_index_native.t.SP9BBx);
}