@amatiscorp/disguard 1.1.0 → 1.2.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 +114 -0
- package/dist/AntiSpam.d.ts +5 -0
- package/dist/AntiSpam.d.ts.map +1 -1
- package/dist/AntiSpam.js +57 -9
- package/dist/AntiSpam.js.map +1 -1
- package/dist/defaults.d.ts.map +1 -1
- package/dist/defaults.js +32 -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 +37 -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/flood.d.ts.map +1 -1
- package/dist/detectors/flood.js +7 -1
- package/dist/detectors/flood.js.map +1 -1
- 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 +4 -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/enforcement.d.ts +1 -0
- package/dist/enforcement.d.ts.map +1 -1
- package/dist/enforcement.js +30 -9
- package/dist/enforcement.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -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 +49 -14
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/types.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
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";
|
|
3
|
+
export type Locale = "en" | "es";
|
|
4
|
+
export type TimeoutScale = "none" | "linear" | "exponential";
|
|
3
5
|
export type Severity = "low" | "medium" | "high" | "critical";
|
|
4
6
|
export type ActionType = "delete" | "warn" | "timeout" | "kick" | "ban";
|
|
5
7
|
export type ImageHashMode = "meta" | "content";
|
|
@@ -45,25 +47,19 @@ export interface IgnoreLists {
|
|
|
45
47
|
guilds: string[];
|
|
46
48
|
}
|
|
47
49
|
export interface FloodConfig {
|
|
48
|
-
/** Activa el detector de flood (muchos mensajes en poco tiempo). */
|
|
49
50
|
enabled: boolean;
|
|
50
|
-
/** Máximo de mensajes permitidos dentro de la ventana. */
|
|
51
51
|
maxMessages: number;
|
|
52
|
-
/** Ventana deslizante en milisegundos. */
|
|
53
52
|
windowMs: number;
|
|
53
|
+
/** If true, only counts messages in the same channel. */
|
|
54
|
+
sameChannelOnly: boolean;
|
|
54
55
|
severity: Severity;
|
|
55
56
|
}
|
|
56
57
|
export interface DuplicateConfig {
|
|
57
|
-
/** Activa el detector de texto repetido. */
|
|
58
58
|
enabled: boolean;
|
|
59
|
-
/** Veces que se puede repetir el mismo (o muy similar) mensaje. */
|
|
60
59
|
maxRepeats: number;
|
|
61
60
|
windowMs: number;
|
|
62
|
-
/**
|
|
63
|
-
* Umbral 0-1. 1 = solo coincidencia exacta.
|
|
64
|
-
* 0.85 detecta variaciones leves ("hola!!" vs "hola!").
|
|
65
|
-
*/
|
|
66
61
|
similarity: number;
|
|
62
|
+
sameChannelOnly: boolean;
|
|
67
63
|
severity: Severity;
|
|
68
64
|
}
|
|
69
65
|
export interface LinkConfig {
|
|
@@ -90,6 +86,10 @@ export interface LinkConfig {
|
|
|
90
86
|
customPatterns: string[];
|
|
91
87
|
/** Palabras extra que, junto a un enlace, se consideran phishing. */
|
|
92
88
|
extraPhishingKeywords: string[];
|
|
89
|
+
/** Max URLs in one message. 0 = unlimited. */
|
|
90
|
+
maxLinks: number;
|
|
91
|
+
/** Also scan embed title/description/fields. */
|
|
92
|
+
scanEmbeds: boolean;
|
|
93
93
|
severity: Severity;
|
|
94
94
|
}
|
|
95
95
|
export interface ImageConfig {
|
|
@@ -113,6 +113,10 @@ export interface ImageConfig {
|
|
|
113
113
|
* (raid / copypasta visual). 0 = desactivado.
|
|
114
114
|
*/
|
|
115
115
|
crossUserThreshold: number;
|
|
116
|
+
/** MIME types to skip, e.g. `["image/gif"]`. */
|
|
117
|
+
skipContentTypes: string[];
|
|
118
|
+
/** Max image attachments per message. 0 = unlimited. */
|
|
119
|
+
maxAttachments: number;
|
|
116
120
|
severity: Severity;
|
|
117
121
|
}
|
|
118
122
|
export interface MentionConfig {
|
|
@@ -120,6 +124,8 @@ export interface MentionConfig {
|
|
|
120
124
|
maxMentions: number;
|
|
121
125
|
blockEveryone: boolean;
|
|
122
126
|
blockHere: boolean;
|
|
127
|
+
/** Same user mentioned this many times in one message. 0 = off. */
|
|
128
|
+
maxRepeatsOfSame: number;
|
|
123
129
|
severity: Severity;
|
|
124
130
|
}
|
|
125
131
|
export interface CapsConfig {
|
|
@@ -152,10 +158,27 @@ export interface NewlineConfig {
|
|
|
152
158
|
maxNewlines: number;
|
|
153
159
|
severity: Severity;
|
|
154
160
|
}
|
|
161
|
+
export interface AccountConfig {
|
|
162
|
+
enabled: boolean;
|
|
163
|
+
/** Accounts younger than this many days are flagged. */
|
|
164
|
+
minAgeDays: number;
|
|
165
|
+
/** Flag users still using the default Discord avatar. */
|
|
166
|
+
blockDefaultAvatar: boolean;
|
|
167
|
+
severity: Severity;
|
|
168
|
+
}
|
|
169
|
+
export interface LengthConfig {
|
|
170
|
+
enabled: boolean;
|
|
171
|
+
maxCharacters: number;
|
|
172
|
+
severity: Severity;
|
|
173
|
+
}
|
|
155
174
|
export interface TimeoutPunishment {
|
|
156
175
|
enabled: boolean;
|
|
157
176
|
durationMs: number;
|
|
158
177
|
minStrikes: number;
|
|
178
|
+
/** `linear` = base * strikes, `exponential` = base * 2^(strikes-1). */
|
|
179
|
+
scale: TimeoutScale;
|
|
180
|
+
/** Cap for scaled timeouts (Discord max is 28 days). */
|
|
181
|
+
maxDurationMs: number;
|
|
159
182
|
}
|
|
160
183
|
export interface BooleanPunishment {
|
|
161
184
|
enabled: boolean;
|
|
@@ -182,17 +205,23 @@ export interface PunishmentConfig {
|
|
|
182
205
|
* Evita 4 timeouts seguidos en el mismo burst de flood.
|
|
183
206
|
*/
|
|
184
207
|
cooldownMs: number;
|
|
185
|
-
/** Sigue borrando mensajes mientras dura el cooldown. */
|
|
186
208
|
deleteDuringCooldown: boolean;
|
|
209
|
+
/** Send the warning as an embed instead of plain text. */
|
|
210
|
+
warnAsEmbed: boolean;
|
|
187
211
|
}
|
|
188
212
|
export interface ResolvedConfig {
|
|
189
213
|
enabled: boolean;
|
|
190
214
|
dryRun: boolean;
|
|
215
|
+
locale: Locale;
|
|
191
216
|
ignoreBots: boolean;
|
|
192
217
|
ignoreWebhooks: boolean;
|
|
193
218
|
ignoreOwner: boolean;
|
|
194
|
-
/** Ignora miembros con permiso Administrator. */
|
|
195
219
|
ignoreAdministrators: boolean;
|
|
220
|
+
/**
|
|
221
|
+
* Extra permission names that skip checks, e.g. `["ManageMessages", "ModerateMembers"]`.
|
|
222
|
+
* Uses discord.js `PermissionFlagsBits` keys.
|
|
223
|
+
*/
|
|
224
|
+
ignorePermissions: string[];
|
|
196
225
|
ignored: IgnoreLists;
|
|
197
226
|
flood: FloodConfig;
|
|
198
227
|
duplicates: DuplicateConfig;
|
|
@@ -204,11 +233,17 @@ export interface ResolvedConfig {
|
|
|
204
233
|
files: FileConfig;
|
|
205
234
|
zalgo: ZalgoConfig;
|
|
206
235
|
newlines: NewlineConfig;
|
|
236
|
+
accounts: AccountConfig;
|
|
237
|
+
length: LengthConfig;
|
|
207
238
|
punishment: PunishmentConfig;
|
|
208
|
-
/** Revisa también ediciones de mensajes. */
|
|
209
239
|
checkEdits: boolean;
|
|
210
|
-
/** Intervalo de limpieza de memoria. */
|
|
211
240
|
cleanupIntervalMs: number;
|
|
241
|
+
/** Skip these detectors even if their `enabled` flag is true. */
|
|
242
|
+
disabledDetectors: DetectorType[];
|
|
243
|
+
/** Custom run order. Empty = built-in order. */
|
|
244
|
+
detectorOrder: DetectorType[];
|
|
245
|
+
/** Per-channel patches keyed by channel snowflake. */
|
|
246
|
+
channelOverrides: Record<string, DeepPartial<ResolvedConfig>>;
|
|
212
247
|
}
|
|
213
248
|
export interface AntiSpamStats {
|
|
214
249
|
analyzed: number;
|
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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"}
|