@amatiscorp/disguard 1.1.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +384 -22
- package/dist/AntiSpam.d.ts +15 -1
- package/dist/AntiSpam.d.ts.map +1 -1
- package/dist/AntiSpam.js +159 -12
- package/dist/AntiSpam.js.map +1 -1
- package/dist/defaults.d.ts.map +1 -1
- package/dist/defaults.js +79 -2
- package/dist/defaults.js.map +1 -1
- package/dist/detectors/accounts.d.ts +3 -0
- package/dist/detectors/accounts.d.ts.map +1 -0
- package/dist/detectors/accounts.js +50 -0
- package/dist/detectors/accounts.js.map +1 -0
- package/dist/detectors/duplicates.d.ts.map +1 -1
- package/dist/detectors/duplicates.js +5 -1
- package/dist/detectors/duplicates.js.map +1 -1
- package/dist/detectors/files.d.ts.map +1 -1
- package/dist/detectors/files.js +10 -0
- package/dist/detectors/files.js.map +1 -1
- package/dist/detectors/flood.d.ts.map +1 -1
- package/dist/detectors/flood.js +7 -1
- package/dist/detectors/flood.js.map +1 -1
- package/dist/detectors/ghost.d.ts +4 -0
- package/dist/detectors/ghost.d.ts.map +1 -0
- package/dist/detectors/ghost.js +34 -0
- package/dist/detectors/ghost.js.map +1 -0
- package/dist/detectors/hop.d.ts +3 -0
- package/dist/detectors/hop.d.ts.map +1 -0
- package/dist/detectors/hop.js +30 -0
- package/dist/detectors/hop.js.map +1 -0
- package/dist/detectors/images.d.ts +1 -0
- package/dist/detectors/images.d.ts.map +1 -1
- package/dist/detectors/images.js +19 -3
- package/dist/detectors/images.js.map +1 -1
- package/dist/detectors/length.d.ts +3 -0
- package/dist/detectors/length.d.ts.map +1 -0
- package/dist/detectors/length.js +23 -0
- package/dist/detectors/length.js.map +1 -0
- package/dist/detectors/links.d.ts.map +1 -1
- package/dist/detectors/links.js +15 -1
- package/dist/detectors/links.js.map +1 -1
- package/dist/detectors/mentions.d.ts.map +1 -1
- package/dist/detectors/mentions.js +19 -0
- package/dist/detectors/mentions.js.map +1 -1
- package/dist/detectors/punctuation.d.ts +3 -0
- package/dist/detectors/punctuation.d.ts.map +1 -0
- package/dist/detectors/punctuation.js +26 -0
- package/dist/detectors/punctuation.js.map +1 -0
- package/dist/detectors/spoilers.d.ts +3 -0
- package/dist/detectors/spoilers.d.ts.map +1 -0
- package/dist/detectors/spoilers.js +25 -0
- package/dist/detectors/spoilers.js.map +1 -0
- package/dist/detectors/words.d.ts +3 -0
- package/dist/detectors/words.d.ts.map +1 -0
- package/dist/detectors/words.js +56 -0
- package/dist/detectors/words.js.map +1 -0
- package/dist/enforcement.d.ts +1 -0
- package/dist/enforcement.d.ts.map +1 -1
- package/dist/enforcement.js +57 -9
- package/dist/enforcement.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/locale.d.ts +14 -0
- package/dist/locale.d.ts.map +1 -0
- package/dist/locale.js +35 -0
- package/dist/locale.js.map +1 -0
- package/dist/types.d.ts +103 -15
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.wordDetector = void 0;
|
|
4
|
+
const incident_1 = require("./incident");
|
|
5
|
+
exports.wordDetector = {
|
|
6
|
+
type: "word",
|
|
7
|
+
inspect({ message, snapshot, config }) {
|
|
8
|
+
const rules = config.words;
|
|
9
|
+
if (!rules.enabled || !message.guild)
|
|
10
|
+
return null;
|
|
11
|
+
if (rules.list.length === 0 && rules.regex.length === 0)
|
|
12
|
+
return null;
|
|
13
|
+
const text = rules.ignoreCase ? message.content.toLowerCase() : message.content;
|
|
14
|
+
for (const raw of rules.list) {
|
|
15
|
+
const needle = rules.ignoreCase ? raw.toLowerCase() : raw;
|
|
16
|
+
if (!needle)
|
|
17
|
+
continue;
|
|
18
|
+
const hit = rules.matchWholeWord
|
|
19
|
+
? new RegExp(`(^|[^\\p{L}\\p{N}])${escapeRegex(needle)}([^\\p{L}\\p{N}]|$)`, "u").test(text)
|
|
20
|
+
: text.includes(needle);
|
|
21
|
+
if (hit) {
|
|
22
|
+
return (0, incident_1.createIncident)("word", snapshot, {
|
|
23
|
+
userId: message.author.id,
|
|
24
|
+
guildId: message.guild.id,
|
|
25
|
+
severity: rules.severity,
|
|
26
|
+
reason: `Palabra bloqueada: ${raw}`,
|
|
27
|
+
details: { word: raw },
|
|
28
|
+
recommendedActions: ["delete", "warn"],
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
for (const pattern of rules.regex) {
|
|
33
|
+
try {
|
|
34
|
+
const flags = rules.ignoreCase && !pattern.includes("(?i)") ? "i" : undefined;
|
|
35
|
+
if (new RegExp(pattern, flags).test(message.content)) {
|
|
36
|
+
return (0, incident_1.createIncident)("word", snapshot, {
|
|
37
|
+
userId: message.author.id,
|
|
38
|
+
guildId: message.guild.id,
|
|
39
|
+
severity: rules.severity,
|
|
40
|
+
reason: "El mensaje coincide con un regex bloqueado",
|
|
41
|
+
details: { pattern },
|
|
42
|
+
recommendedActions: ["delete", "warn"],
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// Invalid regex is ignored.
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return null;
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
function escapeRegex(value) {
|
|
54
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=words.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"words.js","sourceRoot":"","sources":["../../src/detectors/words.ts"],"names":[],"mappings":";;;AACA,yCAA4C;AAE/B,QAAA,YAAY,GAAa;IACpC,IAAI,EAAE,MAAM;IACZ,OAAO,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAiB;QAClD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAClD,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAErE,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QAEhF,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YAC1D,IAAI,CAAC,MAAM;gBAAE,SAAS;YACtB,MAAM,GAAG,GAAG,KAAK,CAAC,cAAc;gBAC9B,CAAC,CAAC,IAAI,MAAM,CAAC,sBAAsB,WAAW,CAAC,MAAM,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC5F,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC1B,IAAI,GAAG,EAAE,CAAC;gBACR,OAAO,IAAA,yBAAc,EAAC,MAAM,EAAE,QAAQ,EAAE;oBACtC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE;oBACzB,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE;oBACzB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,MAAM,EAAE,sBAAsB,GAAG,EAAE;oBACnC,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE;oBACtB,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;iBACvC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC9E,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;oBACrD,OAAO,IAAA,yBAAc,EAAC,MAAM,EAAE,QAAQ,EAAE;wBACtC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE;wBACzB,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE;wBACzB,QAAQ,EAAE,KAAK,CAAC,QAAQ;wBACxB,MAAM,EAAE,4CAA4C;wBACpD,OAAO,EAAE,EAAE,OAAO,EAAE;wBACpB,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;qBACvC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,4BAA4B;YAC9B,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC;AAEF,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC"}
|
package/dist/enforcement.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type Message } from "discord.js";
|
|
2
2
|
import type { ActionResult, Incident, ResolvedConfig } from "./types";
|
|
3
3
|
export declare function applyPunishment(message: Message, incident: Incident, strikes: number, config: ResolvedConfig): Promise<ActionResult>;
|
|
4
|
+
export declare function timeoutDuration(config: ResolvedConfig, strikes: number): number;
|
|
4
5
|
//# sourceMappingURL=enforcement.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enforcement.d.ts","sourceRoot":"","sources":["../src/enforcement.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,OAAO,EACb,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"enforcement.d.ts","sourceRoot":"","sources":["../src/enforcement.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,OAAO,EACb,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,YAAY,EAAc,QAAQ,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AASlF,wBAAsB,eAAe,CACnC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,YAAY,CAAC,CAqCvB;AAgJD,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAM/E"}
|
package/dist/enforcement.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.applyPunishment = applyPunishment;
|
|
4
|
+
exports.timeoutDuration = timeoutDuration;
|
|
4
5
|
const discord_js_1 = require("discord.js");
|
|
6
|
+
const locale_1 = require("./locale");
|
|
5
7
|
const SEVERITY_COLOR = {
|
|
6
8
|
low: 0xf1c40f,
|
|
7
9
|
medium: 0xe67e22,
|
|
@@ -60,6 +62,12 @@ function planActions(incident, strikes, config) {
|
|
|
60
62
|
else if (punishment.timeout.enabled && strikes >= punishment.timeout.minStrikes) {
|
|
61
63
|
actions.push("timeout");
|
|
62
64
|
}
|
|
65
|
+
if (punishment.addRoleIds.length > 0 && strikes >= punishment.minStrikesForRoles) {
|
|
66
|
+
actions.push("addRole");
|
|
67
|
+
}
|
|
68
|
+
if (punishment.removeRoleIds.length > 0 && strikes >= punishment.minStrikesForRoles) {
|
|
69
|
+
actions.push("removeRole");
|
|
70
|
+
}
|
|
63
71
|
return [...new Set(actions)];
|
|
64
72
|
}
|
|
65
73
|
function canSkip(action, message, member, config) {
|
|
@@ -71,6 +79,15 @@ function canSkip(action, message, member, config) {
|
|
|
71
79
|
}
|
|
72
80
|
if (action === "warn")
|
|
73
81
|
return null;
|
|
82
|
+
if (action === "addRole" || action === "removeRole") {
|
|
83
|
+
if (!member)
|
|
84
|
+
return "No se pudo resolver el miembro";
|
|
85
|
+
const me = message.guild?.members.me;
|
|
86
|
+
if (!me?.permissions.has(discord_js_1.PermissionFlagsBits.ManageRoles)) {
|
|
87
|
+
return "Falta el permiso Manage Roles";
|
|
88
|
+
}
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
74
91
|
if (!member)
|
|
75
92
|
return "No se pudo resolver el miembro";
|
|
76
93
|
if (member.id === message.guild?.ownerId)
|
|
@@ -99,25 +116,34 @@ async function executeAction(action, message, member, incident, strikes, config)
|
|
|
99
116
|
return;
|
|
100
117
|
}
|
|
101
118
|
if (action === "warn") {
|
|
102
|
-
const text = config.punishment.warnMessage
|
|
119
|
+
const text = (0, locale_1.resolveWarnMessage)(config.locale, config.punishment.warnMessage)
|
|
103
120
|
.replaceAll("{user}", `<@${incident.userId}>`)
|
|
104
121
|
.replaceAll("{reason}", incident.reason)
|
|
105
122
|
.replaceAll("{type}", incident.type)
|
|
106
123
|
.replaceAll("{strikes}", String(strikes));
|
|
124
|
+
const payload = config.punishment.warnAsEmbed
|
|
125
|
+
? {
|
|
126
|
+
embeds: [
|
|
127
|
+
new discord_js_1.EmbedBuilder()
|
|
128
|
+
.setColor(SEVERITY_COLOR[incident.severity])
|
|
129
|
+
.setDescription(text),
|
|
130
|
+
],
|
|
131
|
+
}
|
|
132
|
+
: { content: text };
|
|
107
133
|
if (config.punishment.dmUser) {
|
|
108
|
-
await message.author.send(
|
|
109
|
-
await replyOrSend(message,
|
|
134
|
+
await message.author.send(payload).catch(async () => {
|
|
135
|
+
await replyOrSend(message, payload);
|
|
110
136
|
});
|
|
111
137
|
}
|
|
112
138
|
else {
|
|
113
|
-
await replyOrSend(message,
|
|
139
|
+
await replyOrSend(message, payload);
|
|
114
140
|
}
|
|
115
141
|
return;
|
|
116
142
|
}
|
|
117
143
|
if (!member)
|
|
118
144
|
return;
|
|
119
145
|
if (action === "timeout") {
|
|
120
|
-
await member.timeout(config
|
|
146
|
+
await member.timeout(timeoutDuration(config, strikes), reason);
|
|
121
147
|
return;
|
|
122
148
|
}
|
|
123
149
|
if (action === "kick") {
|
|
@@ -126,11 +152,32 @@ async function executeAction(action, message, member, incident, strikes, config)
|
|
|
126
152
|
}
|
|
127
153
|
if (action === "ban") {
|
|
128
154
|
await member.ban({ reason, deleteMessageSeconds: 0 });
|
|
155
|
+
return;
|
|
129
156
|
}
|
|
157
|
+
if (action === "addRole") {
|
|
158
|
+
for (const roleId of config.punishment.addRoleIds) {
|
|
159
|
+
await member.roles.add(roleId, reason).catch(() => undefined);
|
|
160
|
+
}
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
if (action === "removeRole") {
|
|
164
|
+
for (const roleId of config.punishment.removeRoleIds) {
|
|
165
|
+
await member.roles.remove(roleId, reason).catch(() => undefined);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
function timeoutDuration(config, strikes) {
|
|
170
|
+
const { durationMs, scale, maxDurationMs } = config.punishment.timeout;
|
|
171
|
+
let ms = durationMs;
|
|
172
|
+
if (scale === "linear")
|
|
173
|
+
ms = durationMs * Math.max(1, strikes);
|
|
174
|
+
if (scale === "exponential")
|
|
175
|
+
ms = durationMs * 2 ** Math.max(0, strikes - 1);
|
|
176
|
+
return Math.min(ms, maxDurationMs);
|
|
130
177
|
}
|
|
131
|
-
async function replyOrSend(message,
|
|
178
|
+
async function replyOrSend(message, payload) {
|
|
132
179
|
if (message.channel.isSendable()) {
|
|
133
|
-
await message.channel.send(
|
|
180
|
+
await message.channel.send(payload);
|
|
134
181
|
}
|
|
135
182
|
}
|
|
136
183
|
async function sendLog(message, incident, strikes, result, config) {
|
|
@@ -140,11 +187,12 @@ async function sendLog(message, incident, strikes, result, config) {
|
|
|
140
187
|
const channel = await message.guild.channels.fetch(channelId).catch(() => null);
|
|
141
188
|
if (!channel || !channel.isTextBased())
|
|
142
189
|
return;
|
|
190
|
+
const labels = locale_1.LOG_LABELS[config.locale];
|
|
143
191
|
const embed = new discord_js_1.EmbedBuilder()
|
|
144
192
|
.setColor(SEVERITY_COLOR[incident.severity])
|
|
145
|
-
.setTitle(
|
|
193
|
+
.setTitle(labels.title(incident.type))
|
|
146
194
|
.setDescription(incident.reason)
|
|
147
|
-
.addFields({ name:
|
|
195
|
+
.addFields({ name: labels.user, value: `<@${incident.userId}> \`${incident.userId}\``, inline: true }, { name: labels.channel, value: `<#${incident.channelId}>`, inline: true }, { name: labels.severity, value: incident.severity, inline: true }, { name: labels.strikes, value: String(strikes), inline: true }, { name: labels.actions, value: result.applied.join(", ") || labels.none, inline: true }, { name: labels.message, value: `[link](https://discord.com/channels/${incident.guildId}/${incident.channelId}/${incident.messageId})`, inline: true })
|
|
148
196
|
.setTimestamp(incident.timestamp);
|
|
149
197
|
if (channel.isSendable()) {
|
|
150
198
|
await channel.send({ embeds: [embed] });
|
package/dist/enforcement.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enforcement.js","sourceRoot":"","sources":["../src/enforcement.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"enforcement.js","sourceRoot":"","sources":["../src/enforcement.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
export { AntiSpam, createAntiSpam } from "./AntiSpam";
|
|
2
2
|
export { resolveConfig, DEFAULT_CONFIG, mergeDeep } from "./defaults";
|
|
3
|
+
export { WARN_TEMPLATES, LOG_LABELS, resolveWarnMessage } from "./locale";
|
|
4
|
+
export { timeoutDuration } from "./enforcement";
|
|
3
5
|
export { MemoryStore } from "./store/MemoryStore";
|
|
4
6
|
export { DEFAULT_BLOCKED_EXTENSIONS } from "./detectors/files";
|
|
7
|
+
export { inspectGhostPing } from "./detectors/ghost";
|
|
5
8
|
export { DEFAULT_PHISHING_KEYWORDS, DEFAULT_SHORTENERS, OFFICIAL_BRANDS, extractUrls, } from "./utils/urls";
|
|
6
9
|
export { normalizeText, countZalgo, countNewlines } from "./utils/normalize";
|
|
7
10
|
export { similarity } from "./utils/similarity";
|
|
8
|
-
export type { ActionResult, ActionType, AntiSpamOptions, AntiSpamStats, CapsConfig, DeepPartial, Detector, DetectorType, DuplicateConfig, EmojiConfig, FileConfig, FloodConfig, IgnoreLists, ImageConfig, ImageHashMode, Incident, LinkConfig, MentionConfig, NewlineConfig, PresetName, PunishmentConfig, ResolvedConfig, Severity, ZalgoConfig, } from "./types";
|
|
11
|
+
export type { ActionResult, ActionType, AntiSpamOptions, AntiSpamStats, CapsConfig, DeepPartial, Detector, DetectorType, DuplicateConfig, EmojiConfig, FileConfig, FloodConfig, GhostPingConfig, HopConfig, IgnoreLists, ImageConfig, ImageHashMode, Incident, LinkConfig, MentionConfig, NewlineConfig, PresetName, PunishmentConfig, PunctuationConfig, ResolvedConfig, Severity, SpoilerConfig, AccountConfig, LengthConfig, Locale, TimeoutScale, WordConfig, ZalgoConfig, } from "./types";
|
|
9
12
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EACf,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,YAAY,EACV,YAAY,EACZ,UAAU,EACV,eAAe,EACf,aAAa,EACb,UAAU,EACV,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,WAAW,EACX,UAAU,EACV,WAAW,EACX,WAAW,EACX,WAAW,EACX,aAAa,EACb,QAAQ,EACR,UAAU,EACV,aAAa,EACb,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,WAAW,GACZ,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EACf,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,YAAY,EACV,YAAY,EACZ,UAAU,EACV,eAAe,EACf,aAAa,EACb,UAAU,EACV,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,WAAW,EACX,UAAU,EACV,WAAW,EACX,eAAe,EACf,SAAS,EACT,WAAW,EACX,WAAW,EACX,aAAa,EACb,QAAQ,EACR,UAAU,EACV,aAAa,EACb,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,QAAQ,EACR,aAAa,EACb,aAAa,EACb,YAAY,EACZ,MAAM,EACN,YAAY,EACZ,UAAU,EACV,WAAW,GACZ,MAAM,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.similarity = exports.countNewlines = exports.countZalgo = exports.normalizeText = exports.extractUrls = exports.OFFICIAL_BRANDS = exports.DEFAULT_SHORTENERS = exports.DEFAULT_PHISHING_KEYWORDS = exports.DEFAULT_BLOCKED_EXTENSIONS = exports.MemoryStore = exports.mergeDeep = exports.DEFAULT_CONFIG = exports.resolveConfig = exports.createAntiSpam = exports.AntiSpam = void 0;
|
|
3
|
+
exports.similarity = exports.countNewlines = exports.countZalgo = exports.normalizeText = exports.extractUrls = exports.OFFICIAL_BRANDS = exports.DEFAULT_SHORTENERS = exports.DEFAULT_PHISHING_KEYWORDS = exports.inspectGhostPing = exports.DEFAULT_BLOCKED_EXTENSIONS = exports.MemoryStore = exports.timeoutDuration = exports.resolveWarnMessage = exports.LOG_LABELS = exports.WARN_TEMPLATES = exports.mergeDeep = exports.DEFAULT_CONFIG = exports.resolveConfig = exports.createAntiSpam = exports.AntiSpam = void 0;
|
|
4
4
|
var AntiSpam_1 = require("./AntiSpam");
|
|
5
5
|
Object.defineProperty(exports, "AntiSpam", { enumerable: true, get: function () { return AntiSpam_1.AntiSpam; } });
|
|
6
6
|
Object.defineProperty(exports, "createAntiSpam", { enumerable: true, get: function () { return AntiSpam_1.createAntiSpam; } });
|
|
@@ -8,10 +8,18 @@ var defaults_1 = require("./defaults");
|
|
|
8
8
|
Object.defineProperty(exports, "resolveConfig", { enumerable: true, get: function () { return defaults_1.resolveConfig; } });
|
|
9
9
|
Object.defineProperty(exports, "DEFAULT_CONFIG", { enumerable: true, get: function () { return defaults_1.DEFAULT_CONFIG; } });
|
|
10
10
|
Object.defineProperty(exports, "mergeDeep", { enumerable: true, get: function () { return defaults_1.mergeDeep; } });
|
|
11
|
+
var locale_1 = require("./locale");
|
|
12
|
+
Object.defineProperty(exports, "WARN_TEMPLATES", { enumerable: true, get: function () { return locale_1.WARN_TEMPLATES; } });
|
|
13
|
+
Object.defineProperty(exports, "LOG_LABELS", { enumerable: true, get: function () { return locale_1.LOG_LABELS; } });
|
|
14
|
+
Object.defineProperty(exports, "resolveWarnMessage", { enumerable: true, get: function () { return locale_1.resolveWarnMessage; } });
|
|
15
|
+
var enforcement_1 = require("./enforcement");
|
|
16
|
+
Object.defineProperty(exports, "timeoutDuration", { enumerable: true, get: function () { return enforcement_1.timeoutDuration; } });
|
|
11
17
|
var MemoryStore_1 = require("./store/MemoryStore");
|
|
12
18
|
Object.defineProperty(exports, "MemoryStore", { enumerable: true, get: function () { return MemoryStore_1.MemoryStore; } });
|
|
13
19
|
var files_1 = require("./detectors/files");
|
|
14
20
|
Object.defineProperty(exports, "DEFAULT_BLOCKED_EXTENSIONS", { enumerable: true, get: function () { return files_1.DEFAULT_BLOCKED_EXTENSIONS; } });
|
|
21
|
+
var ghost_1 = require("./detectors/ghost");
|
|
22
|
+
Object.defineProperty(exports, "inspectGhostPing", { enumerable: true, get: function () { return ghost_1.inspectGhostPing; } });
|
|
15
23
|
var urls_1 = require("./utils/urls");
|
|
16
24
|
Object.defineProperty(exports, "DEFAULT_PHISHING_KEYWORDS", { enumerable: true, get: function () { return urls_1.DEFAULT_PHISHING_KEYWORDS; } });
|
|
17
25
|
Object.defineProperty(exports, "DEFAULT_SHORTENERS", { enumerable: true, get: function () { return urls_1.DEFAULT_SHORTENERS; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,uCAAsD;AAA7C,oGAAA,QAAQ,OAAA;AAAE,0GAAA,cAAc,OAAA;AACjC,uCAAsE;AAA7D,yGAAA,aAAa,OAAA;AAAE,0GAAA,cAAc,OAAA;AAAE,qGAAA,SAAS,OAAA;AACjD,mDAAkD;AAAzC,0GAAA,WAAW,OAAA;AACpB,2CAA+D;AAAtD,mHAAA,0BAA0B,OAAA;AACnC,qCAKsB;AAJpB,iHAAA,yBAAyB,OAAA;AACzB,0GAAA,kBAAkB,OAAA;AAClB,uGAAA,eAAe,OAAA;AACf,mGAAA,WAAW,OAAA;AAEb,+CAA6E;AAApE,0GAAA,aAAa,OAAA;AAAE,uGAAA,UAAU,OAAA;AAAE,0GAAA,aAAa,OAAA;AACjD,iDAAgD;AAAvC,wGAAA,UAAU,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,uCAAsD;AAA7C,oGAAA,QAAQ,OAAA;AAAE,0GAAA,cAAc,OAAA;AACjC,uCAAsE;AAA7D,yGAAA,aAAa,OAAA;AAAE,0GAAA,cAAc,OAAA;AAAE,qGAAA,SAAS,OAAA;AACjD,mCAA0E;AAAjE,wGAAA,cAAc,OAAA;AAAE,oGAAA,UAAU,OAAA;AAAE,4GAAA,kBAAkB,OAAA;AACvD,6CAAgD;AAAvC,8GAAA,eAAe,OAAA;AACxB,mDAAkD;AAAzC,0GAAA,WAAW,OAAA;AACpB,2CAA+D;AAAtD,mHAAA,0BAA0B,OAAA;AACnC,2CAAqD;AAA5C,yGAAA,gBAAgB,OAAA;AACzB,qCAKsB;AAJpB,iHAAA,yBAAyB,OAAA;AACzB,0GAAA,kBAAkB,OAAA;AAClB,uGAAA,eAAe,OAAA;AACf,mGAAA,WAAW,OAAA;AAEb,+CAA6E;AAApE,0GAAA,aAAa,OAAA;AAAE,uGAAA,UAAU,OAAA;AAAE,0GAAA,aAAa,OAAA;AACjD,iDAAgD;AAAvC,wGAAA,UAAU,OAAA"}
|
package/dist/locale.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type Locale = "en" | "es";
|
|
2
|
+
export declare const WARN_TEMPLATES: Record<Locale, string>;
|
|
3
|
+
export declare const LOG_LABELS: Record<Locale, {
|
|
4
|
+
title: (type: string) => string;
|
|
5
|
+
user: string;
|
|
6
|
+
channel: string;
|
|
7
|
+
severity: string;
|
|
8
|
+
strikes: string;
|
|
9
|
+
actions: string;
|
|
10
|
+
message: string;
|
|
11
|
+
none: string;
|
|
12
|
+
}>;
|
|
13
|
+
export declare function resolveWarnMessage(locale: Locale, custom: string): string;
|
|
14
|
+
//# sourceMappingURL=locale.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locale.d.ts","sourceRoot":"","sources":["../src/locale.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjC,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGjD,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;IACtC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CAqBA,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAGzE"}
|
package/dist/locale.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LOG_LABELS = exports.WARN_TEMPLATES = void 0;
|
|
4
|
+
exports.resolveWarnMessage = resolveWarnMessage;
|
|
5
|
+
exports.WARN_TEMPLATES = {
|
|
6
|
+
en: "{user}, your message was blocked: {reason}. Strikes: {strikes}.",
|
|
7
|
+
es: "{user}, tu mensaje se ha bloqueado: {reason}. Strikes: {strikes}.",
|
|
8
|
+
};
|
|
9
|
+
exports.LOG_LABELS = {
|
|
10
|
+
en: {
|
|
11
|
+
title: (type) => `Disguard · ${type}`,
|
|
12
|
+
user: "User",
|
|
13
|
+
channel: "Channel",
|
|
14
|
+
severity: "Severity",
|
|
15
|
+
strikes: "Strikes",
|
|
16
|
+
actions: "Actions",
|
|
17
|
+
message: "Message",
|
|
18
|
+
none: "none",
|
|
19
|
+
},
|
|
20
|
+
es: {
|
|
21
|
+
title: (type) => `Disguard · ${type}`,
|
|
22
|
+
user: "Usuario",
|
|
23
|
+
channel: "Canal",
|
|
24
|
+
severity: "Severidad",
|
|
25
|
+
strikes: "Strikes",
|
|
26
|
+
actions: "Acciones",
|
|
27
|
+
message: "Mensaje",
|
|
28
|
+
none: "ninguna",
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
function resolveWarnMessage(locale, custom) {
|
|
32
|
+
const trimmed = custom.trim();
|
|
33
|
+
return trimmed.length > 0 ? custom : exports.WARN_TEMPLATES[locale];
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=locale.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locale.js","sourceRoot":"","sources":["../src/locale.ts"],"names":[],"mappings":";;;AAuCA,gDAGC;AAxCY,QAAA,cAAc,GAA2B;IACpD,EAAE,EAAE,iEAAiE;IACrE,EAAE,EAAE,mEAAmE;CACxE,CAAC;AAEW,QAAA,UAAU,GASlB;IACH,EAAE,EAAE;QACF,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,IAAI,EAAE;QACrC,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,MAAM;KACb;IACD,EAAE,EAAE;QACF,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,IAAI,EAAE;QACrC,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,UAAU;QACnB,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;KAChB;CACF,CAAC;AAEF,SAAgB,kBAAkB,CAAC,MAAc,EAAE,MAAc;IAC/D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,sBAAc,CAAC,MAAM,CAAC,CAAC;AAC9D,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { Client, Message } from "discord.js";
|
|
2
|
-
export type DetectorType = "flood" | "duplicate" | "link" | "image" | "mention" | "caps" | "emoji" | "file" | "zalgo" | "newline";
|
|
2
|
+
export type DetectorType = "flood" | "duplicate" | "link" | "image" | "mention" | "caps" | "emoji" | "file" | "zalgo" | "newline" | "account" | "length" | "word" | "hop" | "punctuation" | "spoiler" | "ghost";
|
|
3
|
+
export type Locale = "en" | "es";
|
|
4
|
+
export type TimeoutScale = "none" | "linear" | "exponential";
|
|
3
5
|
export type Severity = "low" | "medium" | "high" | "critical";
|
|
4
|
-
export type ActionType = "delete" | "warn" | "timeout" | "kick" | "ban";
|
|
6
|
+
export type ActionType = "delete" | "warn" | "timeout" | "kick" | "ban" | "addRole" | "removeRole";
|
|
5
7
|
export type ImageHashMode = "meta" | "content";
|
|
6
8
|
export type PresetName = "lenient" | "balanced" | "strict";
|
|
7
9
|
export type DeepPartial<T> = {
|
|
@@ -43,27 +45,23 @@ export interface IgnoreLists {
|
|
|
43
45
|
channels: string[];
|
|
44
46
|
categories: string[];
|
|
45
47
|
guilds: string[];
|
|
48
|
+
/** Skip messages that start with these prefixes (`!`, `/`, `.`). */
|
|
49
|
+
prefixes: string[];
|
|
46
50
|
}
|
|
47
51
|
export interface FloodConfig {
|
|
48
|
-
/** Activa el detector de flood (muchos mensajes en poco tiempo). */
|
|
49
52
|
enabled: boolean;
|
|
50
|
-
/** Máximo de mensajes permitidos dentro de la ventana. */
|
|
51
53
|
maxMessages: number;
|
|
52
|
-
/** Ventana deslizante en milisegundos. */
|
|
53
54
|
windowMs: number;
|
|
55
|
+
/** If true, only counts messages in the same channel. */
|
|
56
|
+
sameChannelOnly: boolean;
|
|
54
57
|
severity: Severity;
|
|
55
58
|
}
|
|
56
59
|
export interface DuplicateConfig {
|
|
57
|
-
/** Activa el detector de texto repetido. */
|
|
58
60
|
enabled: boolean;
|
|
59
|
-
/** Veces que se puede repetir el mismo (o muy similar) mensaje. */
|
|
60
61
|
maxRepeats: number;
|
|
61
62
|
windowMs: number;
|
|
62
|
-
/**
|
|
63
|
-
* Umbral 0-1. 1 = solo coincidencia exacta.
|
|
64
|
-
* 0.85 detecta variaciones leves ("hola!!" vs "hola!").
|
|
65
|
-
*/
|
|
66
63
|
similarity: number;
|
|
64
|
+
sameChannelOnly: boolean;
|
|
67
65
|
severity: Severity;
|
|
68
66
|
}
|
|
69
67
|
export interface LinkConfig {
|
|
@@ -90,6 +88,12 @@ export interface LinkConfig {
|
|
|
90
88
|
customPatterns: string[];
|
|
91
89
|
/** Palabras extra que, junto a un enlace, se consideran phishing. */
|
|
92
90
|
extraPhishingKeywords: string[];
|
|
91
|
+
/** Max URLs in one message. 0 = unlimited. */
|
|
92
|
+
maxLinks: number;
|
|
93
|
+
/** Also scan embed title/description/fields. */
|
|
94
|
+
scanEmbeds: boolean;
|
|
95
|
+
/** Flag non-allowlisted URLs whose path looks like OAuth/login. */
|
|
96
|
+
blockOauth: boolean;
|
|
93
97
|
severity: Severity;
|
|
94
98
|
}
|
|
95
99
|
export interface ImageConfig {
|
|
@@ -113,6 +117,10 @@ export interface ImageConfig {
|
|
|
113
117
|
* (raid / copypasta visual). 0 = desactivado.
|
|
114
118
|
*/
|
|
115
119
|
crossUserThreshold: number;
|
|
120
|
+
/** MIME types to skip, e.g. `["image/gif"]`. */
|
|
121
|
+
skipContentTypes: string[];
|
|
122
|
+
/** Max image attachments per message. 0 = unlimited. */
|
|
123
|
+
maxAttachments: number;
|
|
116
124
|
severity: Severity;
|
|
117
125
|
}
|
|
118
126
|
export interface MentionConfig {
|
|
@@ -120,6 +128,8 @@ export interface MentionConfig {
|
|
|
120
128
|
maxMentions: number;
|
|
121
129
|
blockEveryone: boolean;
|
|
122
130
|
blockHere: boolean;
|
|
131
|
+
/** Same user mentioned this many times in one message. 0 = off. */
|
|
132
|
+
maxRepeatsOfSame: number;
|
|
123
133
|
severity: Severity;
|
|
124
134
|
}
|
|
125
135
|
export interface CapsConfig {
|
|
@@ -139,6 +149,8 @@ export interface FileConfig {
|
|
|
139
149
|
enabled: boolean;
|
|
140
150
|
/** Extensiones bloqueadas, con o sin punto: `exe`, `.bat`. */
|
|
141
151
|
blockedExtensions: string[];
|
|
152
|
+
/** Max attachment size in bytes. 0 = unlimited. */
|
|
153
|
+
maxBytes: number;
|
|
142
154
|
severity: Severity;
|
|
143
155
|
}
|
|
144
156
|
export interface ZalgoConfig {
|
|
@@ -152,10 +164,62 @@ export interface NewlineConfig {
|
|
|
152
164
|
maxNewlines: number;
|
|
153
165
|
severity: Severity;
|
|
154
166
|
}
|
|
167
|
+
export interface AccountConfig {
|
|
168
|
+
enabled: boolean;
|
|
169
|
+
/** Accounts younger than this many days are flagged. */
|
|
170
|
+
minAgeDays: number;
|
|
171
|
+
/** Flag users still using the default Discord avatar. */
|
|
172
|
+
blockDefaultAvatar: boolean;
|
|
173
|
+
/** Minimum days the member must have been in this guild. 0 = off. */
|
|
174
|
+
minGuildAgeDays: number;
|
|
175
|
+
severity: Severity;
|
|
176
|
+
}
|
|
177
|
+
export interface LengthConfig {
|
|
178
|
+
enabled: boolean;
|
|
179
|
+
maxCharacters: number;
|
|
180
|
+
severity: Severity;
|
|
181
|
+
}
|
|
182
|
+
export interface WordConfig {
|
|
183
|
+
enabled: boolean;
|
|
184
|
+
list: string[];
|
|
185
|
+
regex: string[];
|
|
186
|
+
ignoreCase: boolean;
|
|
187
|
+
matchWholeWord: boolean;
|
|
188
|
+
severity: Severity;
|
|
189
|
+
}
|
|
190
|
+
export interface HopConfig {
|
|
191
|
+
enabled: boolean;
|
|
192
|
+
/** Unique channels posted in during the window. */
|
|
193
|
+
maxChannels: number;
|
|
194
|
+
windowMs: number;
|
|
195
|
+
severity: Severity;
|
|
196
|
+
}
|
|
197
|
+
export interface PunctuationConfig {
|
|
198
|
+
enabled: boolean;
|
|
199
|
+
/** `aaaaaa` / `!!!!!!` longer than this is flagged. */
|
|
200
|
+
maxRepeated: number;
|
|
201
|
+
severity: Severity;
|
|
202
|
+
}
|
|
203
|
+
export interface SpoilerConfig {
|
|
204
|
+
enabled: boolean;
|
|
205
|
+
maxSpoilers: number;
|
|
206
|
+
severity: Severity;
|
|
207
|
+
}
|
|
208
|
+
export interface GhostPingConfig {
|
|
209
|
+
enabled: boolean;
|
|
210
|
+
minMentions: number;
|
|
211
|
+
/** Only if the message is deleted within this time. 0 = any age. */
|
|
212
|
+
maxAgeMs: number;
|
|
213
|
+
severity: Severity;
|
|
214
|
+
}
|
|
155
215
|
export interface TimeoutPunishment {
|
|
156
216
|
enabled: boolean;
|
|
157
217
|
durationMs: number;
|
|
158
218
|
minStrikes: number;
|
|
219
|
+
/** `linear` = base * strikes, `exponential` = base * 2^(strikes-1). */
|
|
220
|
+
scale: TimeoutScale;
|
|
221
|
+
/** Cap for scaled timeouts (Discord max is 28 days). */
|
|
222
|
+
maxDurationMs: number;
|
|
159
223
|
}
|
|
160
224
|
export interface BooleanPunishment {
|
|
161
225
|
enabled: boolean;
|
|
@@ -182,17 +246,27 @@ export interface PunishmentConfig {
|
|
|
182
246
|
* Evita 4 timeouts seguidos en el mismo burst de flood.
|
|
183
247
|
*/
|
|
184
248
|
cooldownMs: number;
|
|
185
|
-
/** Sigue borrando mensajes mientras dura el cooldown. */
|
|
186
249
|
deleteDuringCooldown: boolean;
|
|
250
|
+
warnAsEmbed: boolean;
|
|
251
|
+
/** Roles to add on punish (mute role, etc.). */
|
|
252
|
+
addRoleIds: string[];
|
|
253
|
+
/** Roles to remove on punish. */
|
|
254
|
+
removeRoleIds: string[];
|
|
255
|
+
minStrikesForRoles: number;
|
|
187
256
|
}
|
|
188
257
|
export interface ResolvedConfig {
|
|
189
258
|
enabled: boolean;
|
|
190
259
|
dryRun: boolean;
|
|
260
|
+
locale: Locale;
|
|
191
261
|
ignoreBots: boolean;
|
|
192
262
|
ignoreWebhooks: boolean;
|
|
193
263
|
ignoreOwner: boolean;
|
|
194
|
-
/** Ignora miembros con permiso Administrator. */
|
|
195
264
|
ignoreAdministrators: boolean;
|
|
265
|
+
/**
|
|
266
|
+
* Extra permission names that skip checks, e.g. `["ManageMessages", "ModerateMembers"]`.
|
|
267
|
+
* Uses discord.js `PermissionFlagsBits` keys.
|
|
268
|
+
*/
|
|
269
|
+
ignorePermissions: string[];
|
|
196
270
|
ignored: IgnoreLists;
|
|
197
271
|
flood: FloodConfig;
|
|
198
272
|
duplicates: DuplicateConfig;
|
|
@@ -204,11 +278,24 @@ export interface ResolvedConfig {
|
|
|
204
278
|
files: FileConfig;
|
|
205
279
|
zalgo: ZalgoConfig;
|
|
206
280
|
newlines: NewlineConfig;
|
|
281
|
+
accounts: AccountConfig;
|
|
282
|
+
length: LengthConfig;
|
|
283
|
+
words: WordConfig;
|
|
284
|
+
hop: HopConfig;
|
|
285
|
+
punctuation: PunctuationConfig;
|
|
286
|
+
spoilers: SpoilerConfig;
|
|
287
|
+
ghostPing: GhostPingConfig;
|
|
207
288
|
punishment: PunishmentConfig;
|
|
208
|
-
/** Revisa también ediciones de mensajes. */
|
|
209
289
|
checkEdits: boolean;
|
|
210
|
-
/**
|
|
290
|
+
/** Listen for `messageDelete` (ghost pings). */
|
|
291
|
+
checkDeletes: boolean;
|
|
292
|
+
ignoreThreads: boolean;
|
|
293
|
+
ignoreSystem: boolean;
|
|
211
294
|
cleanupIntervalMs: number;
|
|
295
|
+
disabledDetectors: DetectorType[];
|
|
296
|
+
detectorOrder: DetectorType[];
|
|
297
|
+
channelOverrides: Record<string, DeepPartial<ResolvedConfig>>;
|
|
298
|
+
roleOverrides: Record<string, DeepPartial<ResolvedConfig>>;
|
|
212
299
|
}
|
|
213
300
|
export interface AntiSpamStats {
|
|
214
301
|
analyzed: number;
|
|
@@ -222,6 +309,7 @@ export interface AntiSpamOptions extends DeepPartial<ResolvedConfig> {
|
|
|
222
309
|
onDetect?: (incident: Incident, message: Message) => void | Promise<void>;
|
|
223
310
|
onAction?: (result: ActionResult) => void | Promise<void>;
|
|
224
311
|
onError?: (error: unknown, context: string) => void;
|
|
312
|
+
onCooldown?: (message: Message) => void | Promise<void>;
|
|
225
313
|
}
|
|
226
314
|
export interface AnalyzeContext {
|
|
227
315
|
client: Client;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,MAAM,YAAY,GACpB,OAAO,GACP,WAAW,GACX,MAAM,GACN,OAAO,GACP,SAAS,GACT,MAAM,GACN,OAAO,GACP,MAAM,GACN,OAAO,GACP,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@amatiscorp/disguard",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Configurable antispam for discord.js bots: flood,
|
|
3
|
+
"version": "1.3.0",
|
|
4
|
+
"description": "Configurable antispam for discord.js bots: flood, channel hop, blocked words, phishing, ghost pings, duplicate images, and more.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"disguard",
|
|
7
7
|
"discord",
|