@amatiscorp/disguard 1.4.0 → 1.6.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.
Files changed (83) hide show
  1. package/README.md +309 -14
  2. package/dist/AntiSpam.d.ts +9 -1
  3. package/dist/AntiSpam.d.ts.map +1 -1
  4. package/dist/AntiSpam.js +155 -2
  5. package/dist/AntiSpam.js.map +1 -1
  6. package/dist/defaults.d.ts.map +1 -1
  7. package/dist/defaults.js +95 -1
  8. package/dist/defaults.js.map +1 -1
  9. package/dist/detectors/blank.d.ts +3 -0
  10. package/dist/detectors/blank.d.ts.map +1 -0
  11. package/dist/detectors/blank.js +25 -0
  12. package/dist/detectors/blank.js.map +1 -0
  13. package/dist/detectors/embed.d.ts +3 -0
  14. package/dist/detectors/embed.d.ts.map +1 -0
  15. package/dist/detectors/embed.js +25 -0
  16. package/dist/detectors/embed.js.map +1 -0
  17. package/dist/detectors/emojis.d.ts.map +1 -1
  18. package/dist/detectors/emojis.js +19 -1
  19. package/dist/detectors/emojis.js.map +1 -1
  20. package/dist/detectors/files.d.ts.map +1 -1
  21. package/dist/detectors/files.js +29 -1
  22. package/dist/detectors/files.js.map +1 -1
  23. package/dist/detectors/forward.d.ts +3 -0
  24. package/dist/detectors/forward.d.ts.map +1 -0
  25. package/dist/detectors/forward.js +35 -0
  26. package/dist/detectors/forward.js.map +1 -0
  27. package/dist/detectors/ghost.d.ts.map +1 -1
  28. package/dist/detectors/ghost.js +7 -0
  29. package/dist/detectors/ghost.js.map +1 -1
  30. package/dist/detectors/impersonate.d.ts +3 -0
  31. package/dist/detectors/impersonate.d.ts.map +1 -0
  32. package/dist/detectors/impersonate.js +86 -0
  33. package/dist/detectors/impersonate.js.map +1 -0
  34. package/dist/detectors/joins.d.ts +4 -0
  35. package/dist/detectors/joins.d.ts.map +1 -0
  36. package/dist/detectors/joins.js +30 -0
  37. package/dist/detectors/joins.js.map +1 -0
  38. package/dist/detectors/polls.d.ts +3 -0
  39. package/dist/detectors/polls.d.ts.map +1 -0
  40. package/dist/detectors/polls.js +35 -0
  41. package/dist/detectors/polls.js.map +1 -0
  42. package/dist/detectors/raid.d.ts +3 -0
  43. package/dist/detectors/raid.d.ts.map +1 -0
  44. package/dist/detectors/raid.js +23 -0
  45. package/dist/detectors/raid.js.map +1 -0
  46. package/dist/detectors/replies.d.ts +3 -0
  47. package/dist/detectors/replies.d.ts.map +1 -0
  48. package/dist/detectors/replies.js +32 -0
  49. package/dist/detectors/replies.js.map +1 -0
  50. package/dist/detectors/stickers.d.ts +3 -0
  51. package/dist/detectors/stickers.d.ts.map +1 -0
  52. package/dist/detectors/stickers.js +60 -0
  53. package/dist/detectors/stickers.js.map +1 -0
  54. package/dist/detectors/voice.d.ts +3 -0
  55. package/dist/detectors/voice.d.ts.map +1 -0
  56. package/dist/detectors/voice.js +35 -0
  57. package/dist/detectors/voice.js.map +1 -0
  58. package/dist/detectors/words.d.ts.map +1 -1
  59. package/dist/detectors/words.js +27 -3
  60. package/dist/detectors/words.js.map +1 -1
  61. package/dist/enforcement.d.ts +2 -1
  62. package/dist/enforcement.d.ts.map +1 -1
  63. package/dist/enforcement.js +100 -5
  64. package/dist/enforcement.js.map +1 -1
  65. package/dist/index.d.ts +5 -3
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +9 -1
  68. package/dist/index.js.map +1 -1
  69. package/dist/store/MemoryStore.d.ts +6 -0
  70. package/dist/store/MemoryStore.d.ts.map +1 -1
  71. package/dist/store/MemoryStore.js +44 -0
  72. package/dist/store/MemoryStore.js.map +1 -1
  73. package/dist/types.d.ts +131 -2
  74. package/dist/types.d.ts.map +1 -1
  75. package/dist/utils/flags.d.ts +5 -0
  76. package/dist/utils/flags.d.ts.map +1 -0
  77. package/dist/utils/flags.js +41 -0
  78. package/dist/utils/flags.js.map +1 -0
  79. package/dist/utils/normalize.d.ts +2 -0
  80. package/dist/utils/normalize.d.ts.map +1 -1
  81. package/dist/utils/normalize.js +46 -0
  82. package/dist/utils/normalize.js.map +1 -1
  83. package/package.json +2 -2
