diff --git a/.gitignore b/.gitignore index 7a90bfa..ade51d6 100644 --- a/.gitignore +++ b/.gitignore @@ -192,5 +192,5 @@ gradle-app.setting .classpath -app/src/main/resources/* -!app/src/main/resources/.gitkeep \ No newline at end of file +rsc/* +!rsc/Ordnerstruktur.txt \ No newline at end of file diff --git a/README.md b/README.md index 7bba416..0d5b0ad 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,8 @@ Ein in Java geschriebener Discordbot, der lustige Sachen kann. ##Einrichtung -Ordner app/src/main/resources anlegen und darein die Config.properties anlegen. Diese sollte folgende Werte enthalten: +Ordner rsc wie in Ordnerstruktur.txt beschrieben strukturieren und 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 \ @@ -14,5 +15,6 @@ Ordner app/src/main/resources anlegen und darein die Config.properties anlegen. ##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 +in "app/build/libs". Füge dieser noch im selben Verzeichnis den rsc-Ordner mitsamt Inhalt hinzu. Für Pfadangaben in der +Config.properties achte darauf, dass diese Ordner auch existieren. +Starte die Applikation mit "java-jar app.jar". \ No newline at end of file diff --git a/app/src/main/java/de/yannicpunktdee/yoshibot/main/Main.java b/app/src/main/java/de/yannicpunktdee/yoshibot/main/Main.java index 4b4f12d..9ad15fd 100644 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/main/Main.java +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/main/Main.java @@ -1,5 +1,6 @@ package de.yannicpunktdee.yoshibot.main; +import java.io.File; import java.net.URISyntaxException; import javax.security.auth.login.LoginException; @@ -15,8 +16,6 @@ public class Main { * @throws URISyntaxException */ public static void main(String[] args) throws URISyntaxException { - System.out.println("Starte Applikation.\n"); - YoshiBot.init((args.length > 0)? args[0] : null); try { diff --git a/app/src/main/java/de/yannicpunktdee/yoshibot/main/Resources.java b/app/src/main/java/de/yannicpunktdee/yoshibot/main/Resources.java index 1e1fe2d..76d3068 100644 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/main/Resources.java +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/main/Resources.java @@ -1,12 +1,16 @@ package de.yannicpunktdee.yoshibot.main; +import de.yannicpunktdee.yoshibot.utils.Logger; +import de.yannicpunktdee.yoshibot.utils.Logger.Type; + import java.io.File; +import java.io.FileInputStream; import java.io.IOException; import java.util.Properties; public class Resources { - private static final String default_propertiesFilePath = "Config.properties"; + private static final String default_propertiesFilePath = "./rsc/Config.properties"; private static String propertiesFilePath = default_propertiesFilePath; private static Properties propertiesFile; @@ -19,45 +23,71 @@ public class Resources { private static String restrict_commands_to_channel = default_restrict_commands_to_channel; - public synchronized static void init(String pathToConfig) { - if(pathToConfig != null) propertiesFilePath = pathToConfig; - if(!(new File(propertiesFilePath)).exists()) propertiesFilePath = default_propertiesFilePath; - + public synchronized static boolean init(String pathToConfig) { + Logger.log("Lade Config.properties ...", Type.INFO); + + if(pathToConfig != null){ + if(!(new File(pathToConfig)).exists()){ + Logger.log("Der in den Argumenten angegebene Pfad zur Config.properties existiert nicht.", Type.ERROR); + return false; + } + propertiesFilePath = pathToConfig; + }else if(!(new File(propertiesFilePath)).exists()){ + Logger.log("Es wurde keine Config-Datei über den Pfad \"" + propertiesFilePath + "\" gefunden.", Type.ERROR); + return false; + } + propertiesFile = new Properties(); try { - propertiesFile.load(Resources.class.getClassLoader().getResourceAsStream(propertiesFilePath)); - System.out.println("Properties-Datei erfolgreich geladen."); + propertiesFile.load( + new FileInputStream(default_propertiesFilePath) + ); + Logger.log("Config-Datei erfolgreich geladen.", Type.INFO); } catch (IOException e) { - System.err.println("Es wurde keine Config-Datei gefunden. Benutze Standards."); - return; + Logger.log("Es ist ein Fehler beim Öffnen der Config.propeties aufgetreten.", Type.ERROR); + return false; } - initJdaBuilderString(); - initAudio(); - initChannelRestrict(); + boolean isOk = true; + if(isOk) isOk &= initJdaBuilderString(); + if(isOk) isOk &= initAudio(); + if(isOk) isOk &= initChannelRestrict(); + + if(isOk) Logger.log("Die Konfigurationen wurden erfolgreich geladen.", Type.INFO); + else Logger.log("Die Konfiguration konnte nicht geladen werden", Type.ERROR); + + return isOk; } - private static void initJdaBuilderString() { + private static boolean initJdaBuilderString() { if(!propertiesFile.containsKey("jda_builder_string")) { - System.err.println("Es wurde kein jda_builder_string gefunden."); - YoshiBot.stop(); - } else jda_builder_string = propertiesFile.getProperty("jda_builder_string"); + Logger.log("Die Config.properties benötigt das Attribut jda_builder_string.", Type.ERROR); + return false; + } + jda_builder_string = propertiesFile.getProperty("jda_builder_string"); + return true; } public static String getJdaBuilderString() { return jda_builder_string; } - private static void initAudio() { - if(!propertiesFile.containsKey("audio_source_directory")) return; + private static boolean initAudio() { + if(propertiesFile.containsKey("audio_source_directory")) { + audio_source_directory = propertiesFile.getProperty("audio_source_directory"); + }else{ + Logger.log("Die Config.properties spezifiziert kein audio_source_directory. Lade default.", Type.WARNING); + } - String dir = propertiesFile.getProperty("audio_source_directory"); - File file = new File(dir); + File file = new File(audio_source_directory); if(!file.exists() || !file.isDirectory()){ - System.err.println("Das Audio-Verzeichnis wurde nicht gefunden"); - return; + Logger.log("Das Audio-Verzeichnis wurde nicht gefunden.", Type.ERROR); + return false; } - audio_source_directory = dir; + if(file.listFiles().length < 1) + Logger.log("Das Audio-Verzeichnis ist leer.", Type.WARNING); + + return true; } public static String getAudioFilePath(String name) { name = audio_source_directory + (audio_source_directory.endsWith("/")? "" : "/") + name + ".opus"; @@ -68,9 +98,10 @@ public class Resources { return audio_source_directory; } - private static void initChannelRestrict() { + private static boolean initChannelRestrict() { if(propertiesFile.containsKey("restrict_commands_to_channel")) restrict_commands_to_channel = propertiesFile.getProperty("restrict_commands_to_channel"); + return true; } public static String getRestrictCommandsToChannel() { return restrict_commands_to_channel; diff --git a/app/src/main/java/de/yannicpunktdee/yoshibot/utils/Logger.java b/app/src/main/java/de/yannicpunktdee/yoshibot/utils/Logger.java new file mode 100644 index 0000000..4cb184d --- /dev/null +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/utils/Logger.java @@ -0,0 +1,21 @@ +package de.yannicpunktdee.yoshibot.utils; + +public class Logger { + + public static enum Type { + INFO, + WARNING, + ERROR + } + + + public static void log(String message, Type type){ + StringBuilder sb = new StringBuilder(); + sb.append("[Yoshi::"); + sb.append(((type == null)? Type.INFO : type).toString()); + sb.append("] "); + sb.append(message); + System.out.println(sb.toString()); + } + +} diff --git a/rsc/Ordnerstruktur.txt b/rsc/Ordnerstruktur.txt new file mode 100644 index 0000000..2cf89d3 --- /dev/null +++ b/rsc/Ordnerstruktur.txt @@ -0,0 +1,10 @@ +rsc + |-- .gitkeep + |-- Ordnerstruktur.txt + |-- Config.properties + |-- audio + |-- temp + |-- temp_1.opus + |-- temp_2.opus + |-- audio_1.opus + |-- audio_2.opus \ No newline at end of file