aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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", "")),
+ }),
+ },
+ ],
+});