package/dist/types.d.ts CHANGED
@@ -1,9 +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" | "account" | "length" | "word" | "hop" | "punctuation" | "spoiler" | "ghost" | "invisible" | "echo" | "secret" | "attach";
2
+ export type DetectorType = "flood" | "duplicate" | "link" | "image" | "mention" | "caps" | "emoji" | "file" | "zalgo" | "newline" | "account" | "length" | "word" | "hop" | "punctuation" | "spoiler" | "ghost" | "invisible" | "echo" | "secret" | "attach" | "reply" | "blank" | "embed" | "raid" | "forward" | "sticker" | "impersonate" | "join" | "voice" | "poll";
3
3
  export type Locale = "en" | "es";
4
4
  export type TimeoutScale = "none" | "linear" | "exponential";
5
5
  export type Severity = "low" | "medium" | "high" | "critical";
6
- export type ActionType = "delete" | "warn" | "timeout" | "kick" | "ban" | "addRole" | "removeRole" | "purge";
6
+ export type ActionType = "delete" | "warn" | "timeout" | "kick" | "ban" | "addRole" | "removeRole" | "purge" | "slowmode";
7
7
  export type ImageHashMode = "meta" | "content";
8
8
  export type PresetName = "lenient" | "balanced" | "strict";
9
9
  export type DeepPartial<T> = {
@@ -40,6 +40,13 @@ export interface MessageSnapshot {
40
40
  attachmentHashes: string[];
41
41
  attachmentCount: number;
42
42
  mentionCount: number;
43
+ isReply: boolean;
44
+ emojiCount: number;
45
+ embedCount: number;
46
+ isForward: boolean;
47
+ stickerCount: number;
48
+ isVoice: boolean;
49
+ hasPoll: boolean;
43
50
  }
44
51
  export interface IgnoreLists {
45
52
  users: string[];
@@ -150,14 +157,27 @@ export interface EmojiConfig {
150
157
  enabled: boolean;
151
158
  maxEmojis: number;
152
159
  maxStickers: number;
160
+ /** Emojis + stickers across messages. 0 = off. */
161
+ maxInWindow: number;
162
+ windowMs: number;
153
163
  severity: Severity;
154
164
  }
155
165
  export interface FileConfig {
156
166
  enabled: boolean;
157
167
  /** Extensiones bloqueadas, con o sin punto: `exe`, `.bat`. */
158
168
  blockedExtensions: string[];
169
+ /**
170
+ * If non-empty, only these extensions are allowed (allowlist).
171
+ * `blockedExtensions` still applies first.
172
+ */
173
+ allowedExtensions: string[];
159
174
  /** Max attachment size in bytes. 0 = unlimited. */
160
175
  maxBytes: number;
176
+ /**
177
+ * Flag `virus.exe.png` style names where a blocked extension appears
178
+ * before the last one (allowlist bypass).
179
+ */
180
+ blockDoubleExtensions: boolean;
161
181
  severity: Severity;
162
182
  }
163
183
  export interface ZalgoConfig {
@@ -194,6 +214,10 @@ export interface WordConfig {
194
214
  regex: string[];
195
215
  ignoreCase: boolean;
196
216
  matchWholeWord: boolean;
217
+ /** Also scan embed title/description/fields. */
218
+ scanEmbeds: boolean;
219
+ /** Fold Cyrillic / Greek / fullwidth lookalikes before matching. */
220
+ normalizeHomoglyphs: boolean;
197
221
  severity: Severity;
198
222
  }
199
223
  export interface HopConfig {
@@ -251,6 +275,81 @@ export interface AttachConfig {
251
275
  windowMs: number;
252
276
  severity: Severity;
253
277
  }
278
+ export interface ReplyConfig {
279
+ enabled: boolean;
280
+ maxReplies: number;
281
+ windowMs: number;
282
+ severity: Severity;
283
+ }
284
+ export interface BlankConfig {
285
+ enabled: boolean;
286
+ severity: Severity;
287
+ }
288
+ export interface EmbedConfig {
289
+ enabled: boolean;
290
+ /** Embeds in a single message. */
291
+ maxEmbeds: number;
292
+ severity: Severity;
293
+ }
294
+ export interface RaidConfig {
295
+ enabled: boolean;
296
+ /** Distinct users posting in the same channel during the window. */
297
+ maxUsers: number;
298
+ windowMs: number;
299
+ severity: Severity;
300
+ }
301
+ export interface ForwardConfig {
302
+ enabled: boolean;
303
+ /** Forwarded Discord messages in the window (includes the current one). */
304
+ maxForwards: number;
305
+ windowMs: number;
306
+ severity: Severity;
307
+ }
308
+ export interface StickerConfig {
309
+ enabled: boolean;
310
+ /** Stickers in a single message. */
311
+ maxStickers: number;
312
+ /** Stickers across messages. 0 = off. */
313
+ maxInWindow: number;
314
+ windowMs: number;
315
+ /** Flag messages that are only stickers (no text/files/embeds). */
316
+ blockOnly: boolean;
317
+ severity: Severity;
318
+ }
319
+ export interface ImpersonateConfig {
320
+ enabled: boolean;
321
+ /** Compare nick / username / display name to the bot. */
322
+ matchBot: boolean;
323
+ /** Extra names to protect (staff, "Admin", brand). */
324
+ names: string[];
325
+ /** 0–1. Higher = stricter (0.85 ≈ one-character tweak). */
326
+ minSimilarity: number;
327
+ checkNickname: boolean;
328
+ checkUsername: boolean;
329
+ checkDisplayName: boolean;
330
+ severity: Severity;
331
+ }
332
+ export interface JoinConfig {
333
+ enabled: boolean;
334
+ /** Distinct accounts joining this guild during the window. */
335
+ maxJoins: number;
336
+ windowMs: number;
337
+ /** Only count accounts younger than this. 0 = every join. */
338
+ minAccountAgeDays: number;
339
+ severity: Severity;
340
+ }
341
+ export interface VoiceConfig {
342
+ enabled: boolean;
343
+ maxVoice: number;
344
+ windowMs: number;
345
+ severity: Severity;
346
+ }
347
+ export interface PollConfig {
348
+ enabled: boolean;
349
+ maxPolls: number;
350
+ windowMs: number;
351
+ severity: Severity;
352
+ }
254
353
  export interface TimeoutPunishment {
255
354
  enabled: boolean;
256
355
  durationMs: number;
@@ -299,6 +398,11 @@ export interface PunishmentConfig {
299
398
  purgeCount: number;
300
399
  /** Discord webhook URL for log embeds. Independent from `logChannelId`. */
301
400
  logWebhookUrl: string | null;
401
+ /**
402
+ * On `raid` / `join` hits, set the channel slowmode to this many seconds.
403
+ * 0 = off. Stays until a mod changes it.
404
+ */
405
+ slowmodeSeconds: number;
302
406
  }
303
407
  export interface ResolvedConfig {
304
408
  enabled: boolean;
@@ -335,6 +439,16 @@ export interface ResolvedConfig {
335
439
  echo: EchoConfig;
336
440
  secrets: SecretConfig;
337
441
  attach: AttachConfig;
442
+ replies: ReplyConfig;
443
+ blank: BlankConfig;
444
+ embeds: EmbedConfig;
445
+ raid: RaidConfig;
446
+ forwards: ForwardConfig;
447
+ stickers: StickerConfig;
448
+ impersonate: ImpersonateConfig;
449
+ joins: JoinConfig;
450
+ voice: VoiceConfig;
451
+ polls: PollConfig;
338
452
  punishment: PunishmentConfig;
339
453
  checkEdits: boolean;
340
454
  /** Listen for `messageDelete` (ghost pings). */
@@ -344,11 +458,23 @@ export interface ResolvedConfig {
344
458
  ignorePinned: boolean;
345
459
  /** Skip messages older than this (reconnect replay). 0 = off. */
346
460
  ignoreOlderThanMs: number;
461
+ /** Skip messages in NSFW channels. */
462
+ ignoreNsfw: boolean;
463
+ /** Skip server boosters (`premiumSince`). */
464
+ ignoreBoosters: boolean;
465
+ /** Listen for `guildMemberAdd` (join raids). */
466
+ checkJoins: boolean;
467
+ /**
468
+ * First N messages from a user in a guild only run file/secret/link/word.
469
+ * 0 = off. Lets new talkers say hi without tripping flood.
470
+ */
471
+ graceMessages: number;
347
472
  cleanupIntervalMs: number;
348
473
  disabledDetectors: DetectorType[];
349
474
  detectorOrder: DetectorType[];
350
475
  channelOverrides: Record<string, DeepPartial<ResolvedConfig>>;
351
476
  roleOverrides: Record<string, DeepPartial<ResolvedConfig>>;
477
+ userOverrides: Record<string, DeepPartial<ResolvedConfig>>;
352
478
  }
353
479
  export interface AntiSpamStats {
354
480
  analyzed: number;
@@ -363,6 +489,8 @@ export interface AntiSpamOptions extends DeepPartial<ResolvedConfig> {
363
489
  onAction?: (result: ActionResult) => void | Promise<void>;
364
490
  onError?: (error: unknown, context: string) => void;
365
491
  onCooldown?: (message: Message) => void | Promise<void>;
492
+ /** Fired on join-raid hits. There is no triggering message. */
493
+ onJoin?: (incident: Incident) => void | Promise<void>;
366
494
  }
367
495
  export interface AnalyzeContext {
368
496
  client: Client;
@@ -375,6 +503,7 @@ export interface DetectorInput {
375
503
  history: MessageSnapshot[];
376
504
  config: ResolvedConfig;
377
505
  now: number;
506
+ uniqueUsersInChannel: number;
378
507
  }
379
508
  export interface Detector {
380
509
  type: DetectorType;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { Message } from "discord.js";
2
+ export declare function isForwardedMessage(message: Message): boolean;
3
+ export declare function isVoiceMessage(message: Message): boolean;
4
+ export declare function hasPoll(message: Message): boolean;
5
+ //# sourceMappingURL=flags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../src/utils/flags.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAe1C,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAQ5D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAIxD;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAEjD"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isForwardedMessage = isForwardedMessage;
4
+ exports.isVoiceMessage = isVoiceMessage;
5
+ exports.hasPoll = hasPoll;
6
+ /** Discord `MessageFlags.HasSnapshot` — forwarded messages. */
7
+ const HAS_SNAPSHOT = 1 << 14;
8
+ /** Discord `MessageFlags.IsVoiceMessage`. */
9
+ const IS_VOICE_MESSAGE = 1 << 13;
10
+ function flagBitfield(message) {
11
+ const flags = message.flags;
12
+ if (!flags)
13
+ return 0;
14
+ if (typeof flags.bitfield === "bigint")
15
+ return Number(flags.bitfield);
16
+ if (typeof flags.bitfield === "number")
17
+ return flags.bitfield;
18
+ return 0;
19
+ }
20
+ function isForwardedMessage(message) {
21
+ const flags = message.flags;
22
+ if (flags && typeof flags.has === "function" && flags.has(HAS_SNAPSHOT))
23
+ return true;
24
+ if (flagBitfield(message) & HAS_SNAPSHOT)
25
+ return true;
26
+ const snapshots = message.messageSnapshots;
27
+ if (snapshots && typeof snapshots.size === "number" && snapshots.size > 0)
28
+ return true;
29
+ const reference = message.reference;
30
+ return Boolean(reference && reference.type === 1);
31
+ }
32
+ function isVoiceMessage(message) {
33
+ const flags = message.flags;
34
+ if (flags && typeof flags.has === "function" && flags.has(IS_VOICE_MESSAGE))
35
+ return true;
36
+ return Boolean(flagBitfield(message) & IS_VOICE_MESSAGE);
37
+ }
38
+ function hasPoll(message) {
39
+ return Boolean(message.poll);
40
+ }
41
+ //# sourceMappingURL=flags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flags.js","sourceRoot":"","sources":["../../src/utils/flags.ts"],"names":[],"mappings":";;AAeA,gDAQC;AAED,wCAIC;AAED,0BAEC;AA/BD,+DAA+D;AAC/D,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,CAAC;AAC7B,6CAA6C;AAC7C,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,CAAC;AAEjC,SAAS,YAAY,CAAC,OAAgB;IACpC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAmF,CAAC;IAC1G,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,CAAC;IACrB,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACtE,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,QAAQ,CAAC;IAC9D,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAgB,kBAAkB,CAAC,OAAgB;IACjD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAuD,CAAC;IAC9E,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,UAAU,IAAI,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IACrF,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,YAAY;QAAE,OAAO,IAAI,CAAC;IACtD,MAAM,SAAS,GAAI,OAA8D,CAAC,gBAAgB,CAAC;IACnG,IAAI,SAAS,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACvF,MAAM,SAAS,GAAG,OAAO,CAAC,SAAqC,CAAC;IAChE,OAAO,OAAO,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,SAAgB,cAAc,CAAC,OAAgB;IAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAuD,CAAC;IAC9E,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,UAAU,IAAI,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAAE,OAAO,IAAI,CAAC;IACzF,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,gBAAgB,CAAC,CAAC;AAC3D,CAAC;AAED,SAAgB,OAAO,CAAC,OAAgB;IACtC,OAAO,OAAO,CAAE,OAAwC,CAAC,IAAI,CAAC,CAAC;AACjE,CAAC"}
@@ -5,4 +5,6 @@ export declare function countEmojis(text: string): number;
5
5
  export declare function countZalgo(text: string): number;
6
6
  export declare function countInvisible(text: string): number;
7
7
  export declare function countNewlines(text: string): number;
8
+ /** Fold confusable unicode (and fullwidth) so word filters are harder to dodge. */
9
+ export declare function foldHomoglyphs(text: string): string;
8
10
  //# sourceMappingURL=normalize.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/utils/normalize.ts"],"names":[],"mappings":"AAKA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAYlD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD"}
1
+ {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/utils/normalize.ts"],"names":[],"mappings":"AAKA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAYlD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAmCD,mFAAmF;AACnF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAWnD"}
@@ -7,6 +7,7 @@ exports.countEmojis = countEmojis;
7
7
  exports.countZalgo = countZalgo;
8
8
  exports.countInvisible = countInvisible;
9
9
  exports.countNewlines = countNewlines;
10
+ exports.foldHomoglyphs = foldHomoglyphs;
10
11
  const ZALGO = /[\u0300-\u036f\u0489\u1ab0-\u1aff\u1dc0-\u1dff\u20d0-\u20ff\ufe20-\ufe2f]/g;
11
12
  const INVISIBLE = /[\u200b-\u200f\u202a-\u202e\u2060-\u206f\ufeff]/g;
12
13
  const MARKDOWN = /[`*_~|]+/g;
@@ -44,4 +45,49 @@ function countInvisible(text) {
44
45
  function countNewlines(text) {
45
46
  return (text.match(/\n/g) ?? []).length;
46
47
  }
48
+ /** Cyrillic / Greek / selected lookalikes mapped onto Latin. */
49
+ const HOMOGLYPHS = {
50
+ а: "a",
51
+ е: "e",
52
+ о: "o",
53
+ р: "p",
54
+ с: "c",
55
+ у: "y",
56
+ х: "x",
57
+ і: "i",
58
+ ј: "j",
59
+ ԁ: "d",
60
+ ѕ: "s",
61
+ һ: "h",
62
+ Α: "a",
63
+ α: "a",
64
+ ο: "o",
65
+ ι: "i",
66
+ ν: "v",
67
+ τ: "t",
68
+ ρ: "p",
69
+ κ: "k",
70
+ η: "n",
71
+ А: "a",
72
+ Е: "e",
73
+ О: "o",
74
+ Р: "p",
75
+ С: "c",
76
+ У: "y",
77
+ Х: "x",
78
+ І: "i",
79
+ };
80
+ /** Fold confusable unicode (and fullwidth) so word filters are harder to dodge. */
81
+ function foldHomoglyphs(text) {
82
+ let output = "";
83
+ for (const char of text) {
84
+ const code = char.codePointAt(0) ?? 0;
85
+ if (code >= 0xff01 && code <= 0xff5e) {
86
+ output += String.fromCharCode(code - 0xfee0);
87
+ continue;
88
+ }
89
+ output += HOMOGLYPHS[char] ?? char;
90
+ }
91
+ return output;
92
+ }
47
93
  //# sourceMappingURL=normalize.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../src/utils/normalize.ts"],"names":[],"mappings":";;AAKA,gCAEC;AAED,sCAYC;AAED,kCAEC;AAED,kCAIC;AAED,gCAEC;AAED,wCAEC;AAED,sCAEC;AA3CD,MAAM,KAAK,GAAG,4EAA4E,CAAC;AAC3F,MAAM,SAAS,GAAG,kDAAkD,CAAC;AACrE,MAAM,QAAQ,GAAG,WAAW,CAAC;AAC7B,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,SAAgB,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,SAAgB,aAAa,CAAC,IAAY;IACxC,OAAO,UAAU,CAAC,IAAI,CAAC;SACpB,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;SACtB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;SACpB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAC/B,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAC/B,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;SAC3B,WAAW,EAAE;SACb,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC;SACjC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,SAAgB,WAAW,CAAC,IAAY;IACtC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,SAAgB,WAAW,CAAC,IAAY;IACtC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;IACvE,OAAO,MAAM,GAAG,OAAO,CAAC;AAC1B,CAAC;AAED,SAAgB,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;AAC1D,CAAC;AAED,SAAgB,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,SAAgB,aAAa,CAAC,IAAY;IACxC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../src/utils/normalize.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.0",
4
- "description": "Configurable antispam for discord.js bots: flood, secrets, channel hop, phishing, ghost pings, and more.",
3
+ "version": "1.6.0",
4
+ "description": "Configurable antispam for discord.js bots: flood, phishing, forwards, impersonation, join raids, leaked secrets, and more.",
5
5
  "keywords": [
6
6
  "disguard",
7
7
  "discord",