diff --git a/src/main/java/buttondevteam/discordplugin/listeners/ExceptionListener.java b/src/main/java/buttondevteam/discordplugin/listeners/ExceptionListener.java index 2b5421e..4f33981 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/ExceptionListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/ExceptionListener.java @@ -1,6 +1,8 @@ package buttondevteam.discordplugin.listeners; +import java.util.ArrayList; import java.util.Arrays; +import java.util.List; import java.util.stream.Collectors; import org.apache.commons.lang.exception.ExceptionUtils; @@ -11,9 +13,23 @@ import buttondevteam.discordplugin.DiscordPlugin; import buttondevteam.lib.TBMCExceptionEvent; public class ExceptionListener implements Listener { + private List lastthrown = new ArrayList<>(); + private List lastsourcemsg = new ArrayList<>(); + @EventHandler public void onException(TBMCExceptionEvent e) { + if (lastthrown.stream() + .anyMatch(ex -> Arrays.equals(e.getException().getStackTrace(), ex.getStackTrace()) + && e.getException().getMessage().equals(ex.getMessage())) + && lastsourcemsg.contains(e.getSourceMessage())) + return; SendException(e.getException(), e.getSourceMessage()); + if (lastthrown.size() >= 10) + lastthrown.remove(0); + if (lastsourcemsg.size() >= 10) + lastsourcemsg.remove(0); + lastthrown.add(e.getException()); + lastsourcemsg.add(e.getSourceMessage()); e.setHandled(); }