aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorecho <91651232+exhq@users.noreply.github.com>2022-10-08 22:26:38 +0330
committerGitHub <noreply@github.com>2022-10-08 20:56:38 +0200
commitb101e643d5564ad93e7df6be9efde6e42cc7141d (patch)
treec6da798790a39326db77b6969ae3be7cd3bc3197
parentdea34503ef61fe8f2600d2d9b0edb2eec90ebd1b (diff)
downloadVencord-b101e643d5564ad93e7df6be9efde6e42cc7141d.tar.gz
Vencord-b101e643d5564ad93e7df6be9efde6e42cc7141d.tar.bz2
Vencord-b101e643d5564ad93e7df6be9efde6e42cc7141d.zip
added uwuify, but correct (#56)
* added uwuify command * second try, uwuify: the return * used the correct api * added stuttering, repeating words ending with "y" and word replaces * forgot to add one line lmao * deleted a test statement * added more isowo checks * fixed replace-checking edgecase * moved around statements - thanks arjix * fixed another edgecase - gosh my code sucks * did eslint bs, and added comments * removed multiple toLowerCase calls
-rw-r--r--src/plugins/uwuify.ts129
1 files changed, 129 insertions, 0 deletions
diff --git a/src/plugins/uwuify.ts b/src/plugins/uwuify.ts
new file mode 100644
index 0000000..710d0e8
--- /dev/null
+++ b/src/plugins/uwuify.ts
@@ -0,0 +1,129 @@
+import definePlugin from "../utils/types";
+import { findOption, RequiredMessageOption } from "../api/Commands";
+
+//words have a chance of ending with these
+const endings = [
+ "owo",
+ "UwU",
+ ">w<",
+ "^w^",
+ "ā—wā—",
+ "ā˜†wā˜†",
+ "š—Øš˜„š—Ø",
+ "(į—’į—Øį—•)",
+ "(ā–°Ė˜vĖ˜ā–°)",
+ "( Ā“ ā–½ ` ).ļ½”ļ½ā™”",
+ "*unbuttons shirt*",
+ ">3<",
+ ">:3",
+ ":3",
+ "murr~",
+ "ā™„(怂U Ļ‰ U怂)",
+ "(Ė˜ĪµĖ˜)",
+ "*screams*",
+ "*twerks*",
+ "*sweats*",
+];
+
+//replacement words
+const words = [
+ ["love", "wuv"],
+ ["mr", "mistuh"],
+ ["dog", "doggo"],
+ ["cat", "kitteh"],
+ ["hello", "henwo"],
+ ["hell", "heck"],
+ ["fuck", "fwick"],
+ ["fuk", "fwick"],
+ ["shit", "shoot"],
+ ["friend", "fwend"],
+ ["stop", "stawp"],
+ ["god", "gosh"],
+ ["dick", "peepee"],
+ ["penis", "bulge"],
+ ["damn", "darn"],
+];
+
+
+//uwuify command
+function uwuify(message: string): string {
+ let isowo = false;
+ return message
+ .split(" ")
+ .map(element => {
+ isowo = false;
+ let lowerCase = element.toLowerCase();
+ //return if the word is too short - uwuifying short words makes them unreadable
+ if (element.length < 4) {
+ return element;
+ }
+
+ //replacing the words based on the array on line 29
+ for (let [find, replace] of words) {
+ if (element.includes(find)) {
+ element = element.replace(find, replace);
+ isowo = true;
+ }
+ }
+ //these are the biggest word changes. if any of these are done we dont do the
+ //ones after the isowo check. to keep the words somewhat readable
+ if (lowerCase.includes("u") && !lowerCase.includes("uwu")) {
+ element = element.replace("u", "UwU");
+ isowo = true;
+ }
+ if (lowerCase.includes("o") && !lowerCase.includes("owo")) {
+ element = element.replace("o", "OwO");
+ isowo = true;
+ }
+ if (lowerCase.endsWith("y") && element.length < 7) {
+ element = element + " " + "w" + element.slice(1);
+ isowo = true;
+ }
+
+ //returning if word has been already uwuified - to prevent over-uwuifying
+ if (isowo) {
+ return element;
+ }
+
+ //more tiny changes - to keep the words that passed through the latter changes uwuified
+ if (!lowerCase.endsWith("n")) {
+ element = element.replace("n", "ny");
+ }
+ if (Math.floor(Math.random() * 2) == 1) {
+ element.replace("s", "sh");
+ }
+ if (Math.floor(Math.random() * 5) == 3 && !isowo) {
+ element = element[0] + "-" + element[0] + "-" + element;
+ }
+ if (Math.floor(Math.random() * 5) == 3) {
+ element =
+ element +
+ " " +
+ endings[Math.floor(Math.random() * endings.length)];
+ }
+ element = element.replace("r", "w").replace("l", "w");
+ return element;
+ }).join(" ");
+}
+
+
+
+//actual command declaration
+export default definePlugin({
+ name: "UwUifier",
+ description: "Simply uwuify commands",
+ authors: [{ name: "ECHO", id: 712639419785412668n }],
+ dependencies: ["CommandsAPI"],
+
+ commands: [
+ {
+ name: "uwuify",
+ description: "uwuifies your messages",
+ options: [RequiredMessageOption],
+
+ execute: opts => ({
+ content: uwuify(findOption(opts, "message", "")),
+ }),
+ },
+ ],
+});