diff --git a/src/main/java/io/rixa/bot/Rixa.java b/src/main/java/io/rixa/bot/Rixa.java index b86ddda..0b6dd53 100644 --- a/src/main/java/io/rixa/bot/Rixa.java +++ b/src/main/java/io/rixa/bot/Rixa.java @@ -2,12 +2,12 @@ package io.rixa.bot; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; -import io.rixa.bot.commands.cmds.InfoCommand; -import io.rixa.bot.commands.cmds.PingCommand; -import io.rixa.bot.commands.cmds.ServerInfoCommand; +import io.rixa.bot.commands.cmds.general.InfoCommand; +import io.rixa.bot.commands.cmds.general.PingCommand; +import io.rixa.bot.commands.cmds.general.ServerInfoCommand; import io.rixa.bot.commands.handler.CommandHandler; import io.rixa.bot.commands.perms.RixaPermission; -import io.rixa.bot.commands.cmds.HelpCommand; +import io.rixa.bot.commands.cmds.general.HelpCommand; import io.rixa.bot.data.config.Configuration; import io.rixa.bot.data.storage.DatabaseAdapter; import io.rixa.bot.events.BotJoinListener; @@ -124,4 +124,8 @@ public class Rixa { public static Rixa getInstance() { return (instance == null) ? new Rixa() : instance; } + + public void close() { + shardList.forEach(JDA::shutdown); + } } \ No newline at end of file diff --git a/src/main/java/io/rixa/bot/commands/cmds/HelpCommand.java b/src/main/java/io/rixa/bot/commands/cmds/general/HelpCommand.java similarity index 98% rename from src/main/java/io/rixa/bot/commands/cmds/HelpCommand.java rename to src/main/java/io/rixa/bot/commands/cmds/general/HelpCommand.java index 82b5a4c..73d0e8d 100644 --- a/src/main/java/io/rixa/bot/commands/cmds/HelpCommand.java +++ b/src/main/java/io/rixa/bot/commands/cmds/general/HelpCommand.java @@ -1,4 +1,4 @@ -package io.rixa.bot.commands.cmds; +package io.rixa.bot.commands.cmds.general; import io.rixa.bot.commands.Command; import io.rixa.bot.commands.perms.RixaPermission; diff --git a/src/main/java/io/rixa/bot/commands/cmds/InfoCommand.java b/src/main/java/io/rixa/bot/commands/cmds/general/InfoCommand.java similarity index 99% rename from src/main/java/io/rixa/bot/commands/cmds/InfoCommand.java rename to src/main/java/io/rixa/bot/commands/cmds/general/InfoCommand.java index e3e4098..aab5a2e 100644 --- a/src/main/java/io/rixa/bot/commands/cmds/InfoCommand.java +++ b/src/main/java/io/rixa/bot/commands/cmds/general/InfoCommand.java @@ -1,4 +1,4 @@ -package io.rixa.bot.commands.cmds; +package io.rixa.bot.commands.cmds.general; import io.rixa.bot.Rixa; import io.rixa.bot.commands.Command; diff --git a/src/main/java/io/rixa/bot/commands/cmds/PingCommand.java b/src/main/java/io/rixa/bot/commands/cmds/general/PingCommand.java similarity index 93% rename from src/main/java/io/rixa/bot/commands/cmds/PingCommand.java rename to src/main/java/io/rixa/bot/commands/cmds/general/PingCommand.java index 3de3a2a..1af1d6f 100644 --- a/src/main/java/io/rixa/bot/commands/cmds/PingCommand.java +++ b/src/main/java/io/rixa/bot/commands/cmds/general/PingCommand.java @@ -1,4 +1,4 @@ -package io.rixa.bot.commands.cmds; +package io.rixa.bot.commands.cmds.general; import io.rixa.bot.commands.Command; import io.rixa.bot.commands.perms.RixaPermission; diff --git a/src/main/java/io/rixa/bot/commands/cmds/ServerInfoCommand.java b/src/main/java/io/rixa/bot/commands/cmds/general/ServerInfoCommand.java similarity index 98% rename from src/main/java/io/rixa/bot/commands/cmds/ServerInfoCommand.java rename to src/main/java/io/rixa/bot/commands/cmds/general/ServerInfoCommand.java index d374358..32af2c4 100644 --- a/src/main/java/io/rixa/bot/commands/cmds/ServerInfoCommand.java +++ b/src/main/java/io/rixa/bot/commands/cmds/general/ServerInfoCommand.java @@ -1,4 +1,4 @@ -package io.rixa.bot.commands.cmds; +package io.rixa.bot.commands.cmds.general; import io.rixa.bot.commands.Command; import io.rixa.bot.commands.perms.RixaPermission; @@ -38,4 +38,4 @@ public class ServerInfoCommand extends Command { .footer("Server Id: " + event.getGuild().getId(), event.getGuild().getIconUrl()) .queue(event.getChannel()); } -} +} \ No newline at end of file diff --git a/src/main/java/io/rixa/bot/commands/cmds/other/ShutdownCommand.java b/src/main/java/io/rixa/bot/commands/cmds/other/ShutdownCommand.java new file mode 100644 index 0000000..289101e --- /dev/null +++ b/src/main/java/io/rixa/bot/commands/cmds/other/ShutdownCommand.java @@ -0,0 +1,38 @@ +package io.rixa.bot.commands.cmds.other; + +import io.rixa.bot.Rixa; +import io.rixa.bot.commands.Command; +import io.rixa.bot.commands.perms.RixaPermission; +import io.rixa.bot.guild.RixaGuild; +import io.rixa.bot.guild.manager.GuildManager; +import io.rixa.bot.utils.MessageFactory; +import net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent; + +public class ShutdownCommand extends Command { + + public ShutdownCommand(String command, RixaPermission rixaPermission, String description) { + super(command, rixaPermission, description); + } + + @Override + public void execute(GuildMessageReceivedEvent event) { + if (!(Rixa.getInstance().getConfiguration().isBotAdmin(event.getAuthor().getId()))) { + new MessageFactory(event.getMember().getAsMention() + ", you do not have permission for this command.").setColor(event.getMember().getColor()).queue(event.getChannel()); + return; + } + try { + MessageFactory.create("Shutting down...").queue(event.getChannel()); + for (RixaGuild rixaGuild : GuildManager.getInstance().getGuilds().values()) { + Thread.sleep(50); + rixaGuild.save(); + } + Thread.sleep(500); + Rixa.getInstance().close(); + System.exit(0); + } catch (InterruptedException ex) { + ex.printStackTrace(); + } + + Rixa.getInstance().close(); + } +} diff --git a/src/main/java/io/rixa/bot/guild/manager/GuildManager.java b/src/main/java/io/rixa/bot/guild/manager/GuildManager.java index a588266..677e8ef 100644 --- a/src/main/java/io/rixa/bot/guild/manager/GuildManager.java +++ b/src/main/java/io/rixa/bot/guild/manager/GuildManager.java @@ -1,5 +1,6 @@ package io.rixa.bot.guild.manager; +import gnu.trove.map.TByteByteMap; import io.rixa.bot.data.storage.DatabaseAdapter; import io.rixa.bot.data.storage.enums.Statements; import io.rixa.bot.guild.RixaGuild; @@ -52,4 +53,8 @@ public class GuildManager { (Statements.INSERT_CORE.getStatement(), guild.getId(), guild.getName(), "Description not set.", "No Keywords Found "); } + + public Map getGuilds() { + return rixaGuildMap; + } }