testing-bot/src/main/java/me/chayapak1/testingbot/Utilities.java

53 lines
1.7 KiB
Java

package me.chayapak1.testingbot;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.event.HoverEvent;
import net.kyori.adventure.text.format.NamedTextColor;
import java.io.PrintWriter;
import java.io.StringWriter;
// all in 1 class unlike ChomeNS Bot because laziness
public class Utilities {
public static Component getErrorComponent (Throwable e) {
final String stacktrace = getStacktraceString(e);
return Component
.text(e.getMessage() != null ? e.toString() : "Error")
.color(NamedTextColor.RED)
.hoverEvent(
HoverEvent.showText(
Component.text(stacktrace)
.color(NamedTextColor.RED)
)
);
}
public static String getStacktraceString (Throwable throwable) {
final StringWriter sw = new StringWriter();
final PrintWriter pw = new PrintWriter(sw, true);
throwable.printStackTrace(pw);
return sw.getBuffer().toString();
}
public static String stripIllegalCharacters (String string) {
final StringBuilder replaced = new StringBuilder();
for (char character : string.toCharArray()) {
if (
character == '\u007f' ||
// check if character is a control code, also space is the first character after
// the control characters so this is why we can do `character < ' '`
character < ' '
) continue;
if (character == '§') replaced.append('&');
else replaced.append(character);
}
return replaced.toString();
}
}