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 9ad15fd..35dd85a 100644 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/main/Main.java +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/main/Main.java @@ -16,10 +16,12 @@ public class Main { * @throws URISyntaxException */ public static void main(String[] args) throws URISyntaxException { - YoshiBot.init((args.length > 0)? args[0] : null); + YoshiBot yoshiBot = YoshiBot.getInstance(); + + yoshiBot.init((args.length > 0)? args[0] : null); try { - YoshiBot.start(); + yoshiBot.start(); }catch(LoginException e) { System.err.println("Es ist ein Fehler beim Login aufgetreten."); } 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 76d3068..8c5b18d 100644 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/main/Resources.java +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/main/Resources.java @@ -10,7 +10,7 @@ import java.util.Properties; public class Resources { - private static final String default_propertiesFilePath = "./rsc/Config.properties"; + private static final String default_propertiesFilePath = "../rsc/Config.properties"; private static String propertiesFilePath = default_propertiesFilePath; private static Properties propertiesFile; @@ -40,7 +40,7 @@ public class Resources { propertiesFile = new Properties(); try { propertiesFile.load( - new FileInputStream(default_propertiesFilePath) + new FileInputStream(propertiesFilePath) ); Logger.log("Config-Datei erfolgreich geladen.", Type.INFO); } catch (IOException e) { @@ -48,10 +48,9 @@ public class Resources { return false; } - boolean isOk = true; - if(isOk) isOk &= initJdaBuilderString(); - if(isOk) isOk &= initAudio(); - if(isOk) isOk &= initChannelRestrict(); + boolean 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); diff --git a/app/src/main/java/de/yannicpunktdee/yoshibot/main/YoshiBot.java b/app/src/main/java/de/yannicpunktdee/yoshibot/main/YoshiBot.java index 02b983b..6f9fa26 100644 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/main/YoshiBot.java +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/main/YoshiBot.java @@ -18,45 +18,50 @@ import net.dv8tion.jda.api.OnlineStatus; import net.dv8tion.jda.api.entities.Activity; /** - * Repräsentiert einen Yoshi-Bot. Der Bot initialisiert alle Ressourcen und schaltet sich in der - * startYoshiBot-Methode online und beginnt dann zu lauschen. Parallel lauscht ein Thread auf - * Konsoleneingaben für administrative Zwecke, die nicht über den Chat erledigt werden sollten. + * Repräsentiert einen Yoshi-Bot. Der Bot initialisiert alle Ressourcen und schaltet sich in der startYoshiBot-Methode + * online und beginnt dann zu lauschen. Parallel lauscht ein Thread auf Konsoleneingaben für administrative Zwecke, die + * nicht über den Chat erledigt werden sollten. + * * @author Yannic Link */ -public class YoshiBot { +public class YoshiBot { - private static CommandLine commandLineThread; + private CommandLine commandLineThread; /** * Erlaubt es einige Einstellungen vor und nach der Erzeugung eines Bots vorzunehmen. */ - public static JDABuilder jdaBuilder; + public JDABuilder jdaBuilder; /** * Instanz vom aktuell laufenden Bot. */ - public static JDA jda; + public JDA jda; /** * LavaPlayer AudioPlayerManager. */ - public static AudioPlayerManager audioPlayerManager; + public AudioPlayerManager audioPlayerManager; - public static AudioControllerManager audioControllerManager; + public AudioControllerManager audioControllerManager; + private static YoshiBot instance = null; + + private YoshiBot() { + + } /** - * Initialisiert alle dynamisch hinzugefügten und statischen Ressourcen. Startet aber nicht - * den Bot selbst. + * Initialisiert alle dynamisch hinzugefügten und statischen Ressourcen. Startet aber nicht den Bot selbst. */ - public static void init(String configPath) { + public void init(String configPath) { Resources.init(configPath); } /** - * Startet den Bot und schaltet ihn online. Beginnt auf Konsoleneingaben für administrative - * Zwecke zu lauschen. + * Startet den Bot und schaltet ihn online. Beginnt auf Konsoleneingaben für administrative Zwecke zu lauschen. + * * @throws LoginException Falls das Token ungültig ist. */ - public static void start() throws LoginException { + public void start() throws LoginException { System.out.println("Starte YoshiBot."); jdaBuilder = JDABuilder.createDefault(Resources.getJdaBuilderString()); @@ -80,7 +85,7 @@ public class YoshiBot { commandLineThread.start(); } - public static synchronized void stop() { + public synchronized void stop() { commandLineThread.stopCommandLine(); System.out.println("Beende YoshiBot ..."); jdaBuilder.setStatus(OnlineStatus.OFFLINE); @@ -90,10 +95,18 @@ public class YoshiBot { /** * Leitet den Context an den CommandDistributor weiter. + * * @param command Der Kontext für das Kommando. */ public static void executeCommand(YoshiCommandContext command) { YoshiCommandDistributor.distribute(command); } - + + public static YoshiBot getInstance() { + if (YoshiBot.instance == null) { + YoshiBot.instance = new YoshiBot(); + } + return YoshiBot.instance; + } + }