Browse Source

Ja, hab ma singleton gemacht

paul
Paul Glaß 4 years ago
parent
commit
90b7dd1891
3 changed files with 39 additions and 25 deletions
  1. +4
    -2
      app/src/main/java/de/yannicpunktdee/yoshibot/main/Main.java
  2. +5
    -6
      app/src/main/java/de/yannicpunktdee/yoshibot/main/Resources.java
  3. +30
    -17
      app/src/main/java/de/yannicpunktdee/yoshibot/main/YoshiBot.java

+ 4
- 2
app/src/main/java/de/yannicpunktdee/yoshibot/main/Main.java View File

@ -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.");
}


+ 5
- 6
app/src/main/java/de/yannicpunktdee/yoshibot/main/Resources.java View File

@ -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);


+ 30
- 17
app/src/main/java/de/yannicpunktdee/yoshibot/main/YoshiBot.java View File

@ -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;
}
}

Loading…
Cancel
Save