53 lines
1.7 KiB
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();
|
|
}
|
|
}
|