diff --git a/README.md b/README.md index 2f6bb63..7bba416 100644 --- a/README.md +++ b/README.md @@ -7,5 +7,12 @@ Ein in Java geschriebener Discordbot, der lustige Sachen kann. Ordner app/src/main/resources anlegen und darein die Config.properties anlegen. Diese sollte folgende Werte enthalten: - jda_builder_string -> Client Secret -- audio_source_directory -> Verzeichnis, in dem die Audio-Dateien liegen, auch unter Windows mit / anstatt \ (dieses Verzeichnis sollte natürlich existieren) -- restrict_commands_to_channel -> Textkanalname, auf dem die Botkommandos empfangen werden \ No newline at end of file +- audio_source_directory -> Verzeichnis, in dem die Audio-Dateien liegen, auch unter Windows mit / anstatt \ + (dieses Verzeichnis sollte natürlich existieren) +- restrict_commands_to_channel -> Textkanalname, auf dem die Botkommandos empfangen werden + +##Export + +Zum Exportieren der Applikation führe den Befehl "gradlew clean build" im Root Verzeichnis aus. Die fertige Jar liegt +in "app/build/libs". Füge dieser noch die Config.properties hinzu und starte sie mit "java-jar app.jar" aus. Achte auch +hierbei darauf, dass der Audio-Datei-Pfad existiert. \ No newline at end of file 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 2022e3d..aa192a4 100644 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommand.java +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommand.java @@ -1,5 +1,7 @@ package de.yannicpunktdee.yoshibot.command; +import net.dv8tion.jda.api.entities.MessageEmbed; + /** * Abstrakte Superklasse für alle Kommandos. * @author Yannic Link @@ -40,4 +42,8 @@ public abstract class YoshiCommand { context.getEvent().getTextChannel().sendMessage(message).queue(); } + public 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 3d5743b..ee3b448 100644 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommandDistributor.java +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommandDistributor.java @@ -1,10 +1,6 @@ package de.yannicpunktdee.yoshibot.command; -import de.yannicpunktdee.yoshibot.command.commands.HelpCommand; -import de.yannicpunktdee.yoshibot.command.commands.JokeCommand; -import de.yannicpunktdee.yoshibot.command.commands.PlayCommand; -import de.yannicpunktdee.yoshibot.command.commands.SayCommand; -import de.yannicpunktdee.yoshibot.command.commands.StopCommand; +import de.yannicpunktdee.yoshibot.command.commands.*; /** * Unterscheidet nach der spezifizierten Action welche YoshiCommand-Kindklasse zum Ausführen des Kommandos @@ -49,6 +45,9 @@ public class YoshiCommandDistributor { case SAY: command = new SayCommand(context); break; + case LIST: + command = new ListCommand(context); + break; case PLAY: command = new PlayCommand(context); break; diff --git a/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/HelpCommand.java b/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/HelpCommand.java index 65f34d9..9afba30 100644 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/HelpCommand.java +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/HelpCommand.java @@ -2,6 +2,7 @@ package de.yannicpunktdee.yoshibot.command.commands; import de.yannicpunktdee.yoshibot.command.YoshiCommand; import de.yannicpunktdee.yoshibot.command.YoshiCommandContext; +import net.dv8tion.jda.api.EmbedBuilder; public class HelpCommand extends YoshiCommand { @@ -10,6 +11,23 @@ public class HelpCommand extends YoshiCommand { } @Override - public boolean execute() {return true;} + public boolean execute() { + if(!super.execute()) return false; + + EmbedBuilder eb = new EmbedBuilder(); + eb.setTitle("So kannst du den Yohsi-Bot benutzen:"); + eb.setDescription("Jeder Befehl startet mit \"::yoshi\" gefolgt von einer Aktion (folgend aufgelistet) und " + + "den Parametern. Jeder Parameter besitzt einen Namen, der mit einem Bindestrich \"-\" beginnt und optional " + + "danach einen Wert. Sollte der Wert Leerzeichen beinhalten muss dieser in doppelte Anf\u00fchrungszeichen " + + "gesetzt werden. Es gilt also die Form:\n ::yoshi aktion -param1Name param1Wert -param2Name \"param 2 Wert\"\n" + + "Folgende Befehle gibt es bereits:"); + eb.addField("help", "Zeigt genau diesen Hilfetext an.", false); + eb.addField("joke", "Schreibt einen random Jokus in den \u00fcber -channel angegebenen Textchannel.", false); + eb.addField("list", "Listet alle derzeit verf\u00fcgbaren Sounds auf.", false); + eb.addField("play", "Spielt den Sound mit dem Namen -name in dem Voicechannel -channel ab.", false); + sendMessage(eb.build()); + + return true; + } } diff --git a/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/ListCommand.java b/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/ListCommand.java new file mode 100644 index 0000000..58b5a8b --- /dev/null +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/ListCommand.java @@ -0,0 +1,41 @@ +package de.yannicpunktdee.yoshibot.command.commands; + +import de.yannicpunktdee.yoshibot.command.YoshiCommand; +import de.yannicpunktdee.yoshibot.command.YoshiCommandContext; +import de.yannicpunktdee.yoshibot.main.Resources; +import net.dv8tion.jda.api.EmbedBuilder; + +import java.awt.*; +import java.io.File; + +public class ListCommand extends YoshiCommand { + + public ListCommand(YoshiCommandContext context) { + super(context); + } + + @Override + public boolean execute() { + if(!super.execute()) return false; + + File audioDirectory = new File(Resources.getAudioSourceDirectory()); + if(!audioDirectory.exists()){ + sendMessage("Es existiert kein Audiodatei-Verzeichnis."); + return false; + } + StringBuilder sb = new StringBuilder(); + for(File f : audioDirectory.listFiles()){ + String fName = f.getName(); + if(!fName.endsWith(".opus")) continue; + sb.append(fName.substring(0, fName.lastIndexOf(".opus"))); + sb.append("\n"); + } + EmbedBuilder eb = new EmbedBuilder(); + eb.setTitle("Es sind folgende Audios verf\u00fcgbar:"); + eb.setColor(Color.blue); + eb.setDescription(sb.toString()); + sendMessage(eb.build()); + + return true; + } +}