From a7d4c7d711997fb3c7ade99c779cc540b5dcb9e6 Mon Sep 17 00:00:00 2001 From: anthorob Date: Fri, 10 Sep 2021 19:57:59 -0400 Subject: [PATCH] Changed settings class into a singleton and improved logging --- src/main/java/netneutrality/MusicBot.java | 16 ++++----- .../java/netneutrality/ThreadManager.java | 14 +++++--- .../netneutrality/command/CommandManager.java | 7 ++-- .../command/basic/HelpCommand.java | 2 +- .../command/specific/DatabaseCommand.java | 4 +-- .../command/specific/EvalMethod.java | 2 +- .../command/specific/TestCommand.java | 2 +- .../db/controllers/DBMessage.java | 2 +- .../netneutrality/handler/ConsoleHandler.java | 7 ++-- .../netneutrality/handler/LogHandler.java | 10 ++++-- .../handler/NewCommandListener.java | 2 +- .../netneutrality/http/server/WebApi.java | 9 +++-- .../netneutrality/music/MusicManager.java | 2 +- .../java/netneutrality/utils/Settings.java | 35 ++++++++++++------- .../netneutrality/utils/UserFunction.java | 2 +- src/main/resources/bot.config | 10 +++--- 16 files changed, 75 insertions(+), 51 deletions(-) diff --git a/src/main/java/netneutrality/MusicBot.java b/src/main/java/netneutrality/MusicBot.java index af727d1..5eaed0c 100644 --- a/src/main/java/netneutrality/MusicBot.java +++ b/src/main/java/netneutrality/MusicBot.java @@ -22,20 +22,18 @@ import javax.security.auth.login.LoginException; public class MusicBot { private static JDA jda; - public static Logger LOGGER = LoggerFactory.getLogger(MusicBot.class); + private final static Logger logger = LoggerFactory.getLogger(MusicBot.class); public static void main(String[] args) { System.setProperty("log4j.skipJansi", "false"); - Settings.init(); DBController.init(); try { - jda = JDABuilder.createDefault(Settings.TOKEN).build(); + jda = JDABuilder.createDefault(Settings.getInstance().getToken()).build(); jda.awaitReady(); - } catch (LoginException | IllegalArgumentException e) { - LogHandler.log(e); - } catch (InterruptedException e) { - LOGGER.error(e.getMessage()); + } catch (LoginException | IllegalArgumentException | InterruptedException e) { + logger.error(e.getMessage()); + shutdown(); } @@ -59,12 +57,12 @@ public class MusicBot { } public static void shutdown() { - LOGGER.info("[Net Neutrality] Shutting down..."); + logger.info("[Net Neutrality] Shutting down..."); MusicManager.disconnectPlayers(); ThreadManager.shutdownExecutor(); disconnect(); DBController.shutdown(); - LOGGER.info("[Net Neutrality] Shutdown complete"); + logger.info("[Net Neutrality] Shutdown complete"); System.exit(0); } diff --git a/src/main/java/netneutrality/ThreadManager.java b/src/main/java/netneutrality/ThreadManager.java index 379fcba..9d361e6 100644 --- a/src/main/java/netneutrality/ThreadManager.java +++ b/src/main/java/netneutrality/ThreadManager.java @@ -6,6 +6,9 @@ package netneutrality; * This file is closed-source. It should not be distributed or copied in any way or form */ +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; @@ -13,11 +16,12 @@ import java.util.concurrent.TimeUnit; public class ThreadManager { + private final static Logger logger = LoggerFactory.getLogger(ThreadManager.class); public static final ExecutorService executor = Executors.newSingleThreadExecutor(); public static ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(2); public static void shutdownExecutor() { - MusicBot.LOGGER.info("[Executor] Shutting down..."); + logger.info("[Executor] Shutting down..."); try { executor.shutdown(); @@ -26,22 +30,22 @@ public class ThreadManager { scheduler.awaitTermination(5, TimeUnit.SECONDS); } catch (InterruptedException e) { - MusicBot.LOGGER.warn("[Executor] Running tasks interrupted"); + logger.warn("[Executor] Running tasks interrupted"); } finally { if (!executor.isTerminated()) { - MusicBot.LOGGER.warn("[Executor] Forcing shutdown of running tasks.."); + logger.warn("[Executor] Forcing shutdown of running tasks.."); executor.shutdownNow(); } if (!scheduler.isTerminated()) { - MusicBot.LOGGER.warn("[Executor] Forcing shutdown of running tasks.."); + logger.warn("[Executor] Forcing shutdown of running tasks.."); scheduler.shutdownNow(); } } - MusicBot.LOGGER.info("[Executor] Shutdown finished!"); + logger.info("[Executor] Shutdown finished!"); } diff --git a/src/main/java/netneutrality/command/CommandManager.java b/src/main/java/netneutrality/command/CommandManager.java index 58aea94..d351f50 100644 --- a/src/main/java/netneutrality/command/CommandManager.java +++ b/src/main/java/netneutrality/command/CommandManager.java @@ -9,6 +9,8 @@ package netneutrality.command; import netneutrality.MusicBot; import org.reflections.Reflections; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Modifier; @@ -17,6 +19,7 @@ import java.util.Set; public class CommandManager { + private final static Logger logger = LoggerFactory.getLogger(CommandManager.class); public static HashMap commands = new HashMap<>(); public static HashMap commandsAlias = new HashMap<>(); @@ -26,7 +29,7 @@ public class CommandManager { } private static void initCommands() { - MusicBot.LOGGER.info("Loading commands.."); + logger.info("Loading commands.."); Reflections reflections = new Reflections("netneutrality.command"); Set> classes = reflections.getSubTypesOf(AbstractCommand.class); @@ -51,7 +54,7 @@ public class CommandManager { } } - MusicBot.LOGGER.info("Loaded " + commands.size() + " commands!"); + logger.info("Loaded " + commands.size() + " commands!"); } private static void initAlias() { diff --git a/src/main/java/netneutrality/command/basic/HelpCommand.java b/src/main/java/netneutrality/command/basic/HelpCommand.java index d0cbe00..4b6741b 100644 --- a/src/main/java/netneutrality/command/basic/HelpCommand.java +++ b/src/main/java/netneutrality/command/basic/HelpCommand.java @@ -73,7 +73,7 @@ public class HelpCommand extends AbstractCommand { AbstractCommand command = commands.get(key); if (command.isEnabled()) { - help.append(Settings.PREFIX).append(command.getCommand()); + help.append(Settings.getInstance().getPrefix()).append(command.getCommand()); if (command.getUsage() != null) help.append(" ").append(command.getUsage()); diff --git a/src/main/java/netneutrality/command/specific/DatabaseCommand.java b/src/main/java/netneutrality/command/specific/DatabaseCommand.java index de48d7b..775db24 100644 --- a/src/main/java/netneutrality/command/specific/DatabaseCommand.java +++ b/src/main/java/netneutrality/command/specific/DatabaseCommand.java @@ -59,7 +59,7 @@ public class DatabaseCommand extends AbstractCommand { //TODO: Clean up the mess event.getMessage().delete().queue(); - if (!event.getAuthor().getDiscriminator().equals(Settings.getCreator().getDiscriminator())) + if (!event.getAuthor().getDiscriminator().equals(Settings.getInstance().getCreator().getDiscriminator())) return null; if (countArgs(args) > 0) { @@ -74,7 +74,7 @@ public class DatabaseCommand extends AbstractCommand { EmbedBuilder embed = new EmbedBuilder(); embed.setColor(Color.BLUE); embed.setTimestamp( - DateTimeFormatter.ofPattern(Settings.DATETIMEFORMAT).parse(message.getDateSent())); + DateTimeFormatter.ofPattern(Settings.getInstance().DATETIMEFORMAT).parse(message.getDateSent())); embed.setFooter("Guild : " + message.getServerName() + " | ID : " + message.getMessageId(), null); embed.setDescription( "Message from " + message.getSender() + " on the channel " + message.getChannelName()); diff --git a/src/main/java/netneutrality/command/specific/EvalMethod.java b/src/main/java/netneutrality/command/specific/EvalMethod.java index 6708e35..3435c89 100644 --- a/src/main/java/netneutrality/command/specific/EvalMethod.java +++ b/src/main/java/netneutrality/command/specific/EvalMethod.java @@ -56,7 +56,7 @@ public class EvalMethod extends AbstractCommand { @Override public String execute(MessageReceivedEvent event, String args) { - if (event.getAuthor().getId().equals(Settings.getCreator().getId())) { + if (event.getAuthor().getId().equals(Settings.getInstance().getCreator().getId())) { ScriptEngine se = new ScriptEngineManager().getEngineByName("Nashorn"); try { se.eval("var imports = new JavaImporter(java.io, java.lang, java.util);"); diff --git a/src/main/java/netneutrality/command/specific/TestCommand.java b/src/main/java/netneutrality/command/specific/TestCommand.java index a4bbfc3..99c719e 100644 --- a/src/main/java/netneutrality/command/specific/TestCommand.java +++ b/src/main/java/netneutrality/command/specific/TestCommand.java @@ -55,7 +55,7 @@ public class TestCommand extends AbstractCommand { @Override public String execute(MessageReceivedEvent event, String args) { - if (event.getAuthor().getDiscriminator().equals(Settings.getCreator().getDiscriminator())) { + if (event.getAuthor().getDiscriminator().equals(Settings.getInstance().getCreator().getDiscriminator())) { MessageFunction.isStartingWithMention(event.getMessage()); } diff --git a/src/main/java/netneutrality/db/controllers/DBMessage.java b/src/main/java/netneutrality/db/controllers/DBMessage.java index 529d3d8..c0767bd 100644 --- a/src/main/java/netneutrality/db/controllers/DBMessage.java +++ b/src/main/java/netneutrality/db/controllers/DBMessage.java @@ -38,7 +38,7 @@ public class DBMessage extends AbstractController { String servername = guild.getName(); String channelname = channel.getName(); String username = author.getName(); - String datesent = message.getTimeCreated().format(DateTimeFormatter.ofPattern(Settings.DATETIMEFORMAT)); + String datesent = message.getTimeCreated().format(DateTimeFormatter.ofPattern(Settings.getInstance().DATETIMEFORMAT)); String messageid = message.getId(); String msg = message.getContentRaw().trim(); diff --git a/src/main/java/netneutrality/handler/ConsoleHandler.java b/src/main/java/netneutrality/handler/ConsoleHandler.java index 96490f9..3988453 100644 --- a/src/main/java/netneutrality/handler/ConsoleHandler.java +++ b/src/main/java/netneutrality/handler/ConsoleHandler.java @@ -1,6 +1,7 @@ package netneutrality.handler; -import netneutrality.MusicBot; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.BufferedReader; import java.io.IOException; @@ -8,9 +9,9 @@ import java.io.InputStreamReader; public class ConsoleHandler { - + private final static Logger logger = LoggerFactory.getLogger(ConsoleHandler.class); public ConsoleHandler() { - MusicBot.LOGGER.info("Console input ready!"); + logger.info("Console input ready!"); } public String init() { diff --git a/src/main/java/netneutrality/handler/LogHandler.java b/src/main/java/netneutrality/handler/LogHandler.java index e207e50..0e5911a 100644 --- a/src/main/java/netneutrality/handler/LogHandler.java +++ b/src/main/java/netneutrality/handler/LogHandler.java @@ -2,9 +2,13 @@ package netneutrality.handler; import netneutrality.MusicBot; import netneutrality.utils.Settings; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class LogHandler { + private final static Logger logger = LoggerFactory.getLogger(LogHandler.class); + /** * Log the exception to the owner's log TextChannel as defined in {@link Settings#getLogChannel()} * @@ -12,8 +16,10 @@ public class LogHandler { */ public static void log(Exception e) { - MusicBot.LOGGER.error(e.getMessage()); - Settings.getLogChannel().sendMessage("Error : " + e).queue(); + logger.error(e.getMessage()); + + //TODO: to remove or add check if jda is started + Settings.getInstance().getLogChannel().sendMessage("Error : " + e).queue(); } } diff --git a/src/main/java/netneutrality/handler/NewCommandListener.java b/src/main/java/netneutrality/handler/NewCommandListener.java index df0ae95..d049d54 100644 --- a/src/main/java/netneutrality/handler/NewCommandListener.java +++ b/src/main/java/netneutrality/handler/NewCommandListener.java @@ -37,7 +37,7 @@ public class NewCommandListener extends ListenerAdapter { Message message = event.getMessage(); String msg = message.getContentDisplay().trim(); - if (msg.startsWith(Settings.PREFIX)) { + if (msg.startsWith(Settings.getInstance().getPrefix())) { msg = msg.substring(1); String cmd = msg.split(" ", 2)[0]; diff --git a/src/main/java/netneutrality/http/server/WebApi.java b/src/main/java/netneutrality/http/server/WebApi.java index 6aa372a..a31130b 100644 --- a/src/main/java/netneutrality/http/server/WebApi.java +++ b/src/main/java/netneutrality/http/server/WebApi.java @@ -7,18 +7,21 @@ package netneutrality.http.server; */ import com.sun.net.httpserver.HttpServer; -import netneutrality.MusicBot; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.IOException; import java.net.InetSocketAddress; public class WebApi { + private final static Logger logger = LoggerFactory.getLogger(WebApi.class); + private int port = 9000; private HttpServer server; public WebApi() { - MusicBot.LOGGER.debug("Starting web server..."); + logger.debug("Starting web server..."); try { server = HttpServer.create(new InetSocketAddress(port), 0); } catch (IOException e) { @@ -28,7 +31,7 @@ public class WebApi { server.createContext("/guild", new GuildBrowser()); server.setExecutor(null); server.start(); - MusicBot.LOGGER.debug("Web server started at [" + server.getAddress().getAddress().toString() + "]"); + logger.debug("Web server started at [" + server.getAddress().getAddress().toString() + "]"); } diff --git a/src/main/java/netneutrality/music/MusicManager.java b/src/main/java/netneutrality/music/MusicManager.java index 82704eb..2420b02 100644 --- a/src/main/java/netneutrality/music/MusicManager.java +++ b/src/main/java/netneutrality/music/MusicManager.java @@ -75,7 +75,7 @@ public class MusicManager { leave(); }, 10, 10, TimeUnit.SECONDS); } else - MusicBot.LOGGER.error("Error connecting!"); + logger.error("Error connecting!"); } public boolean isConnected() { diff --git a/src/main/java/netneutrality/utils/Settings.java b/src/main/java/netneutrality/utils/Settings.java index 036ddbf..0e7d211 100644 --- a/src/main/java/netneutrality/utils/Settings.java +++ b/src/main/java/netneutrality/utils/Settings.java @@ -12,33 +12,42 @@ import java.util.Properties; public class Settings { - static Properties prop = new Properties(); - static String configFile = "bot.config"; + public static Settings INSTANCE; + private Properties prop = new Properties(); - public static void init() { + public Settings() { + String configFile = "bot.config"; InputStream is = Settings.class.getClassLoader().getResourceAsStream(configFile); - try (FileInputStream fis = new FileInputStream(configFile)) { - prop.load(fis); - } catch (IOException ignored) { - + try { + prop.load(is); + } catch (IOException e) { + e.printStackTrace(); } } - public static final String DATETIMEFORMAT = "yyyy-MM-dd HH:mm:ss"; - public static String PREFIX = prop.getProperty("bot.prefix"); - public static final String TOKEN = prop.getProperty("bot.token"); + public static Settings getInstance() { + if(INSTANCE == null) { + INSTANCE = new Settings(); + } - public static User getCreator() { + return INSTANCE; + } + + public final String DATETIMEFORMAT = "yyyy-MM-dd HH:mm:ss"; + public String getPrefix() { return prop.getProperty("bot.prefix"); } + public String getToken() { return prop.getProperty("bot.token"); } + + public User getCreator() { return MusicBot.getJDA().getUserById(prop.getProperty("bot.owner")); } - public static Guild getOwnerGuild() { + public Guild getOwnerGuild() { return MusicBot.getJDA().getGuildById(prop.getProperty("bot.ownerguild")); } - public static TextChannel getLogChannel() { + public TextChannel getLogChannel() { return MusicBot.getJDA().getTextChannelById(prop.getProperty("bot.errorchannel")); } diff --git a/src/main/java/netneutrality/utils/UserFunction.java b/src/main/java/netneutrality/utils/UserFunction.java index b86021b..5d46d3c 100644 --- a/src/main/java/netneutrality/utils/UserFunction.java +++ b/src/main/java/netneutrality/utils/UserFunction.java @@ -9,7 +9,7 @@ public class UserFunction { public static boolean isAdmin(Member user) { // This check will only be present during the development of the bot - if (user.getUser().getId().equals(Settings.getCreator().getId())) { + if (user.getUser().getId().equals(Settings.getInstance().getCreator().getId())) { return true; } diff --git a/src/main/resources/bot.config b/src/main/resources/bot.config index e2460e0..2d0eb74 100644 --- a/src/main/resources/bot.config +++ b/src/main/resources/bot.config @@ -1,5 +1,5 @@ -bot.token="" -bot.prefix="$" -bot.owner="" -bot.ownerguild="" -bot.errorchannel="" \ No newline at end of file +bot.token= +bot.prefix=$ +bot.owner= +bot.ownerguild= +bot.errorchannel= \ No newline at end of file