From 8f3313c7ea3dcedfb5973dae6a8172aeb3c09a26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Paul=20Gla=C3=9F?= Date: Sun, 4 Apr 2021 22:23:41 +0200 Subject: [PATCH 1/3] Fix a bit --- .../yoshibot/command/YoshiCommand.java | 17 ++++---- .../command/YoshiCommandDistributor.java | 6 ++- .../command/commands/JokeCommand.java | 41 ++++++++++++------- .../command/commands/WikipediaCommand.java | 36 ++++++++++++++++ .../yoshibot/utils/RestHelper.java | 4 +- .../yoshibot/utils/SauceProvider.java | 9 +--- 6 files changed, 82 insertions(+), 31 deletions(-) create mode 100644 app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/WikipediaCommand.java diff --git a/app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommand.java b/app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommand.java index aa192a4..b41ebac 100644 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommand.java +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommand.java @@ -4,6 +4,7 @@ import net.dv8tion.jda.api.entities.MessageEmbed; /** * Abstrakte Superklasse für alle Kommandos. + * * @author Yannic Link */ public abstract class YoshiCommand { @@ -17,8 +18,9 @@ public abstract class YoshiCommand { /** - * Erzeugt ein neues Kommando, führt es aber noch nicht aus. Es wird ermittelt, ob die Argumentenkombination - * valide ist und das isOk-Flag gesetzt. Im Fehlerfall wird eine Fehleremeldung spezifiziert. + * Erzeugt ein neues Kommando, führt es aber noch nicht aus. Es wird ermittelt, ob die Argumentenkombination valide + * ist und das isOk-Flag gesetzt. Im Fehlerfall wird eine Fehleremeldung spezifiziert. + * * @param context Der Kontext mit dem das Kommando aufgerufen wurde. */ public YoshiCommand(YoshiCommandContext context) { @@ -27,23 +29,24 @@ public abstract class YoshiCommand { /** * Führt das Kommando aus. + * * @return True, wenn Ausführung erfolgreich. False, wenn Ausführung fehlgeschlagen. Fehlermeldung wird in * errorMessage spezifiziert. */ public boolean execute() { - if(!context.containsArguments(requiredArguments)){ + if (!context.containsArguments(requiredArguments)) { sendMessage("Fehlende Argumente"); return false; } return true; } - protected void sendMessage(String message) { + protected final void sendMessage(String message) { context.getEvent().getTextChannel().sendMessage(message).queue(); } - - public void sendMessage(MessageEmbed messageEmbed){ + + protected final void sendMessage(MessageEmbed messageEmbed) { context.getEvent().getTextChannel().sendMessage(messageEmbed).queue(); } - + } diff --git a/app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommandDistributor.java b/app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommandDistributor.java index c8a8cd2..1103b69 100644 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommandDistributor.java +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommandDistributor.java @@ -59,6 +59,9 @@ public class YoshiCommandDistributor { case PAT: command = new PatCommand(context); break; + case WIKIPEDIA: + command = new WikipediaCommand(context); + break; default: context.getEvent().getTextChannel().sendMessage("Dieses Kommando existiert noch nicht.").queue(); break; @@ -104,7 +107,8 @@ public class YoshiCommandDistributor { */ DELETE, SAUCE, - PAT + PAT, + WIKIPEDIA } diff --git a/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/JokeCommand.java b/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/JokeCommand.java index f1c898a..80eb910 100644 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/JokeCommand.java +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/JokeCommand.java @@ -15,6 +15,7 @@ import static de.yannicpunktdee.yoshibot.utils.RestHelper.getFromURL; /** * Schickt einen zufälligen Jokus aus einer zufällig ausgewählten Quelle in den Textchannel. + * * @author Yannic Link */ public class JokeCommand extends YoshiCommand { @@ -29,31 +30,41 @@ public class JokeCommand extends YoshiCommand { /** * {@inheritDoc} */ - @Override public synchronized boolean execute() { + @Override + public synchronized boolean execute() { String message = "Jokus"; Random random = YoshiBot.getInstance().getRandom(); int number = random.nextInt(3); - switch(number) { - case 0: message = jokeApi(); break; - case 1: message = officialJokeApi(); break; - case 2: message = chuckNorris(); break; - default: message = "Jokus"; break; + switch (number) { + case 0: + message = jokeApi(); + break; + case 1: + message = officialJokeApi(); + break; + case 2: + message = chuckNorris(); + break; + default: + message = "Jokus"; + break; } - if(context.containsArguments(new String[] {"channel"})) { + if (context.containsArguments(new String[]{"channel"})) { String arg = context.getArgument("channel"); - if(arg == null) { + if (arg == null) { sendMessage("Es wurde kein channel angegeben."); return false; } - List channels = YoshiBot.getInstance().jda.getTextChannelsByName(context.getArgument("channel"), true); - if(channels.isEmpty()) { + List channels = YoshiBot.getInstance().jda + .getTextChannelsByName(context.getArgument("channel"), true); + if (channels.isEmpty()) { sendMessage("Der Kanalname konnte nicht gefunden werden."); return false; } channels.get(0).sendMessage(message).queue(); - }else { + } else { sendMessage(message); } return true; @@ -68,7 +79,7 @@ public class JokeCommand extends YoshiCommand { String raw = getFromURL(url); json = new JSONObject(raw); return json.getJSONObject("value").getString("joke"); - }catch(JSONException | IOException e) { + } catch (JSONException e) { return "Konnte keinen Jokus von \"" + url + "\" laden."; } } @@ -85,7 +96,7 @@ public class JokeCommand extends YoshiCommand { result += " - "; result += json.getString("punchline"); return result; - }catch(JSONException | IOException e) { + } catch (JSONException e) { return "Konnte keinen Jokus von \"" + url + "\" laden."; } } @@ -102,9 +113,9 @@ public class JokeCommand extends YoshiCommand { result += " - "; result += json.getString("delivery"); return result; - }catch(JSONException | IOException e) { + } catch (JSONException e) { return "Konnte keinen Jokus von \"" + url + "\" laden."; } } - + } diff --git a/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/WikipediaCommand.java b/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/WikipediaCommand.java new file mode 100644 index 0000000..6cf2ecc --- /dev/null +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/WikipediaCommand.java @@ -0,0 +1,36 @@ +package de.yannicpunktdee.yoshibot.command.commands; + +import com.sun.org.apache.xalan.internal.xsltc.compiler.util.Type; +import de.yannicpunktdee.yoshibot.command.YoshiCommand; +import de.yannicpunktdee.yoshibot.command.YoshiCommandContext; +import de.yannicpunktdee.yoshibot.utils.Logger; +import de.yannicpunktdee.yoshibot.utils.RestHelper; +import org.json.JSONObject; + +public class WikipediaCommand extends YoshiCommand { + /** + * Erzeugt ein neues Kommando, führt es aber noch nicht aus. Es wird ermittelt, ob die Argumentenkombination valide + * ist und das isOk-Flag gesetzt. Im Fehlerfall wird eine Fehleremeldung spezifiziert. + * + * @param context Der Kontext mit dem das Kommando aufgerufen wurde. + */ + public WikipediaCommand(YoshiCommandContext context) { + super(context); + } + + @Override + public boolean execute() { + if (!super.execute()) return false; + + String url = "https://de.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext" + + "&redirects&titles=" + context.getArgument("name"); + + JSONObject articleBase = new JSONObject(RestHelper.getFromURL(url)); + JSONObject pages = articleBase.getJSONObject("query").getJSONObject("pages"); + if (pages.has("-1")){ + sendMessage("Kein Artikel namens " + context.getArgument("name") + " gefunden!"); + Logger.log("Konnte Artikel " + context.getArgument("name") + " nicht finden!", Type.WARNING); + } + return true; + } +} diff --git a/app/src/main/java/de/yannicpunktdee/yoshibot/utils/RestHelper.java b/app/src/main/java/de/yannicpunktdee/yoshibot/utils/RestHelper.java index bfa2b85..87a8a65 100644 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/utils/RestHelper.java +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/utils/RestHelper.java @@ -1,5 +1,6 @@ package de.yannicpunktdee.yoshibot.utils; +import lombok.SneakyThrows; import org.apache.commons.lang3.StringEscapeUtils; import java.io.BufferedReader; @@ -10,7 +11,8 @@ import java.net.URL; public final class RestHelper { - public static String getFromURL(String url) throws IOException { + @SneakyThrows + public static String getFromURL(String url) { StringBuilder response = new StringBuilder(""); HttpURLConnection con = null; diff --git a/app/src/main/java/de/yannicpunktdee/yoshibot/utils/SauceProvider.java b/app/src/main/java/de/yannicpunktdee/yoshibot/utils/SauceProvider.java index e76affd..3709117 100644 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/utils/SauceProvider.java +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/utils/SauceProvider.java @@ -136,13 +136,8 @@ public class SauceProvider { } private static JSONObject getParsedSauceData(String url) { - String raw = null; - try { - raw = RestHelper.getFromURL(url); - } catch (IOException e) { - e.printStackTrace(); - } - return new JSONObject(Objects.requireNonNull(raw)); + String raw = RestHelper.getFromURL(url); + return new JSONObject(raw); } private static String tagsForRest(String tags) { From cbffa3beb1c23066cd2b78494484f5c698e36299 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Paul=20Gla=C3=9F?= Date: Mon, 5 Apr 2021 20:19:46 +0200 Subject: [PATCH 2/3] Wikipedia --- .../yoshibot/command/YoshiCommand.java | 43 +++++++++++++------ .../command/commands/PlayCommand.java | 3 -- .../yoshibot/command/commands/SayCommand.java | 11 +---- .../command/commands/WikipediaCommand.java | 23 ++++++++-- 4 files changed, 51 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommand.java b/app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommand.java index 59c27bd..5b2ccbc 100644 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommand.java +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommand.java @@ -1,10 +1,14 @@ package de.yannicpunktdee.yoshibot.command; +import de.yannicpunktdee.yoshibot.audio.AudioLoadResultHandlerImpl; +import de.yannicpunktdee.yoshibot.main.YoshiBot; import de.yannicpunktdee.yoshibot.utils.Logger; import de.yannicpunktdee.yoshibot.utils.Resources; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.Message.Attachment; import net.dv8tion.jda.api.entities.MessageEmbed; +import net.dv8tion.jda.api.entities.VoiceChannel; +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import java.io.File; import java.util.List; @@ -58,23 +62,23 @@ public abstract class YoshiCommand { protected final void sendMessage(MessageEmbed messageEmbed) { context.getEvent().getTextChannel().sendMessage(messageEmbed).queue(); } - - protected File downloadAttachmentToFile(String directoryPath, String name){ - if(directoryPath == null) directoryPath = Resources.getTempPath(); - if(name == null) name = UUID.randomUUID().toString(); - - if(!(new File(directoryPath)).isDirectory()){ + + protected File downloadAttachmentToFile(String directoryPath, String name) { + if (directoryPath == null) directoryPath = Resources.getTempPath(); + if (name == null) name = UUID.randomUUID().toString(); + + if (!(new File(directoryPath)).isDirectory()) { Logger.logError("Das Download-Verzeichnis wurde nicht gefunden."); sendMessage("Der Anhang konnte nicht gedownloaded werden."); return null; } - + List attachments = context.getEvent().getMessage().getAttachments(); - if(attachments.size() == 0){ + if (attachments.size() == 0) { return null; } Attachment attachment = attachments.get(0); - + File file = new File(directoryPath + name + "." + attachment.getFileExtension()); CompletableFuture future = attachment.downloadToFile(file); future.exceptionally(e -> { @@ -87,12 +91,27 @@ public abstract class YoshiCommand { sendMessage("Ein Anhang konnte nicht gedownloaded werden."); return null; } - if(!file.exists()) { + if (!file.exists()) { sendMessage("Ein Anhang konnte nicht gedownloaded werden."); return null; } - + return file; } - + + + public static boolean sayToChannel(String path, String channel, MessageReceivedEvent event) { + List channels = YoshiBot.getInstance().jda + .getVoiceChannelsByName(channel, true); + if (!(channels.size() > 0)) { + event.getTextChannel().sendMessage("Der Kanalname konnte nicht gefunden werden.").queue(); + return false; + } + VoiceChannel vc = channels.get(0); + + YoshiBot.getInstance().audioPlayerManager.loadItem(path, new AudioLoadResultHandlerImpl()); + vc.getGuild().getAudioManager().openAudioConnection(vc); + return true; + } + } diff --git a/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/PlayCommand.java b/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/PlayCommand.java index 3d4f2e7..ea72119 100644 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/PlayCommand.java +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/PlayCommand.java @@ -6,14 +6,11 @@ import de.yannicpunktdee.yoshibot.command.YoshiCommandContext; import de.yannicpunktdee.yoshibot.main.YoshiBot; import de.yannicpunktdee.yoshibot.utils.Resources; import net.dv8tion.jda.api.EmbedBuilder; -import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.VoiceChannel; import java.awt.*; import java.io.File; import java.util.List; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ExecutionException; public class PlayCommand extends YoshiCommand { diff --git a/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/SayCommand.java b/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/SayCommand.java index 3039846..52bb37b 100644 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/SayCommand.java +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/SayCommand.java @@ -68,16 +68,7 @@ public class SayCommand extends YoshiCommand { String path = buildTTSAudio(context.getArgument("text")); - List channels = YoshiBot.getInstance().jda - .getVoiceChannelsByName(context.getArgument("channel"), true); - if (!(channels.size() > 0)) { - context.getEvent().getTextChannel().sendMessage("Der Kanalname konnte nicht gefunden werden.").queue(); - return false; - } - VoiceChannel vc = channels.get(0); - - YoshiBot.getInstance().audioPlayerManager.loadItem(path, new AudioLoadResultHandlerImpl()); - vc.getGuild().getAudioManager().openAudioConnection(vc); + if (WikipediaCommand.sayToChannel(path, context.getArgument("channel"), context.getEvent())) return false; return false; } diff --git a/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/WikipediaCommand.java b/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/WikipediaCommand.java index 6cf2ecc..e2bd64c 100644 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/WikipediaCommand.java +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/WikipediaCommand.java @@ -1,12 +1,18 @@ package de.yannicpunktdee.yoshibot.command.commands; -import com.sun.org.apache.xalan.internal.xsltc.compiler.util.Type; +import de.yannicpunktdee.yoshibot.audio.AudioLoadResultHandlerImpl; import de.yannicpunktdee.yoshibot.command.YoshiCommand; import de.yannicpunktdee.yoshibot.command.YoshiCommandContext; +import de.yannicpunktdee.yoshibot.main.YoshiBot; import de.yannicpunktdee.yoshibot.utils.Logger; import de.yannicpunktdee.yoshibot.utils.RestHelper; +import net.dv8tion.jda.api.entities.VoiceChannel; +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import org.json.JSONObject; +import java.util.Arrays; +import java.util.List; + public class WikipediaCommand extends YoshiCommand { /** * Erzeugt ein neues Kommando, führt es aber noch nicht aus. Es wird ermittelt, ob die Argumentenkombination valide @@ -27,10 +33,19 @@ public class WikipediaCommand extends YoshiCommand { JSONObject articleBase = new JSONObject(RestHelper.getFromURL(url)); JSONObject pages = articleBase.getJSONObject("query").getJSONObject("pages"); - if (pages.has("-1")){ + if (pages.has("-1")) { sendMessage("Kein Artikel namens " + context.getArgument("name") + " gefunden!"); - Logger.log("Konnte Artikel " + context.getArgument("name") + " nicht finden!", Type.WARNING); + Logger.logWarning("Konnte Artikel " + context.getArgument("name") + " nicht finden!"); } - return true; + assert pages.keySet().stream().findFirst().isPresent(); + JSONObject page = pages.getJSONObject(pages.keySet().stream().findFirst().get()); + + String text = page.getString("extract"); + text = String.join(" ", Arrays.asList(text.split(" ")).subList(0, 50)); + + sendMessage(text); + + String path = SayCommand.buildTTSAudio(text); + return YoshiCommand.sayToChannel(path, context.getArgument("channel"), context.getEvent()); } } From 98654706a4538962d20e63b3981135b2ea9ac00a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Paul=20Gla=C3=9F?= Date: Mon, 5 Apr 2021 20:34:03 +0200 Subject: [PATCH 3/3] Wikipedia2 --- .../yoshibot/command/YoshiCommand.java | 42 ++++++++++++++++ .../yoshibot/command/commands/SayCommand.java | 48 ------------------- .../command/commands/WikipediaCommand.java | 12 ++--- .../listeners/DiscordEventListener.java | 6 +-- 4 files changed, 50 insertions(+), 58 deletions(-) diff --git a/app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommand.java b/app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommand.java index 5b2ccbc..151f5d7 100644 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommand.java +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommand.java @@ -1,6 +1,7 @@ package de.yannicpunktdee.yoshibot.command; import de.yannicpunktdee.yoshibot.audio.AudioLoadResultHandlerImpl; +import de.yannicpunktdee.yoshibot.command.commands.SayCommand; import de.yannicpunktdee.yoshibot.main.YoshiBot; import de.yannicpunktdee.yoshibot.utils.Logger; import de.yannicpunktdee.yoshibot.utils.Resources; @@ -10,7 +11,10 @@ import net.dv8tion.jda.api.entities.MessageEmbed; import net.dv8tion.jda.api.entities.VoiceChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; +import java.io.BufferedReader; import java.io.File; +import java.io.IOException; +import java.io.InputStreamReader; import java.util.List; import java.util.UUID; import java.util.concurrent.CompletableFuture; @@ -30,6 +34,8 @@ public abstract class YoshiCommand { */ protected YoshiCommandContext context; + public static String resourceToDelete = null; + /** * Erzeugt ein neues Kommando, führt es aber noch nicht aus. Es wird ermittelt, ob die Argumentenkombination valide @@ -41,6 +47,42 @@ public abstract class YoshiCommand { this.context = context; } + public static String buildTTSAudio(String text) { + String path = Resources.getPathToTempAudioFile(UUID.randomUUID().toString()); + + try { + ProcessBuilder pb = new ProcessBuilder( + "python3", + Resources.getTtsPath(), + "--text", + text, + "--lang", + "de", + "--out", + path); + + Process p = pb.start(); + BufferedReader errorReader = new BufferedReader(new InputStreamReader(p.getErrorStream())); + StringBuilder builder = new StringBuilder(); + String line; + while ((line = errorReader.readLine()) != null) { + builder.append(line).append("\n"); + } + if (builder.toString().length() > 0) { + Logger.logError(builder.toString()); + } + if (resourceToDelete != null) + synchronized (resourceToDelete) { + resourceToDelete = path; + } + } catch (IOException e) { + e.printStackTrace(); + return null; + } + + return path; + } + /** * Führt das Kommando aus. * diff --git a/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/SayCommand.java b/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/SayCommand.java index 52bb37b..253a903 100644 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/SayCommand.java +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/SayCommand.java @@ -1,22 +1,10 @@ package de.yannicpunktdee.yoshibot.command.commands; -import de.yannicpunktdee.yoshibot.audio.AudioLoadResultHandlerImpl; import de.yannicpunktdee.yoshibot.command.YoshiCommand; import de.yannicpunktdee.yoshibot.command.YoshiCommandContext; -import de.yannicpunktdee.yoshibot.main.YoshiBot; -import de.yannicpunktdee.yoshibot.utils.Logger; -import de.yannicpunktdee.yoshibot.utils.Resources; -import net.dv8tion.jda.api.entities.VoiceChannel; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.util.List; -import java.util.UUID; public class SayCommand extends YoshiCommand { - public static String resourceToDelete = null; protected final String[] requiredArguments = {"text", "channel"}; @@ -26,42 +14,6 @@ public class SayCommand extends YoshiCommand { super(context); } - public static String buildTTSAudio(String text) { - String path = Resources.getPathToTempAudioFile(UUID.randomUUID().toString()); - - try { - ProcessBuilder pb = new ProcessBuilder( - "python3", - Resources.getTtsPath(), - "--text", - text, - "--lang", - "de", - "--out", - path); - - Process p = pb.start(); - BufferedReader errorReader = new BufferedReader(new InputStreamReader(p.getErrorStream())); - StringBuilder builder = new StringBuilder(); - String line; - while ((line = errorReader.readLine()) != null) { - builder.append(line).append("\n"); - } - if (builder.toString().length() > 0) { - Logger.logError(builder.toString()); - } - if (resourceToDelete != null) - synchronized (resourceToDelete) { - resourceToDelete = path; - } - } catch (IOException e) { - e.printStackTrace(); - return null; - } - - return path; - } - @Override public boolean execute() { if (!super.execute()) return false; diff --git a/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/WikipediaCommand.java b/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/WikipediaCommand.java index e2bd64c..0161091 100644 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/WikipediaCommand.java +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/WikipediaCommand.java @@ -1,13 +1,9 @@ package de.yannicpunktdee.yoshibot.command.commands; -import de.yannicpunktdee.yoshibot.audio.AudioLoadResultHandlerImpl; import de.yannicpunktdee.yoshibot.command.YoshiCommand; import de.yannicpunktdee.yoshibot.command.YoshiCommandContext; -import de.yannicpunktdee.yoshibot.main.YoshiBot; import de.yannicpunktdee.yoshibot.utils.Logger; import de.yannicpunktdee.yoshibot.utils.RestHelper; -import net.dv8tion.jda.api.entities.VoiceChannel; -import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import org.json.JSONObject; import java.util.Arrays; @@ -41,11 +37,13 @@ public class WikipediaCommand extends YoshiCommand { JSONObject page = pages.getJSONObject(pages.keySet().stream().findFirst().get()); String text = page.getString("extract"); - text = String.join(" ", Arrays.asList(text.split(" ")).subList(0, 50)); - sendMessage(text); + sendMessage("Konvertiere Text mittels TTS..."); + List parts = Arrays.asList(text.split(" ")); + text = String.join(" ", parts.subList(0, Math.min(parts.size(), 50))); + - String path = SayCommand.buildTTSAudio(text); + String path = YoshiCommand.buildTTSAudio(text); return YoshiCommand.sayToChannel(path, context.getArgument("channel"), context.getEvent()); } } 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 b9b79e3..63e5ab7 100644 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/listeners/DiscordEventListener.java +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/listeners/DiscordEventListener.java @@ -1,8 +1,8 @@ package de.yannicpunktdee.yoshibot.listeners; +import de.yannicpunktdee.yoshibot.command.YoshiCommand; import de.yannicpunktdee.yoshibot.command.YoshiCommandContext; import de.yannicpunktdee.yoshibot.command.commands.PlayCommand; -import de.yannicpunktdee.yoshibot.command.commands.SayCommand; import de.yannicpunktdee.yoshibot.main.YoshiBot; import de.yannicpunktdee.yoshibot.utils.Resources; import net.dv8tion.jda.api.entities.ChannelType; @@ -57,7 +57,7 @@ public class DiscordEventListener extends ListenerAdapter { nameToPlay = nameToPlay == null ? event.getMember().getUser().getName() : nameToPlay; PlayCommand.play( - SayCommand.buildTTSAudio(Resources.getRandomGreeting(nameToPlay)), + YoshiCommand.buildTTSAudio(Resources.getRandomGreeting(nameToPlay)), event.getMember().getVoiceState().getChannel()); } @@ -73,7 +73,7 @@ public class DiscordEventListener extends ListenerAdapter { nameToPlay = nameToPlay == null ? event.getMember().getUser().getName() : nameToPlay; PlayCommand.play( - SayCommand.buildTTSAudio(Resources.getRandomByebye(nameToPlay)), + YoshiCommand.buildTTSAudio(Resources.getRandomByebye(nameToPlay)), event.getChannelLeft()); }