From 58fcd586a448de04a4163a090d9da4db753bfb5c Mon Sep 17 00:00:00 2001 From: ChomeNS <95471003+ChomeNS@users.noreply.github.com> Date: Thu, 10 Apr 2025 08:10:40 +0700 Subject: [PATCH] refactor: improve connection message suppressing in discord and logger i also saw nbot, fnf bot, and other bots copying the message, so i changed that too, hopefully no one skids it again --- build-number.txt | 2 +- .../java/me/chayapak1/chomens_bot/Bot.java | 9 +++++++++ .../chomens_bot/plugins/DiscordPlugin.java | 18 ++++-------------- .../chomens_bot/plugins/LoggerPlugin.java | 14 ++++---------- 4 files changed, 18 insertions(+), 25 deletions(-) diff --git a/build-number.txt b/build-number.txt index b2b5ccbf..925d7600 100644 --- a/build-number.txt +++ b/build-number.txt @@ -1 +1 @@ -2574 \ No newline at end of file +2576 \ No newline at end of file diff --git a/src/main/java/me/chayapak1/chomens_bot/Bot.java b/src/main/java/me/chayapak1/chomens_bot/Bot.java index 4fe7878e..2d2b3fb0 100644 --- a/src/main/java/me/chayapak1/chomens_bot/Bot.java +++ b/src/main/java/me/chayapak1/chomens_bot/Bot.java @@ -65,6 +65,9 @@ public class Bot extends SessionAdapter { public boolean printDisconnectedCause = false; + public int connectingTimes = 0; + public int disconnectedTimes = 0; + public boolean loggedIn = false; public long loginTime; @@ -180,6 +183,8 @@ public class Bot extends SessionAdapter { private void reconnect () { if (session != null) session = null; // does this do nothing? + connectingTimes++; + for (final Listener listener : listeners) { listener.connecting(); } @@ -241,6 +246,8 @@ public class Bot extends SessionAdapter { private void packetReceived (final ClientboundLoginPacket ignoredPacket) { loggedIn = true; loginTime = System.currentTimeMillis(); + connectingTimes = 0; + disconnectedTimes = 0; for (final SessionListener listener : listeners) { listener.connected(new ConnectedEvent(session)); @@ -359,6 +366,8 @@ public class Bot extends SessionAdapter { public void disconnected (final DisconnectedEvent disconnectedEvent) { loggedIn = false; + disconnectedTimes++; + final Throwable cause = disconnectedEvent.getCause(); if (printDisconnectedCause && cause != null) logger.error(cause); diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/DiscordPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/DiscordPlugin.java index c16e1704..f1ffaa9a 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/DiscordPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/DiscordPlugin.java @@ -46,8 +46,6 @@ public class DiscordPlugin extends ListenerAdapter { public final String discordUrl; - private final Map totalConnects = new HashMap<>(); - public DiscordPlugin (final Configuration config) { final Configuration.Discord options = config.discord; this.prefix = options.prefix; @@ -82,8 +80,6 @@ public class DiscordPlugin extends ListenerAdapter { bot.executor.scheduleAtFixedRate(() -> onDiscordTick(channelId), 0, 50, TimeUnit.MILLISECONDS); - totalConnects.put(channelId, 0); // is this necessary? - bot.addListener(new Bot.Listener() { @Override public void loadedPlugins (final Bot bot) { @@ -108,13 +104,9 @@ public class DiscordPlugin extends ListenerAdapter { @Override public void connecting () { - final int newTotalConnects = totalConnects.get(channelId) + 1; - - totalConnects.put(channelId, newTotalConnects); - - if (newTotalConnects > 6) return; - else if (newTotalConnects == 6) { - sendMessageInstantly("Suspending connecting and disconnect messages from now on", channelId); + if (bot.connectingTimes > 6) return; + else if (bot.connectingTimes == 6) { + sendMessageInstantly("Suppressing connection status messages from now on", channelId); return; } @@ -130,8 +122,6 @@ public class DiscordPlugin extends ListenerAdapter { @Override public void connected (final ConnectedEvent event) { - totalConnects.put(channelId, 0); - sendMessageInstantly( String.format( "Successfully connected to: `%s`", @@ -143,7 +133,7 @@ public class DiscordPlugin extends ListenerAdapter { @Override public void disconnected (final DisconnectedEvent event) { - if (totalConnects.get(channelId) >= 6) return; + if (bot.disconnectedTimes >= 6) return; final String reason = ComponentUtilities.stringifyDiscordAnsi(event.getReason()); sendMessageInstantly( diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/LoggerPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/LoggerPlugin.java index df0b3e25..3f866f66 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/LoggerPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/LoggerPlugin.java @@ -13,19 +13,15 @@ public class LoggerPlugin implements ChatPlugin.Listener { public boolean logToConsole = true; - private int totalConnects = 0; - public LoggerPlugin (final Bot bot) { this.bot = bot; bot.addListener(new Bot.Listener() { @Override public void connecting () { - totalConnects++; - - if (totalConnects > 20) return; - else if (totalConnects == 20) { - log("Suspending connecting and disconnect messages from now on"); + if (bot.connectingTimes > 10) return; + else if (bot.connectingTimes == 10) { + log("Suppressing connection status messages from now on"); return; } @@ -46,13 +42,11 @@ public class LoggerPlugin implements ChatPlugin.Listener { bot.getServerString(true) ) ); - - totalConnects = 0; } @Override public void disconnected (final DisconnectedEvent event) { - if (totalConnects >= 20) return; + if (bot.disconnectedTimes >= 10) return; final Component message = Component.translatable( "Disconnected from %s, reason: %s",