From 62a92f4d61bdd526c5bbb8e69881f2faa6aece93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Paul=20Gla=C3=9F?= Date: Mon, 6 Dec 2021 17:09:21 +0100 Subject: [PATCH] =?UTF-8?q?[Hier=20und=20da=20=C3=A4=20bissel]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listeners/DiscordEventListener.java | 18 +++++-------- .../yoshibot/utils/StatusProvider.java | 26 ++++++++++++++++--- rsc/.gitignore | 2 ++ 3 files changed, 31 insertions(+), 15 deletions(-) create mode 100644 rsc/.gitignore diff --git a/app/src/main/java/de/yannicpunktdee/yoshibot/listeners/DiscordEventListener.java b/app/src/main/java/de/yannicpunktdee/yoshibot/listeners/DiscordEventListener.java index a09beda..ab25219 100644 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/listeners/DiscordEventListener.java +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/listeners/DiscordEventListener.java @@ -49,24 +49,22 @@ public class DiscordEventListener extends ListenerAdapter { @Override public void onGuildVoiceJoin(@NotNull GuildVoiceJoinEvent event) { super.onGuildVoiceJoin(event); - if (event.getMember().getUser().isBot()) return; - if (!AudioPlayerListener.isPlayingTrack()) YoshiBot.getInstance().joinVoiceChannelWithMostMembers(); - if (Resources.isGreetings_and_byebyes_on()) { String nameToPlay = event.getMember().getNickname(); if (nameToPlay == null) nameToPlay = event.getMember().getUser().getName(); - YoshiBot.getInstance().sayTTS( - Resources.getRandomGreeting(nameToPlay), - event.getMember().getVoiceState().getChannel()); + YoshiBot.getInstance().sayTTS(Resources.getRandomGreeting(nameToPlay), event.getChannelJoined()); } + if (!AudioPlayerListener.isPlayingTrack()) YoshiBot.getInstance().joinVoiceChannelWithMostMembers(); + } @Override public void onGuildVoiceMove(@NotNull GuildVoiceMoveEvent event) { super.onGuildVoiceMove(event); + if (event.getMember().getUser().isBot()) return; VoiceChannel afkChannel = YoshiBot.getInstance().getGuild().getAfkChannel(); String nameToPlay = event.getMember().getNickname(); @@ -83,19 +81,15 @@ public class DiscordEventListener extends ListenerAdapter { @Override public void onGuildVoiceLeave(@NotNull GuildVoiceLeaveEvent event) { super.onGuildVoiceLeave(event); - if (event.getMember().getUser().isBot()) return; - if (!AudioPlayerListener.isPlayingTrack()) YoshiBot.getInstance().joinVoiceChannelWithMostMembers(); - if (Resources.isGreetings_and_byebyes_on()) { String nameToPlay = event.getMember().getNickname(); nameToPlay = nameToPlay == null ? event.getMember().getUser().getName() : nameToPlay; - YoshiBot.getInstance().sayTTS( - Resources.getRandomByebye(nameToPlay), - event.getChannelLeft()); + YoshiBot.getInstance().sayTTS(Resources.getRandomByebye(nameToPlay), event.getChannelLeft()); } + if (!AudioPlayerListener.isPlayingTrack()) YoshiBot.getInstance().joinVoiceChannelWithMostMembers(); } } diff --git a/app/src/main/java/de/yannicpunktdee/yoshibot/utils/StatusProvider.java b/app/src/main/java/de/yannicpunktdee/yoshibot/utils/StatusProvider.java index b353190..ce331aa 100644 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/utils/StatusProvider.java +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/utils/StatusProvider.java @@ -18,6 +18,8 @@ import java.util.*; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.stream.StreamSupport; @@ -46,7 +48,7 @@ public class StatusProvider implements Provider { this.desc = desc; this.message_id = messageId; this.serverPort = serverPort; - this.mcstatus.command(Resources.getPath_to_mcstatus(), Resources.getMc_server() + ":" + serverPort, "json"); + this.mcstatus.command(Resources.getPath_to_mcstatus(), Resources.getMc_server() + ":" + serverPort, "query"); File timeStampSave = new File(String.format("%s/%d.txt", Resources.getResourcePath(), serverPort)); timestampLastPlayerOnline = null; @@ -105,7 +107,25 @@ public class StatusProvider implements Provider { Map result = new HashMap<>(); - JSONObject obj = new JSONObject(output); + if (output.startsWith("The server did not respond to the query protocol.")){ + result.put("online", false); + return result; + } + + String part = output.split("players")[1].replace(",", "").replace("'", ""); + String[] players = part.substring(part.indexOf("[")+1, part.indexOf("]")).split(" "); + + String playerAmount = part.split(" ")[1]; + int playersOnline = Integer.parseInt(playerAmount.split("/")[0]); + int playersMax = Integer.parseInt(playerAmount.split("/")[1]); + + result.put("online", true); + result.put("playerCount", playersOnline); + result.put("playerMax", playersMax); + result.put("playerNames", Arrays.asList(players)); + + + /*JSONObject obj = new JSONObject(output); result.put("online", obj.getBoolean("online")); @@ -118,7 +138,7 @@ public class StatusProvider implements Provider { result.put("playerNames", StreamSupport.stream(obj.getJSONArray("players").spliterator(), false) .map(jsonobj -> ((JSONObject) jsonobj).getString("name")).sorted().collect( - Collectors.toList())); + Collectors.toList()));*/ return result; } diff --git a/rsc/.gitignore b/rsc/.gitignore new file mode 100644 index 0000000..9d0a8e7 --- /dev/null +++ b/rsc/.gitignore @@ -0,0 +1,2 @@ +255*.txt +mcstatus.sh