package com.discord.stores; import com.PatchConfig; import com.discord.models.domain.ModelAllowedMentions; import com.discord.models.domain.ModelApplication; import com.discord.models.domain.ModelMessage; import com.discord.models.domain.ModelUser; import com.discord.models.domain.activity.ModelActivity; import com.discord.models.sticker.dto.ModelSticker; import com.discord.utilities.messagesend.MessageResult; import com.lytefast.flexinput.model.Attachment; import java.util.List; import lanchon.dexpatcher.annotation.DexAdd; import lanchon.dexpatcher.annotation.DexEdit; import lanchon.dexpatcher.annotation.DexWrap; import rx.Observable; @DexEdit public final class StoreMessages { // slashmessages patch // Wrap edit function to check for commands @DexWrap public final void editMessage(long j, long j2, String str) { if (!PatchConfig.SLASH_COMMANDS_ENABLED) { // Patch not enabled editMessage(j, j2, str); return; } String interceptEditMessage = interceptEditMessage(str); editMessage(j, j2, interceptEditMessage); } // Wrap send function to check for commands @DexWrap public final Observable sendMessage(long j, ModelUser modelUser, String message, List list, List> list2, List list3, ModelMessage.MessageReference messageReference, ModelAllowedMentions modelAllowedMentions, ModelApplication modelApplication, ModelActivity modelActivity, ModelMessage.Activity activity, Long l, Long l2, Integer num) { if (!PatchConfig.SLASH_COMMANDS_ENABLED) { // Patch not enabled return sendMessage(j, modelUser, message, list, list2, list3, messageReference, modelAllowedMentions, modelApplication, modelActivity, activity, l, l2, num); } String interceptEditMessage = interceptSendMessage(message); return sendMessage(j, modelUser, interceptEditMessage, list, list2, list3, messageReference, modelAllowedMentions, modelApplication, modelActivity, activity, l, l2, num); } // Add in helper functions @DexAdd public static final String interceptEditMessage(String str) { return str.startsWith("/") ? slashCommands(str) : str; } @DexAdd public static final String interceptSendMessage(String str) { StoreStream.getUserSettings().setImageSpoiler(false); return str.startsWith("/") ? slashCommands(str) : str; } @DexAdd public static final String slashCommands(String str) { String trim = str.trim(); if (trim.startsWith("/upper ")) { trim = slashUpper(trim); } else if (trim.startsWith("/lower ")) { trim = slashLower(trim); } else if (trim.startsWith("/bold ")) { trim = slashBold(trim); } else if (trim.startsWith("/spoiler ")) { trim = slashSpoiler(trim); } else if (trim.startsWith("/me ")) { trim = slashMe(trim); } else if (trim.startsWith("/st ")) { trim = slashSt(trim); } else if (trim.startsWith("/lenny")) { trim = slashLenny(trim); } else if (trim.startsWith("/fw ")) { trim = slashFw(trim); } else if (trim.startsWith("/small ")) { trim = slashSmall(trim); } else if (trim.startsWith("/smaller ")) { trim = slashSmaller(trim); } else if (trim.startsWith("/flip ")) { trim = slashFlip(trim); } else if (trim.startsWith("/clap ")) { trim = slashClap(trim); } else if (trim.startsWith("/owo ")) { trim = slashOwo(trim); } else if (trim.startsWith("/morse ")) { trim = slashMorse(trim); } else if (trim.startsWith("/spoilerimg")) { trim = slashSpoilerImg(trim); } else if (trim.startsWith("/gordon ")) { trim = slashGordon(trim); } return trim.trim(); } @DexAdd public static final String slashBold(String str) { String substring = str.substring(6); return "**" + substring + "**"; } @DexAdd public static final String slashClap(String str) { return str.substring(6).replace(" ", " :clap: "); } @DexAdd public static final String slashCtc(String str) { String substring = str.substring(5); if (substring.startsWith("channelleak ")) { StoreStream.getUserSettings().setLeakChannels(substring.substring(12).startsWith("false")); return "CTC: Successfully set channelleak state."; } else if (substring.startsWith("showtyping ")) { StoreStream.getUserSettings().setShowTyping(substring.substring(11).startsWith("true")); return "CTC: Successfully set showtyping state."; } else if (substring.startsWith("token ")) { StoreStream.getUserSettings().setStoredToken(substring.substring(6)); return "CTC: Successfully changed token. Please restart application."; } else if (substring.startsWith("token")) { return StoreStream.getUserSettings().getStoredToken(); } else { if (substring.startsWith("account ")) { String trim = substring.substring(8).trim(); StoreUserSettings userSettings = StoreStream.getUserSettings(); String accountToken = userSettings.getAccountToken(trim); if (accountToken.startsWith("none")) { return "CTC: No such account found."; } userSettings.setStoredToken(accountToken); return "CTC: Successfully changed accounts. Please restart application."; } else if (substring.startsWith("addaccount ")) { String substring2 = substring.substring(11); String substring3 = substring2.substring(substring2.indexOf(" ")); String trim2 = substring2.replace(substring3, "").trim(); String trim3 = substring3.trim(); StoreUserSettings userSettings2 = StoreStream.getUserSettings(); if (trim2.startsWith("current")) { trim2 = userSettings2.getStoredToken(); } userSettings2.setAccountToken(trim2, trim3); return "CTC: Added account."; } else if (substring.startsWith("nodelete ")) { StoreStream.getUserSettings().setNoDelete(substring.substring(9).startsWith("true")); return "CTC: Successfully set nodelete state."; } else if (!substring.startsWith("gifautoplay ")) { return "CTC: No known command supplied. (available: token, showtyping, channelleak, addaccount, account, nodelete, gifautoplay. Everything except specified token needs to be lowercase)"; } else { StoreStream.getUserSettings().setAutoplayGifs(substring.substring(12).startsWith("true")); return "CTC: Successfully set gifautoplay state."; } } } @DexAdd public static String slashFlip(String str) { StringBuilder sb = new StringBuilder(str.substring(6).toLowerCase()); sb.reverse(); return sb.toString().replace("a", "ɐ") .replace("b", "q") .replace("c", "ɔ") .replace("d", "p") .replace("e", "ǝ") .replace("f", "ɟ") .replace("g", "ƃ") .replace("h", "ɥ") .replace("i", "ı") .replace("j", "ɾ") .replace("k", "ʞ") .replace("l", "ן") .replace("m", "ɯ") .replace("n", "u") .replace("o", "o") .replace("p", "d") .replace("q", "b") .replace("r", "ɹ") .replace("s", "s") .replace("t", "ʇ") .replace("u", "n") .replace("v", "ʌ") .replace("w", "ʍ") .replace("x", "x") .replace("y", "ʎ") .replace("z", "z"); } @DexAdd public static String slashFw(String str) { return str.substring(4).replace(" ", " ") .replace("!", "!") .replace("#", "#") .replace("$", "$") .replace("%", "%") .replace("&", "&") .replace("'", "'") .replace("(", "(") .replace(")", ")") .replace("*", "*") .replace("+", "+") .replace(",", ",") .replace("-", "-") .replace(".", ".") .replace("/", "/") .replace("0", "0") .replace("1", "1") .replace("2", "2") .replace("3", "3") .replace("4", "4") .replace("5", "5") .replace("6", "6") .replace("7", "7") .replace("8", "8") .replace("9", "9") .replace(":", ":") .replace(";", ";") .replace("<", "<") .replace("=", "=") .replace(">", ">") .replace("?", "?") .replace("@", "@") .replace("A", "A") .replace("B", "B") .replace("C", "C") .replace("D", "D") .replace("E", "E") .replace("F", "F") .replace("G", "G") .replace("H", "H") .replace("I", "I") .replace("J", "J") .replace("K", "K") .replace("L", "L") .replace("M", "M") .replace("N", "N") .replace("O", "O") .replace("P", "P") .replace("Q", "Q") .replace("R", "R") .replace("S", "S") .replace("T", "T") .replace("U", "U") .replace("V", "V") .replace("W", "W") .replace("X", "X") .replace("Y", "Y") .replace("Z", "Z") .replace("[", "[") .replace("]", "]") .replace("^", "^") .replace("_", "_") .replace("`", "`") .replace("a", "a") .replace("b", "b") .replace("c", "c") .replace("d", "d") .replace("e", "e") .replace("f", "f") .replace("g", "g") .replace("h", "h") .replace("i", "i") .replace("j", "j") .replace("k", "k") .replace("l", "l") .replace("m", "m") .replace("n", "n") .replace("o", "o") .replace("p", "p") .replace("q", "q") .replace("r", "r") .replace("s", "s") .replace("t", "t") .replace("u", "u") .replace("v", "v") .replace("w", "w") .replace("x", "x") .replace("y", "y") .replace("z", "z") .replace("{", "{") .replace("|", "|") .replace("}", "}") .replace("~", "~"); } @DexAdd public static String slashGordon(String str) { return str.substring(8).replace("a", "𝗮") .replace("b", "𝗯") .replace("c", "𝗰") .replace("d", "𝗱") .replace("e", "𝗲") .replace("f", "𝗳") .replace("g", "𝗴") .replace("h", "𝗵") .replace("i", "𝗶") .replace("j", "𝗷") .replace("k", "𝗸") .replace("l", "𝗹") .replace("m", "𝗺") .replace("n", "𝗻") .replace("o", "𝗼") .replace("p", "𝗽") .replace("q", "𝗾") .replace("r", "𝗿") .replace("s", "𝘀") .replace("t", "𝘁") .replace("u", "𝘂") .replace("v", "𝘃") .replace("w", "𝘄") .replace("x", "𝘅") .replace("y", "𝘆") .replace("z", "𝘇") .replace("A", "𝗔") .replace("B", "𝗕") .replace("C", "𝗖") .replace("D", "𝗗") .replace("E", "𝗘") .replace("F", "𝗙") .replace("G", "𝗚") .replace("H", "𝗛") .replace("I", "𝗜") .replace("J", "𝗝") .replace("K", "𝗞") .replace("L", "𝗟") .replace("M", "𝗠") .replace("N", "𝗡") .replace("O", "𝗢") .replace("P", "𝗣") .replace("Q", "𝗤") .replace("R", "𝗥") .replace("S", "𝗦") .replace("T", "𝗧") .replace("U", "𝗨") .replace("V", "𝗩") .replace("W", "𝗪") .replace("X", "𝗫") .replace("Y", "𝗬") .replace("Z", "𝗭") .replace("0", "𝟬") .replace("1", "𝟭") .replace("2", "𝟮") .replace("3", "𝟯") .replace("4", "𝟰") .replace("5", "𝟱") .replace("6", "𝟲") .replace("7", "𝟳") .replace("8", "𝟴") .replace("9", "𝟵"); } @DexAdd public static String slashLenny(String str) { return str.substring(6) + " ( ͡° ͜ʖ ͡°)"; } @DexAdd public static String slashLower(String str) { return str.substring(7).toLowerCase(); } @DexAdd public static String slashMe(String str) { String substring = str.substring(4); return "*" + substring + "*"; } @DexAdd public static String slashMorse(String str) { return str.substring(7).toUpperCase().replace(" ", "/ ") .replace(".", ".-.-.- ") .replace(",", "--..-- ") .replace(":", "---... ") .replace("?", "..--.. ") .replace("'", ".----. ") .replace("-", "-....- ") .replace("/", "-..-. ") .replace("@", ".--.-. ") .replace("=", "-...- ") .replace("A", ".- ") .replace("B", "-... ") .replace("C", "-.-. ") .replace("D", "-.. ") .replace("E", ". ") .replace("F", "..-. ") .replace("G", "--. ") .replace("H", ".... ") .replace("I", ".. ") .replace("J", ".--- ") .replace("K", "-.- ") .replace("L", ".-.. ") .replace("M", "-- ") .replace("N", "-. ") .replace("O", "--- ") .replace("P", ".--. ") .replace("Q", "--.- ") .replace("R", ".-. ") .replace("S", "... ") .replace("T", "- ") .replace("U", "..- ") .replace("V", "...- ") .replace("W", ".-- ") .replace("X", "-..- ") .replace("Y", "-.-- ") .replace("Z", "--.. ") .replace("0", "----- ") .replace("1", ".---- ") .replace("2", "..--- ") .replace("3", "...-- ") .replace("4", "....- ") .replace("5", "..... ") .replace("6", "-.... ") .replace("7", "--... ") .replace("8", "---.. ") .replace("9", "----. "); } @DexAdd public static String slashOwo(String str) { return str.substring(5).replaceAll("(?:r|l)", "w") .replaceAll("(?:R|L)", "W") .replaceAll("n([aeiou])", "ny$1") .replaceAll("N([aeiou])", "Ny$1") .replaceAll("N([AEIOU])", "NY$1") .replace("ove", "uv"); } @DexAdd public static String slashSmall(String str) { return str.substring(7).toLowerCase().replace("a", "ᴀ").replace("b", "ʙ").replace("c", "ᴄ").replace("d", "ᴅ").replace("e", "ᴇ").replace("f", "ꜰ").replace("g", "ɢ").replace("h", "ʜ").replace("i", "ɪ").replace("j", "ᴊ").replace("k", "ᴋ").replace("l", "ʟ").replace("m", "ᴍ").replace("n", "ɴ").replace("o", "ᴏ").replace("p", "ᴘ").replace("q", "ǫ").replace("r", "ʀ").replace("s", "s").replace("t", "ᴛ").replace("u", "ᴜ").replace("v", "ᴠ").replace("w", "ᴡ").replace("y", "ʏ").replace("z", "ᴢ"); } @DexAdd public static String slashSmaller(String str) { return str.substring(9).toLowerCase().replace("a", "ᵃ").replace("b", "ᵇ").replace("c", "ᶜ").replace("d", "ᵈ").replace("e", "ᵉ").replace("f", "ᶠ").replace("g", "ᵍ").replace("h", "ʰ").replace("i", "ᶦ").replace("j", "ʲ").replace("k", "ᵏ").replace("l", "ˡ").replace("m", "ᵐ").replace("n", "ⁿ").replace("o", "ᵒ").replace("p", "ᵖ").replace("q", "ᑫ").replace("r", "ʳ").replace("s", "ˢ").replace("t", "ᵗ").replace("u", "ᵘ").replace("v", "ᵛ").replace("w", "ʷ").replace("x", "ˣ").replace("y", "ʸ").replace("z", "ᶻ"); } @DexAdd public static String slashSpoiler(String str) { String substring = str.substring(9); return "||" + substring + "||"; } @DexAdd public static String slashSpoilerImg(String str) { String substring = str.substring(11); StoreStream.getUserSettings().setImageSpoiler(true); return substring; } @DexAdd public static String slashSt(String str) { String substring = str.substring(4); return "~~" + substring + "~~"; } @DexAdd public static String slashUpper(String str) { return str.substring(7).toUpperCase(); } }