CTCV2/app/src/main/java/com/discord/stores/StoreMessages.java

481 lines
19 KiB
Java
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<MessageResult> sendMessage(long j,
ModelUser modelUser,
String message,
List<? extends ModelUser> list,
List<? extends Attachment<?>> list2,
List<ModelSticker> 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", "")
.replace("1", "")
.replace("2", "")
.replace("3", "")
.replace("4", "")
.replace("5", "")
.replace("6", "")
.replace("7", "")
.replace("8", "")
.replace("9", "")
.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("[", "")
.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("{", "")
.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();
}
}