From d6ccf25775d63d96fa76c75b3966aba120a6be39 Mon Sep 17 00:00:00 2001 From: Dmitry Isaenko Date: Sun, 1 Nov 2020 20:25:03 +0300 Subject: [PATCH] Fix bugs #2 --- .../ProvidersConsumers/StreamProvider.java | 7 ++- .../ProvidersConsumers/SystemConsumer.java | 48 +++++++++---------- 2 files changed, 27 insertions(+), 28 deletions(-) diff --git a/src/main/java/InnaIrcBot/ProvidersConsumers/StreamProvider.java b/src/main/java/InnaIrcBot/ProvidersConsumers/StreamProvider.java index b4217a1..904dbb4 100644 --- a/src/main/java/InnaIrcBot/ProvidersConsumers/StreamProvider.java +++ b/src/main/java/InnaIrcBot/ProvidersConsumers/StreamProvider.java @@ -12,12 +12,11 @@ public class StreamProvider { public static synchronized void writeToStream(String server, String message){ try { - if (message.matches("(^.+?\\s)INNA")) { - SystemConsumer.getSystemConsumer(server).add("INNA "+message); - return; - } srvStreamMap.get(server).write(message+"\n"); srvStreamMap.get(server).flush(); + if (message.startsWith("PRIVMSG")) { + SystemConsumer.getSystemConsumer(server).add("INNA "+message); + } } catch (IOException e){ System.out.println("Internal issue: StreamProvider->writeToStream() caused I/O exception:\n\t"+e.getMessage()); } diff --git a/src/main/java/InnaIrcBot/ProvidersConsumers/SystemConsumer.java b/src/main/java/InnaIrcBot/ProvidersConsumers/SystemConsumer.java index c9196b4..e39e71d 100644 --- a/src/main/java/InnaIrcBot/ProvidersConsumers/SystemConsumer.java +++ b/src/main/java/InnaIrcBot/ProvidersConsumers/SystemConsumer.java @@ -66,29 +66,30 @@ public class SystemConsumer implements Runnable{ String data = systemQueue.take(); String[] dataStrings = data.split(" :?",3); //TODO: handle mode change - switch (dataStrings[1]){ - case "PRIVMSG": - if (dataStrings[2].indexOf("\u0001") < dataStrings[2].lastIndexOf("\u0001")) { - String sender = simplifyNick(dataStrings[0]); - String message = dataStrings[2].substring(dataStrings[2].indexOf(":") + 1); - systemCTCP.replyCTCP(sender, message); + + if (dataStrings[0].equals("INNA")){ + String[] splitter; + if (dataStrings.length > 2){ // Don't touch 'cuz it's important + splitter = dataStrings[2].split(" ", 2); + if (splitter.length == 2){ + handleSpecial(dataStrings[1], splitter[0], splitter[1]); } - else { - commander.receiver(dataStrings[0], dataStrings[2].replaceAll("^.+?:", "").trim()); - writerWorker.log(dataStrings[1]+" "+dataStrings[0]+" :", dataStrings[2].replaceAll("^.+?:", "").trim()); - } - break; - case "INNA": - String[] splitter; - if (dataStrings.length > 2){ // Don't touch 'cuz it's important - splitter = dataStrings[2].split(" ", 2); - if (splitter.length == 2){ - handleSpecial(dataStrings[0], splitter[0], splitter[1]); - } - } - break; - default: - handleNumeric(dataStrings[0], dataStrings[1], dataStrings[2]); + } + continue; + } + if ("PRIVMSG".equals(dataStrings[1])) { + if (dataStrings[2].indexOf("\u0001") < dataStrings[2].lastIndexOf("\u0001")) { + String sender = simplifyNick(dataStrings[0]); + String message = dataStrings[2].substring(dataStrings[2].indexOf(":") + 1); + systemCTCP.replyCTCP(sender, message); + } + else { + commander.receiver(dataStrings[0], dataStrings[2].replaceAll("^.+?:", "").trim()); + writerWorker.log(dataStrings[1] + " " + dataStrings[0] + " :", dataStrings[2].replaceAll("^.+?:", "").trim()); + } + } + else { + handleNumeric(dataStrings[0], dataStrings[1], dataStrings[2]); } } } @@ -107,8 +108,7 @@ public class SystemConsumer implements Runnable{ IrcChannel ircChannel = channels.get(channelName); if (ircChannel == null) return; - String ircFormatterMessage = event+" "+nick+" "+channelName+" "+message; - + String ircFormatterMessage = nick+" "+event+" "+channelName+" "+message; ircChannel.getChannelQueue().add(ircFormatterMessage); } //todo: handle nickserv messages somehow