Skip to content

Commit f3818d5

Browse files
committed
add beta unicode
1 parent a8d1452 commit f3818d5

File tree

4 files changed

+99
-68
lines changed

4 files changed

+99
-68
lines changed

generators.js

Lines changed: 40 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -272,83 +272,101 @@ function generateLeetspeakRegex(text, settings) {
272272

273273
const REGEX_CHARACTER_SETS = [
274274
{
275-
setting_bitwise: 1,
275+
setting_bitwise: 2,
276276
value: function(settings) {
277-
if (!(settings & 4)) {
277+
if (!(settings & 8)) {
278278
return "a-zA-Z";
279279
} else {return ""};
280-
}
280+
},
281+
essential: true
281282
},
282283
{
283-
setting_bitwise: 2,
284+
setting_bitwise: 4,
284285
value: function(settings) {
285-
if (!(settings & 4)) {
286+
if (!(settings & 8)) {
286287
return "0-9";
287288
} else {return ""};
288-
}
289+
},
290+
essential: true
289291
},
290292
{
291-
setting_bitwise: 4,
293+
setting_bitwise: 8,
292294
value: function(settings) {
293-
if (settings & 1 && settings & 2) {
295+
if (settings & 2 && settings & 4) {
294296
return "\\p{ASCII}";
295-
} else if (settings & 1) {
296-
return "\\p{ASCII}--[0-9]";
297297
} else if (settings & 2) {
298+
return "\\p{ASCII}--[0-9]";
299+
} else if (settings & 4) {
298300
return "\\p{ASCII}--[a-zA-Z]";
299301
} else {
300302
return "\\p{ASCII}--[a-zA-Z0-9]";
301303
}
302-
}
304+
},
305+
essential: true
303306
},
304307
{
305-
setting_bitwise: 8,
308+
setting_bitwise: 16,
306309
value: "€…†‡‘’“”•–—™¢£¤¥¦§©®°±²³µ¶¹"
307310
},
308311
{
309-
setting_bitwise: 16,
312+
setting_bitwise: 32,
310313
value: function(settings) {
311-
if (settings & 8) {
314+
if (settings & 16) {
312315
return "À-ÿŸ¿¡"
313316
} else {
314317
return "À-ÿŸ"
315318
}
316319
}
317320
},
318321
{
319-
setting_bitwise: 32,
322+
setting_bitwise: 64,
320323
value: "\\p{Extended_Pictographic}\\u{200d}\\u{1f3fb}-\\u{1f3ff}\\u{1f1e6}-\\u{1f1ff}\\u{fe0f}"
321324
},
322325
{
323-
setting_bitwise: 64,
326+
setting_bitwise: 128,
324327
value: "\\u{0400}-\\u{04ff}\\u{0500}-\\u{052f}\\u{a640}-\\u{a69f}\\u{1e030}-\\u{1e08f}\\u{1d2b}-\\u{1d78}\\u{fe2e}-\\u{fe2f}"
325328
},
326329
{
327-
setting_bitwise: 128,
330+
setting_bitwise: 256,
328331
value: "\\u{3000}-\\u{303f}\\u{3040}-\\u{309f}\\u{30a0}-\\u{30ff}\\u{ff00}-\\u{ff9f}\\u{4e00}-\\u{9faf}\\u{3400}-\\u{4dbf}"
329332
},
330333
{
331-
setting_bitwise: 256,
334+
setting_bitwise: 512,
332335
value: "\\u{0621}-\\u{064b}\\u{0660}-\\u{0669}"
333336
}
334337
]
335338

336-
function generateCharacterTypeRegex(text, settings) {
339+
function generateCharacterTypeRegex(settings) {
337340
let character_sets = [];
341+
let violates_essential = false;
338342

339343
for (var i = 0; i < REGEX_CHARACTER_SETS.length; i++) {
340344
let character_set = REGEX_CHARACTER_SETS[i];
341345

342346
if (settings & character_set.setting_bitwise) {
343347
if (typeof character_set.value === 'function') {
344-
character_sets.push(character_set.value(settings))
348+
character_sets.push(character_set.value(settings));
345349
} else {
346-
character_sets.push(character_set.value)
350+
character_sets.push(character_set.value);
351+
};
352+
if (character_set.essential && !(settings & 1)) {
353+
violates_essential
347354
}
348355
}
349356
};
350357

351-
let end_text = `[^${character_sets.join('')}]`;
358+
let end_text
359+
if (settings & 1) {
360+
end_text = `[^${character_sets.join('')}]`;
361+
if (!character_sets.length) {
362+
end_text = `.`;
363+
};
364+
} else {
365+
end_text = `[${character_sets.join('')}]`;
366+
if (!character_sets.length) {
367+
end_text = ``;
368+
};
369+
}
352370

353371
return {
354372
regex: end_text,

static/main.css

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -434,6 +434,16 @@ h4 {
434434
padding: 5px;
435435
}
436436

437+
select {
438+
font-family: 'Poppins', sans-serif;
439+
background-color: #151515;
440+
color: white;
441+
border-style: none;
442+
border-radius: 10px;
443+
height: 30px;
444+
padding: 0 5px;
445+
}
446+
437447
@media (pointer:coarse) {
438448
.header {
439449
padding: 15px;

static/allowcharacters.js renamed to static/unicode.js

Lines changed: 37 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import { generateCharacterTypeRegex } from "../generators.js";
2424

2525
const output = document.getElementById("regex-output");
26-
const input = document.getElementById("word-input");
26+
const whitelist_mode = document.getElementById("whitelist-mode");
2727
const error_length = document.getElementById("regex-error-toolong");
2828
const reset_settings = document.getElementById("reset-settings");
2929
const copy_output = document.getElementById("copy-regex");
@@ -42,28 +42,29 @@ function updateRegex() {
4242
copy_output.innerText = "Copy"
4343

4444
var settings = 0;
45-
settings += checkbox_let.checked << 0
46-
settings += checkbox_num.checked << 1
47-
settings += checkbox_asc.checked << 2
48-
settings += checkbox_sym.checked << 3
49-
settings += checkbox_acc.checked << 4
50-
settings += checkbox_emo.checked << 5
51-
settings += checkbox_cyr.checked << 6
52-
settings += checkbox_kaj.checked << 7
53-
settings += checkbox_arb.checked << 8
54-
55-
// location.hash = btoa(JSON.stringify({
56-
// input: input.value.toLowerCase(),
57-
// settings: settings
58-
// })).replaceAll('+', '-').replaceAll('/', '_').replaceAll('=', '')
45+
settings += (whitelist_mode.value == "allow") << 0
46+
settings += checkbox_let.checked << 1
47+
settings += checkbox_num.checked << 2
48+
settings += checkbox_asc.checked << 3
49+
settings += checkbox_sym.checked << 4
50+
settings += checkbox_acc.checked << 5
51+
settings += checkbox_emo.checked << 6
52+
settings += checkbox_cyr.checked << 7
53+
settings += checkbox_kaj.checked << 8
54+
settings += checkbox_arb.checked << 9
55+
56+
location.hash = btoa(JSON.stringify({
57+
s: settings
58+
})).replaceAll('+', '-').replaceAll('/', '_').replaceAll('=', '')
5959

60-
let generated = generateCharacterTypeRegex('', settings)
60+
let generated = generateCharacterTypeRegex(settings)
6161

6262
error_length.hidden = !generated.too_long
6363
output.innerText = generated.regex;
6464
}
6565

6666
reset_settings.onclick = function() {
67+
whitelist_mode.value = "allow"
6768
checkbox_let.checked = true;
6869
checkbox_num.checked = true;
6970
checkbox_asc.checked = true;
@@ -94,23 +95,25 @@ checkbox_emo.onchange = updateRegex
9495
checkbox_cyr.onchange = updateRegex
9596
checkbox_kaj.onchange = updateRegex
9697
checkbox_arb.onchange = updateRegex
97-
98-
// if (location.hash.length > 1) {
99-
// const data = JSON.parse(atob(location.hash.replace("#", "").replace('_', '/').replace('-', '+')));
100-
101-
// input.value = data.input;
102-
103-
// checkbox_num.checked = data.settings & 1
104-
// checkbox_sym.checked = data.settings & 2
105-
// checkbox_let.checked = data.settings & 4
106-
// checkbox_emo.checked = data.settings & 8
107-
// checkbox_dub.checked = data.settings & 16
108-
// checkbox_mul.checked = data.settings & 32
109-
// checkbox_whi.checked = data.settings & 64
110-
// checkbox_vow.checked = data.settings & 128
111-
// checkbox_pmc.checked = data.settings & 256
112-
// checkbox_duc.checked = data.settings & 512
113-
// checkbox_uni.checked = data.settings & 1024
114-
// }
98+
whitelist_mode.onchange = updateRegex
99+
100+
if (location.hash.length > 1) {
101+
const data = JSON.parse(atob(location.hash.replace("#", "").replace('_', '/').replace('-', '+')));
102+
103+
checkbox_let.checked = data.s & 2
104+
checkbox_num.checked = data.s & 4
105+
checkbox_asc.checked = data.s & 8
106+
checkbox_sym.checked = data.s & 16
107+
checkbox_acc.checked = data.s & 32
108+
checkbox_emo.checked = data.s & 64
109+
checkbox_cyr.checked = data.s & 128
110+
checkbox_kaj.checked = data.s & 256
111+
checkbox_arb.checked = data.s & 512
112+
if (data.s & 1) {
113+
whitelist_mode.value = "allow"
114+
} else {
115+
whitelist_mode.value = "block"
116+
}
117+
}
115118

116119
updateRegex()

allowcharacters.html renamed to unicode.html

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
SOFTWARE. -->
2222

2323
<head>
24-
<title>AutoMod Regex Generator</title>
24+
<title>Unicode - AutoMod Regex Generator</title>
2525
<meta property="og:title" content="AutoMod Regex Generator"/>
2626
<meta property="og:description" content="Quickly generate a regex for Discord's AutoMod that will protect your community from using leetspeak to bypass keyword rules."/>
2727
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width, user-scalable=no"/>
@@ -43,20 +43,18 @@
4343
<a href="/automod-regex-generator/">AutoMod Regex Generator</a>
4444
<div class="pages">
4545
<a href="regexes.html">Regexes</a>
46-
<a href="api.html">API</a>
46+
<b href="unicode.html">Unicode</b>
4747
</div>
4848
</div>
4949
<div class="content">
50-
<p>Generate regexes for Discord's AutoMod that will protect your community from using special characters to bypass auto moderation and send hard to read messages.</p>
50+
<p>Generate a regex for Discord's AutoMod that will protect your community from using certain types of unicode to bypass AutoMod.</p>
5151

52-
<!-- <div class="step">
53-
<p>1. insert bitwise</p>
54-
<input type="number" class="text-input" id="word-input" value="hello world">
55-
</div> -->
56-
5752
<div class="step">
5853
<div class="title-with-right-element">
59-
<p>1. Choose your allowed character classes.</p>
54+
<p>1. Select the types of chracters you'd like to <select id="whitelist-mode">
55+
<option selected>allow</option>
56+
<option>block</option>
57+
</select>.</p>
6058
<button class="right-element" id="reset-settings">Reset Settings</button>
6159
</div>
6260
<div class="grid-row smaller-grid-items">
@@ -100,7 +98,7 @@
10098
</div>
10199

102100
<div class="step">
103-
<p>2. Copy the generated regex!</p>
101+
<p>3. Copy the generated regex!</p>
104102
<div class="error-box" id="regex-error-toolong" hidden>
105103
This Regex is too long! You need to shorten it by shortening the word or disabling some customizer settings!
106104
</div>
@@ -114,13 +112,15 @@
114112

115113
<p>You can also visit the <a class="link" href="regexes.html">Regexes page</a> to find regexes that block links, zalgo, and more.</p>
116114

117-
<script src="static/allowcharacters.js" type="module"></script>
115+
<p>If you're a developer, you can check out the <a class="link" href="api.html">API</a> to intergrate the generator into your own creations!</p>
116+
117+
<script src="static/unicode.js" type="module"></script>
118118
</div>
119119
<div class="footer">
120120
<div class="footer-left">
121121
AutoMod Regex Generator
122122

123-
<p>© treeben77 2024. Not affiliated with Discord.</p>
123+
<p class="footer-copyright">© treeben77 2024. Not affiliated with Discord.<br><a class="link" href="https://donate.stripe.com/cN23g53tk2U273G001">Donate</a> to the primary maintainer ❤️</p>
124124
</div>
125125
<div class="footer-right">
126126
<p>Made by <a class="link" href="https://treeben77.xyz">treeben77</a></p>

0 commit comments

Comments
 (0)