From d9e9e372868e701f64dcb3047c536fc8499b45f7 Mon Sep 17 00:00:00 2001 From: Hammer86gn Date: Sun, 11 Jul 2021 18:33:55 -0400 Subject: [PATCH 01/10] CommandHandler refactoring --- Changes | 8 ++++++++ .../diamondfire/helpbot/bot/HelpBotInstance.java | 9 ++------- .../helpbot/bot/command/CommandHandler.java | 16 +++++++++++++--- .../command/executor/checks/DisabledCheck.java | 4 ++-- .../helpbot/bot/events/CommandEvent.java | 5 +++-- 5 files changed, 28 insertions(+), 14 deletions(-) create mode 100644 Changes diff --git a/Changes b/Changes new file mode 100644 index 00000000..a9e5d609 --- /dev/null +++ b/Changes @@ -0,0 +1,8 @@ +-= Doing / Done =- +CommandHandler Refactor + +-= Planned =- +Config refactor +Competing TODOS +Command Logging into file +CP Compare Command(?) \ No newline at end of file diff --git a/src/main/java/com/diamondfire/helpbot/bot/HelpBotInstance.java b/src/main/java/com/diamondfire/helpbot/bot/HelpBotInstance.java index 56ce7ee4..f02c2cbf 100644 --- a/src/main/java/com/diamondfire/helpbot/bot/HelpBotInstance.java +++ b/src/main/java/com/diamondfire/helpbot/bot/HelpBotInstance.java @@ -24,14 +24,13 @@ public class HelpBotInstance { private static final Config config = new Config(); public static final long DF_GUILD = config.getGuild(); public static final long LOG_CHANNEL = config.getLogChannel(); - private static final CommandHandler handler = new CommandHandler(); private static JDA jda; private static final TaskRegistry loop = new TaskRegistry(); public static void initialize() throws LoginException { - handler.register( + CommandHandler.getInstance().register( // codeblock commands new CodeCommand(), new RankCommand(), @@ -128,17 +127,13 @@ public static void initialize() throws LoginException { .addEventListeners(new MessageEvent(), new ReadyEvent(), new GuildJoinEvent(), new ButtonEvent()); jda = builder.build(); - handler.initialize(); + CommandHandler.getInstance().initialize(); } public static JDA getJda() { return jda; } - public static CommandHandler getHandler() { - return handler; - } - public static Config getConfig() { return config; } diff --git a/src/main/java/com/diamondfire/helpbot/bot/command/CommandHandler.java b/src/main/java/com/diamondfire/helpbot/bot/command/CommandHandler.java index 71b88060..f1b8db72 100644 --- a/src/main/java/com/diamondfire/helpbot/bot/command/CommandHandler.java +++ b/src/main/java/com/diamondfire/helpbot/bot/command/CommandHandler.java @@ -14,15 +14,21 @@ public class CommandHandler { private final HashMap ALIASES = new HashMap<>(); private final CommandExecutor COMMAND_EXECUTOR = new CommandExecutor(); private final DisableCommandHandler DISABLED_COMMAND_HANDLER = new DisableCommandHandler(); + + private static CommandHandler instance; + + private CommandHandler() { + instance = this; + } public void initialize() { DISABLED_COMMAND_HANDLER.initialize(); } public static Command getCommand(String name) { - Command cmd = HelpBotInstance.getHandler().getCommands().get(name.toLowerCase()); + Command cmd = CommandHandler.getInstance().getCommands().get(name.toLowerCase()); if (cmd == null) { - cmd = HelpBotInstance.getHandler().getAliases().get(name.toLowerCase()); + cmd = CommandHandler.getInstance().getAliases().get(name.toLowerCase()); } return cmd; @@ -53,4 +59,8 @@ public HashMap getAliases() { public DisableCommandHandler getDisabledHandler() { return DISABLED_COMMAND_HANDLER; } -} + + public static CommandHandler getInstance() { + return instance == null ? new CommandHandler() : instance; + } +} \ No newline at end of file diff --git a/src/main/java/com/diamondfire/helpbot/bot/command/executor/checks/DisabledCheck.java b/src/main/java/com/diamondfire/helpbot/bot/command/executor/checks/DisabledCheck.java index e72b5059..f0351920 100644 --- a/src/main/java/com/diamondfire/helpbot/bot/command/executor/checks/DisabledCheck.java +++ b/src/main/java/com/diamondfire/helpbot/bot/command/executor/checks/DisabledCheck.java @@ -1,15 +1,15 @@ package com.diamondfire.helpbot.bot.command.executor.checks; import com.diamondfire.helpbot.bot.HelpBotInstance; +import com.diamondfire.helpbot.bot.command.CommandHandler; import com.diamondfire.helpbot.bot.command.reply.PresetBuilder; import com.diamondfire.helpbot.bot.command.reply.feature.informative.*; import com.diamondfire.helpbot.bot.events.CommandEvent; public class DisabledCheck implements CommandCheck { - @Override public boolean check(CommandEvent event) { - return !HelpBotInstance.getHandler().getDisabledHandler().isDisabled(event.getCommand()); + return !CommandHandler.getInstance().getDisabledHandler().isDisabled(event.getCommand()); } @Override diff --git a/src/main/java/com/diamondfire/helpbot/bot/events/CommandEvent.java b/src/main/java/com/diamondfire/helpbot/bot/events/CommandEvent.java index de911cae..34a7a40f 100644 --- a/src/main/java/com/diamondfire/helpbot/bot/events/CommandEvent.java +++ b/src/main/java/com/diamondfire/helpbot/bot/events/CommandEvent.java @@ -1,6 +1,7 @@ package com.diamondfire.helpbot.bot.events; import com.diamondfire.helpbot.bot.HelpBotInstance; +import com.diamondfire.helpbot.bot.command.CommandHandler; import com.diamondfire.helpbot.bot.command.argument.impl.parsing.ParsedArgumentSet; import com.diamondfire.helpbot.bot.command.argument.impl.parsing.exceptions.ArgumentException; import com.diamondfire.helpbot.bot.command.argument.impl.parsing.parser.ArgumentParser; @@ -26,10 +27,10 @@ public CommandEvent(Message message) { String commandPrefix = rawArgs[0].substring(HelpBotInstance.getConfig().getPrefix().length()).toLowerCase(); - Command cmd = HelpBotInstance.getHandler().getCommands().get(commandPrefix.toLowerCase()); + Command cmd = CommandHandler.getInstance().getCommands().get(commandPrefix.toLowerCase()); if (cmd == null) { this.aliasedUsed = commandPrefix.toLowerCase(); - cmd = HelpBotInstance.getHandler().getAliases().get(commandPrefix.toLowerCase()); + cmd = CommandHandler.getInstance().getAliases().get(commandPrefix.toLowerCase()); } this.command = cmd; From f7bd329a384dd09343e791843c2a0524ea56dad3 Mon Sep 17 00:00:00 2001 From: Hammer86gn Date: Sun, 11 Jul 2021 18:48:48 -0400 Subject: [PATCH 02/10] did some TODOS --- Changes | 3 ++- .../command/impl/other/ChannelMuteCommand.java | 15 +++++++++++++-- .../helpbot/bot/events/CommandEvent.java | 3 ++- .../changelog/CodeDifferenceHandler.java | 2 -- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/Changes b/Changes index a9e5d609..e4cc6796 100644 --- a/Changes +++ b/Changes @@ -1,8 +1,9 @@ -= Doing / Done =- CommandHandler Refactor +Competing TODOS -= Planned =- Config refactor -Competing TODOS Command Logging into file +Permission System change CP Compare Command(?) \ No newline at end of file diff --git a/src/main/java/com/diamondfire/helpbot/bot/command/impl/other/ChannelMuteCommand.java b/src/main/java/com/diamondfire/helpbot/bot/command/impl/other/ChannelMuteCommand.java index b3866147..9fd41661 100644 --- a/src/main/java/com/diamondfire/helpbot/bot/command/impl/other/ChannelMuteCommand.java +++ b/src/main/java/com/diamondfire/helpbot/bot/command/impl/other/ChannelMuteCommand.java @@ -10,6 +10,8 @@ import com.diamondfire.helpbot.bot.command.reply.PresetBuilder; import com.diamondfire.helpbot.bot.command.reply.feature.informative.*; import com.diamondfire.helpbot.bot.events.CommandEvent; +import com.diamondfire.helpbot.sys.database.impl.DatabaseQuery; +import com.diamondfire.helpbot.sys.database.impl.queries.BasicQuery; import com.diamondfire.helpbot.sys.tasks.impl.MuteExpireTask; import com.diamondfire.helpbot.util.*; import net.dv8tion.jda.api.entities.*; @@ -65,8 +67,17 @@ public void run(CommandEvent event) { long timeLeft = duration.toInstant().minusSeconds(Instant.now().getEpochSecond()).toEpochMilli(); Date finalDuration = duration; event.getGuild().retrieveMemberById(user).queue((msg) -> { - //TODO Owen DBQuery - + event.getGuild().retrieveMemberById(user).queue((member) -> { + new DatabaseQuery() + .query(new BasicQuery("INSERT INTO owen.muted_members (member,muted_by,muted_at,muted_till,reason) VALUES (?,?,CURRENT_TIMESTAMP(),?,?)", (statement) -> { + statement.setLong(1, user); + statement.setLong(2, event.getAuthor().getIdLong()); + statement.setTimestamp(3, DateUtil.toTimeStamp(finalDuration)); + statement.setString(4, event.getArgument("reason")); + + })) + .compile(); + }); builder.withPreset( new InformativeReply(InformativeReplyType.SUCCESS, "Muted!", String.format("User will be muted for ``%s``.", FormatUtil.formatMilliTime(timeLeft))) diff --git a/src/main/java/com/diamondfire/helpbot/bot/events/CommandEvent.java b/src/main/java/com/diamondfire/helpbot/bot/events/CommandEvent.java index 34a7a40f..c0bf75d9 100644 --- a/src/main/java/com/diamondfire/helpbot/bot/events/CommandEvent.java +++ b/src/main/java/com/diamondfire/helpbot/bot/events/CommandEvent.java @@ -17,7 +17,8 @@ public class CommandEvent extends GuildMessageReceivedEvent { private final Command command; private final ReplyHandler replyHandler = new ReplyHandler(getChannel()); - //TODO Cleanup and refactor this. I'd like to see stuff like replying be put into it's whole own section and refactored as well. + //TODO Cleanup and refactor this. + // I'd like to see stuff like replying be put into it's whole own section and refactored as well. private ParsedArgumentSet parsedArgumentSet = null; private String aliasedUsed = null; diff --git a/src/main/java/com/diamondfire/helpbot/df/codeinfo/codedatabase/changelog/CodeDifferenceHandler.java b/src/main/java/com/diamondfire/helpbot/df/codeinfo/codedatabase/changelog/CodeDifferenceHandler.java index ab13c1cf..380d192a 100644 --- a/src/main/java/com/diamondfire/helpbot/df/codeinfo/codedatabase/changelog/CodeDifferenceHandler.java +++ b/src/main/java/com/diamondfire/helpbot/df/codeinfo/codedatabase/changelog/CodeDifferenceHandler.java @@ -43,14 +43,12 @@ private static void generateDifferences() throws IOException { txtReader.close(); JsonReader reader = new JsonReader(new StringReader(json)); - //reader.setLenient(true); BufferedReader txtReader2 = new BufferedReader(new FileReader(ExternalFiles.DB.getPath())); String json2 = txtReader2.lines().collect(Collectors.joining()); txtReader2.close(); JsonReader reader2 = new JsonReader(new StringReader(json2)); - //reader2.setLenient(true); JsonObject objectOld; try { From f4bdb9e7716b253ad8144917981ddad65bfc68a2 Mon Sep 17 00:00:00 2001 From: Hammer86gn Date: Sun, 11 Jul 2021 20:04:36 -0400 Subject: [PATCH 03/10] Started CpCompareCommand I have severe depression --- Changes | 2 +- .../helpbot/bot/HelpBotInstance.java | 6 +++ .../command/argument/impl/types/Argument.java | 10 ++-- .../types/MinecraftPlayerUUIDArgument.java | 43 +++++++++++++++ .../command/impl/stats/CpCompareCommand.java | 53 +++++++++++++++++++ 5 files changed, 110 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/diamondfire/helpbot/bot/command/argument/impl/types/MinecraftPlayerUUIDArgument.java create mode 100644 src/main/java/com/diamondfire/helpbot/bot/command/impl/stats/CpCompareCommand.java diff --git a/Changes b/Changes index e4cc6796..bc1b85c0 100644 --- a/Changes +++ b/Changes @@ -1,9 +1,9 @@ -= Doing / Done =- CommandHandler Refactor Competing TODOS +CP Compare Command -= Planned =- Config refactor Command Logging into file Permission System change -CP Compare Command(?) \ No newline at end of file diff --git a/src/main/java/com/diamondfire/helpbot/bot/HelpBotInstance.java b/src/main/java/com/diamondfire/helpbot/bot/HelpBotInstance.java index f02c2cbf..72a35bf7 100644 --- a/src/main/java/com/diamondfire/helpbot/bot/HelpBotInstance.java +++ b/src/main/java/com/diamondfire/helpbot/bot/HelpBotInstance.java @@ -16,6 +16,7 @@ import net.dv8tion.jda.api.requests.GatewayIntent; import net.dv8tion.jda.api.utils.MemberCachePolicy; import net.dv8tion.jda.api.utils.cache.CacheFlag; +import okhttp3.OkHttpClient; import javax.security.auth.login.LoginException; @@ -24,6 +25,7 @@ public class HelpBotInstance { private static final Config config = new Config(); public static final long DF_GUILD = config.getGuild(); public static final long LOG_CHANNEL = config.getLogChannel(); + public static final OkHttpClient HTTP_CLIENT = new OkHttpClient(); private static JDA jda; private static final TaskRegistry loop = new TaskRegistry(); @@ -134,6 +136,10 @@ public static JDA getJda() { return jda; } + public static OkHttpClient getHttpClient() { + return HTTP_CLIENT; + } + public static Config getConfig() { return config; } diff --git a/src/main/java/com/diamondfire/helpbot/bot/command/argument/impl/types/Argument.java b/src/main/java/com/diamondfire/helpbot/bot/command/argument/impl/types/Argument.java index a663106a..b6f671e4 100644 --- a/src/main/java/com/diamondfire/helpbot/bot/command/argument/impl/types/Argument.java +++ b/src/main/java/com/diamondfire/helpbot/bot/command/argument/impl/types/Argument.java @@ -6,11 +6,15 @@ import java.util.Deque; -// Arguments simply parse a given value and can remove it from the stack if they process it correctly. -// This means an argument can actually use more than one argument if they want! +/** + * Arguments simply parse a given value and can remove it from the stack if they process it correctly. + * This means an argument can actually use more than one argument if they want! + * + * @param parsed value type + */ public interface Argument { T parseValue(@NotNull Deque args) throws ArgumentException; } - \ No newline at end of file + diff --git a/src/main/java/com/diamondfire/helpbot/bot/command/argument/impl/types/MinecraftPlayerUUIDArgument.java b/src/main/java/com/diamondfire/helpbot/bot/command/argument/impl/types/MinecraftPlayerUUIDArgument.java new file mode 100644 index 00000000..d6aa463a --- /dev/null +++ b/src/main/java/com/diamondfire/helpbot/bot/command/argument/impl/types/MinecraftPlayerUUIDArgument.java @@ -0,0 +1,43 @@ +package com.diamondfire.helpbot.bot.command.argument.impl.types; + +import com.diamondfire.helpbot.bot.HelpBotInstance; +import com.diamondfire.helpbot.bot.command.argument.impl.parsing.exceptions.ArgumentException; +import com.google.gson.*; +import okhttp3.*; +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.util.UUID; + +public class MinecraftPlayerUUIDArgument extends AbstractSimpleValueArgument { + + @Override + protected UUID parse(@NotNull String argument) throws ArgumentException { + if (argument.contains("-") || argument.length() > 16) { + return UUID.fromString(argument); + } else { + JsonObject responseObject = null; + ResponseBody res = null; + Request request = new Request.Builder().url("https://api.mojang.com/users/profiles/minecraft/" + argument).get().build(); + try { + res = HelpBotInstance.getHttpClient().newCall(request).execute().body(); + } catch (IOException e) { + e.printStackTrace(); + } + + assert res != null; + try { + responseObject = JsonParser.parseString(res.string()).getAsJsonObject(); + } catch (IOException e) { + e.printStackTrace(); + } + assert responseObject != null; + + if (responseObject.has("id")) { + return UUID.fromString(responseObject.get("id").getAsString()); + } else { + return null; + } + } + } +} diff --git a/src/main/java/com/diamondfire/helpbot/bot/command/impl/stats/CpCompareCommand.java b/src/main/java/com/diamondfire/helpbot/bot/command/impl/stats/CpCompareCommand.java new file mode 100644 index 00000000..ffbd29ac --- /dev/null +++ b/src/main/java/com/diamondfire/helpbot/bot/command/impl/stats/CpCompareCommand.java @@ -0,0 +1,53 @@ +package com.diamondfire.helpbot.bot.command.impl.stats; + +import com.diamondfire.helpbot.bot.command.argument.ArgumentSet; +import com.diamondfire.helpbot.bot.command.argument.impl.types.*; +import com.diamondfire.helpbot.bot.command.help.*; +import com.diamondfire.helpbot.bot.command.impl.Command; +import com.diamondfire.helpbot.bot.command.permissions.Permission; +import com.diamondfire.helpbot.bot.events.CommandEvent; +import com.diamondfire.helpbot.sys.database.impl.DatabaseQuery; +import com.diamondfire.helpbot.sys.database.impl.queries.BasicQuery; +import com.diamondfire.helpbot.sys.database.impl.result.DatabaseResult; + +import java.util.UUID; + +public class CpCompareCommand extends Command { + + @Override + public String getName() { + return "cpcompare"; + } + + @Override + public HelpContext getHelpContext() { + return new HelpContext().addArgument(new HelpContextArgument().name("Player to compare"), + new HelpContextArgument().name("Comparing player")).category(CommandCategory.PLAYER_STATS).description("Compare the creator points of two players"); + } + + @Override + protected ArgumentSet compileArguments() { + return new ArgumentSet().addArgument("player",new MinecraftPlayerUUIDArgument()) + .addArgument("player1",new MinecraftPlayerUUIDArgument()); + } + + @Override + public Permission getPermission() { + return Permission.USER; + } + + @Override + public void run(CommandEvent event) { + UUID player = event.getArgument("player"); + UUID player1 = event.getArgument("player1"); + + long playerCP; + long player1CP; + + DatabaseResult res = new DatabaseQuery() + .query(new BasicQuery("SELECT * FROM owen.creator_rankings_log WHERE uuid = ? ORDER BY points DESC LIMIT 1",(statement) -> statement.setString(1,player.toString()))) + .compile().get(); + res.getResult(). + + } +} From b51019fa4446d6cff427a8ae9e7965039b20533d Mon Sep 17 00:00:00 2001 From: Hammer86gn Date: Mon, 12 Jul 2021 01:31:31 -0400 Subject: [PATCH 04/10] Nope --- .../command/impl/stats/CpCompareCommand.java | 53 ------------------- 1 file changed, 53 deletions(-) delete mode 100644 src/main/java/com/diamondfire/helpbot/bot/command/impl/stats/CpCompareCommand.java diff --git a/src/main/java/com/diamondfire/helpbot/bot/command/impl/stats/CpCompareCommand.java b/src/main/java/com/diamondfire/helpbot/bot/command/impl/stats/CpCompareCommand.java deleted file mode 100644 index ffbd29ac..00000000 --- a/src/main/java/com/diamondfire/helpbot/bot/command/impl/stats/CpCompareCommand.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.diamondfire.helpbot.bot.command.impl.stats; - -import com.diamondfire.helpbot.bot.command.argument.ArgumentSet; -import com.diamondfire.helpbot.bot.command.argument.impl.types.*; -import com.diamondfire.helpbot.bot.command.help.*; -import com.diamondfire.helpbot.bot.command.impl.Command; -import com.diamondfire.helpbot.bot.command.permissions.Permission; -import com.diamondfire.helpbot.bot.events.CommandEvent; -import com.diamondfire.helpbot.sys.database.impl.DatabaseQuery; -import com.diamondfire.helpbot.sys.database.impl.queries.BasicQuery; -import com.diamondfire.helpbot.sys.database.impl.result.DatabaseResult; - -import java.util.UUID; - -public class CpCompareCommand extends Command { - - @Override - public String getName() { - return "cpcompare"; - } - - @Override - public HelpContext getHelpContext() { - return new HelpContext().addArgument(new HelpContextArgument().name("Player to compare"), - new HelpContextArgument().name("Comparing player")).category(CommandCategory.PLAYER_STATS).description("Compare the creator points of two players"); - } - - @Override - protected ArgumentSet compileArguments() { - return new ArgumentSet().addArgument("player",new MinecraftPlayerUUIDArgument()) - .addArgument("player1",new MinecraftPlayerUUIDArgument()); - } - - @Override - public Permission getPermission() { - return Permission.USER; - } - - @Override - public void run(CommandEvent event) { - UUID player = event.getArgument("player"); - UUID player1 = event.getArgument("player1"); - - long playerCP; - long player1CP; - - DatabaseResult res = new DatabaseQuery() - .query(new BasicQuery("SELECT * FROM owen.creator_rankings_log WHERE uuid = ? ORDER BY points DESC LIMIT 1",(statement) -> statement.setString(1,player.toString()))) - .compile().get(); - res.getResult(). - - } -} From c49b381946e5d1dfcd3a1dde4c8808ffa21a04b7 Mon Sep 17 00:00:00 2001 From: Hammer86gn Date: Mon, 12 Jul 2021 01:52:53 -0400 Subject: [PATCH 05/10] CleanUp Done --- Changes | 4 -- .../changelog/CodeDifferenceHandler.java | 72 ++++++++++--------- 2 files changed, 40 insertions(+), 36 deletions(-) diff --git a/Changes b/Changes index bc1b85c0..e955eca6 100644 --- a/Changes +++ b/Changes @@ -1,9 +1,5 @@ -= Doing / Done =- CommandHandler Refactor Competing TODOS -CP Compare Command -= Planned =- -Config refactor -Command Logging into file -Permission System change diff --git a/src/main/java/com/diamondfire/helpbot/df/codeinfo/codedatabase/changelog/CodeDifferenceHandler.java b/src/main/java/com/diamondfire/helpbot/df/codeinfo/codedatabase/changelog/CodeDifferenceHandler.java index 380d192a..956c1ee2 100644 --- a/src/main/java/com/diamondfire/helpbot/df/codeinfo/codedatabase/changelog/CodeDifferenceHandler.java +++ b/src/main/java/com/diamondfire/helpbot/df/codeinfo/codedatabase/changelog/CodeDifferenceHandler.java @@ -11,8 +11,6 @@ public class CodeDifferenceHandler { - //TODO Cleanup - static StringBuilder differences = new StringBuilder(); static ArrayList differs = new ArrayList<>(); @@ -39,39 +37,17 @@ public static void setComparer(File toCompare) { private static void generateDifferences() throws IOException { BufferedReader txtReader = new BufferedReader(new FileReader(ExternalFiles.DB_COMPARE.getPath())); - String json = txtReader.lines().collect(Collectors.joining()); - txtReader.close(); - - JsonReader reader = new JsonReader(new StringReader(json)); - BufferedReader txtReader2 = new BufferedReader(new FileReader(ExternalFiles.DB.getPath())); - String json2 = txtReader2.lines().collect(Collectors.joining()); - txtReader2.close(); - - JsonReader reader2 = new JsonReader(new StringReader(json2)); - - JsonObject objectOld; - try { - objectOld = JsonParser.parseReader(reader).getAsJsonObject(); - } catch (Exception e) { - System.out.println("Old db is corrupted, rewriting!"); - Files.copy(ExternalFiles.DB.toPath(), ExternalFiles.DB_COMPARE.toPath(), StandardCopyOption.REPLACE_EXISTING); - return; - } - // Setup the reader to prevent parsing problems. - - JsonObject object = JsonParser.parseReader(reader2).getAsJsonObject(); - - // object is new - // object old is old instance + List jsonObjects = readDiff(txtReader,txtReader2); - compare(object.get("codeblocks").getAsJsonArray(), objectOld.get("codeblocks").getAsJsonArray(), "name"); - compare(object.get("actions").getAsJsonArray(), objectOld.get("actions").getAsJsonArray(), "name"); - compare(object.get("gameValues").getAsJsonArray(), objectOld.get("gameValues").getAsJsonArray(), "name"); - compare(object.get("particles").getAsJsonArray(), objectOld.get("particles").getAsJsonArray(), "particle"); - compare(object.get("potions").getAsJsonArray(), objectOld.get("potions").getAsJsonArray(), "potion"); - compare(object.get("sounds").getAsJsonArray(), objectOld.get("sounds").getAsJsonArray(), "sound"); + //Clean up here maybe possible but it isn't that bad + compare(jsonObjects.get(0).get("codeblocks").getAsJsonArray(), jsonObjects.get(1).get("codeblocks").getAsJsonArray(), "name"); + compare(jsonObjects.get(0).get("actions").getAsJsonArray(), jsonObjects.get(1).get("actions").getAsJsonArray(), "name"); + compare(jsonObjects.get(0).get("gameValues").getAsJsonArray(), jsonObjects.get(1).get("gameValues").getAsJsonArray(), "name"); + compare(jsonObjects.get(0).get("particles").getAsJsonArray(), jsonObjects.get(1).get("particles").getAsJsonArray(), "particle"); + compare(jsonObjects.get(0).get("potions").getAsJsonArray(), jsonObjects.get(1).get("potions").getAsJsonArray(), "potion"); + compare(jsonObjects.get(0).get("sounds").getAsJsonArray(), jsonObjects.get(1).get("sounds").getAsJsonArray(), "sound"); if (differs.size() >= 20) { differences.append(String.format("\n+ %s Modifications...", differs.size())); } else { @@ -134,6 +110,38 @@ private static void compare(JsonArray array, JsonArray oldArray, String keyName) e.printStackTrace(); } } + + /** + * Does stuff with readers to parse old and new JSON data + * + * @param readers - readers being parsed + * @return parsed JsonObjects + * @throws IOException {@link BufferedReader#close()} + */ + private static List readDiff(BufferedReader... readers) throws IOException { + List jsonObjects = new ArrayList<>(); + + for (BufferedReader reader : readers) { + String rawJson = reader.lines().collect(Collectors.joining()); + reader.close(); + + JsonReader readerJson = new JsonReader(new StringReader(rawJson)); + + JsonObject jsonObject = null; + try { + jsonObject = JsonParser.parseReader(readerJson).getAsJsonObject(); + } catch (Exception e) { + System.out.println("Old db is corrupted, rewriting!"); + Files.copy(ExternalFiles.DB.toPath(), ExternalFiles.DB_COMPARE.toPath(), StandardCopyOption.REPLACE_EXISTING); + } + + assert jsonObject != null; + jsonObjects.add(jsonObject); + } + + + return jsonObjects; + } } From 5adc3ceb67ee58da2a293f9f92b903029a76a8d2 Mon Sep 17 00:00:00 2001 From: Hammer86gn Date: Mon, 12 Jul 2021 01:57:15 -0400 Subject: [PATCH 06/10] Code ready for fork this will prob be denied --- Changes | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 Changes diff --git a/Changes b/Changes deleted file mode 100644 index e955eca6..00000000 --- a/Changes +++ /dev/null @@ -1,5 +0,0 @@ --= Doing / Done =- -CommandHandler Refactor -Competing TODOS - --= Planned =- From 14fcb7a5dd2ebe371d8f005cc97ff4ea86ea6077 Mon Sep 17 00:00:00 2001 From: Hammer86gn Date: Mon, 12 Jul 2021 02:01:34 -0400 Subject: [PATCH 07/10] Fixed Issue with CommandHandler --- .../helpbot/bot/command/impl/other/HelpCommand.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/diamondfire/helpbot/bot/command/impl/other/HelpCommand.java b/src/main/java/com/diamondfire/helpbot/bot/command/impl/other/HelpCommand.java index de17f3c6..63df0137 100644 --- a/src/main/java/com/diamondfire/helpbot/bot/command/impl/other/HelpCommand.java +++ b/src/main/java/com/diamondfire/helpbot/bot/command/impl/other/HelpCommand.java @@ -1,6 +1,7 @@ package com.diamondfire.helpbot.bot.command.impl.other; import com.diamondfire.helpbot.bot.HelpBotInstance; +import com.diamondfire.helpbot.bot.command.CommandHandler; import com.diamondfire.helpbot.bot.command.argument.ArgumentSet; import com.diamondfire.helpbot.bot.command.argument.impl.parsing.types.SingleArgumentContainer; import com.diamondfire.helpbot.bot.command.argument.impl.types.DefinedObjectArgument; @@ -42,7 +43,7 @@ public boolean cacheArgumentSet() { @Override public ArgumentSet compileArguments() { return new ArgumentSet().addArgument("help", - new SingleArgumentContainer<>(new DefinedObjectArgument<>(HelpBotInstance.getHandler().getCommands().values().stream() + new SingleArgumentContainer<>(new DefinedObjectArgument<>(CommandHandler.getInstance().getCommands().values().stream() .map(Command::getName) .toArray(String[]::new))).optional(null)); } @@ -75,7 +76,7 @@ public void run(CommandEvent event) { categories.put(CommandCategory.CODE_BLOCK, new EmbedBuilder()); categories.put(CommandCategory.OTHER, new EmbedBuilder()); - List commandList = new ArrayList<>(HelpBotInstance.getHandler().getCommands().values()); + List commandList = new ArrayList<>(CommandHandler.getInstance().getCommands().values()); commandList.sort(Comparator.comparing(Command::getName)); for (Command command : commandList) { HelpContext context = command.getHelpContext(); @@ -97,7 +98,7 @@ public void run(CommandEvent event) { } selector.build().send(event.getJDA()); } else { - Command command = HelpBotInstance.getHandler().getCommands().get(helpInfo); + Command command = CommandHandler.getInstance().getCommands().get(helpInfo); HelpContext context = command.getHelpContext(); EmbedBuilder builder = new EmbedBuilder(); builder.setTitle("Command Information"); From 54d3dca20c1bc61ccef5900d70e290e3eaa72570 Mon Sep 17 00:00:00 2001 From: Hammer86gn Date: Mon, 12 Jul 2021 02:04:43 -0400 Subject: [PATCH 08/10] Fixed Again cause IntelliJ search just didn't index those files --- .../helpbot/bot/command/impl/other/BulkExecuteCommand.java | 5 +++-- .../helpbot/bot/command/impl/other/EnableCommand.java | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/diamondfire/helpbot/bot/command/impl/other/BulkExecuteCommand.java b/src/main/java/com/diamondfire/helpbot/bot/command/impl/other/BulkExecuteCommand.java index 4933ef5d..38792e17 100644 --- a/src/main/java/com/diamondfire/helpbot/bot/command/impl/other/BulkExecuteCommand.java +++ b/src/main/java/com/diamondfire/helpbot/bot/command/impl/other/BulkExecuteCommand.java @@ -1,6 +1,7 @@ package com.diamondfire.helpbot.bot.command.impl.other; import com.diamondfire.helpbot.bot.HelpBotInstance; +import com.diamondfire.helpbot.bot.command.CommandHandler; import com.diamondfire.helpbot.bot.command.argument.ArgumentSet; import com.diamondfire.helpbot.bot.command.argument.impl.parsing.types.MultiArgumentContainer; import com.diamondfire.helpbot.bot.command.argument.impl.types.*; @@ -43,7 +44,7 @@ public boolean cacheArgumentSet() { @Override public ArgumentSet compileArguments() { List playerCommands = new ArrayList<>(); - for (Command command : HelpBotInstance.getHandler().getCommands().values()) { + for (Command command : CommandHandler.getInstance().getCommands().values()) { if (command instanceof AbstractPlayerUUIDCommand) { playerCommands.add(command.getName()); } @@ -69,7 +70,7 @@ public void run(CommandEvent event) { for (String player : playerNames) { try { - Command command1 = HelpBotInstance.getHandler().getCommands().get(command); + Command command1 = CommandHandler.getInstance().getCommands().get(command); Field field = event.getClass().getDeclaredField("command"); field.trySetAccessible(); field.set(event, command1); diff --git a/src/main/java/com/diamondfire/helpbot/bot/command/impl/other/EnableCommand.java b/src/main/java/com/diamondfire/helpbot/bot/command/impl/other/EnableCommand.java index 802d0bbf..42ab8d50 100644 --- a/src/main/java/com/diamondfire/helpbot/bot/command/impl/other/EnableCommand.java +++ b/src/main/java/com/diamondfire/helpbot/bot/command/impl/other/EnableCommand.java @@ -44,7 +44,7 @@ public Permission getPermission() { @Override public void run(CommandEvent event) { - DisableCommandHandler handler = HelpBotInstance.getHandler().getDisabledHandler(); + DisableCommandHandler handler = CommandHandler.getInstance().getDisabledHandler(); PresetBuilder builder = new PresetBuilder(); String name = event.getArgument("cmd"); Command command = CommandHandler.getCommand(name); From d3aea89f700ac731bda11a7d58f3736e84027124 Mon Sep 17 00:00:00 2001 From: Hammer86gn Date: Mon, 12 Jul 2021 02:08:44 -0400 Subject: [PATCH 09/10] Fixed Again cause IntelliJ search just didn't index those files... and I did a local build as a verification --- .../helpbot/bot/command/impl/other/DisableCommand.java | 2 +- .../helpbot/bot/command/impl/other/PermUnlocksCommand.java | 3 ++- .../helpbot/sys/message/acceptors/CommandAcceptor.java | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/diamondfire/helpbot/bot/command/impl/other/DisableCommand.java b/src/main/java/com/diamondfire/helpbot/bot/command/impl/other/DisableCommand.java index 1fb60755..8e47af31 100644 --- a/src/main/java/com/diamondfire/helpbot/bot/command/impl/other/DisableCommand.java +++ b/src/main/java/com/diamondfire/helpbot/bot/command/impl/other/DisableCommand.java @@ -54,7 +54,7 @@ public void run(CommandEvent event) { } if (command != null) { - HelpBotInstance.getHandler().getDisabledHandler().disable(command); + CommandHandler.getInstance().getDisabledHandler().disable(command); builder.withPreset(new InformativeReply(InformativeReplyType.SUCCESS, String.format("Command ``%s`` has been disabled.", command.getName()))); } else { builder.withPreset(new InformativeReply(InformativeReplyType.ERROR, String.format("Command ``%s`` could not be found.", name))); diff --git a/src/main/java/com/diamondfire/helpbot/bot/command/impl/other/PermUnlocksCommand.java b/src/main/java/com/diamondfire/helpbot/bot/command/impl/other/PermUnlocksCommand.java index 7e435dd6..a7c5d9f3 100644 --- a/src/main/java/com/diamondfire/helpbot/bot/command/impl/other/PermUnlocksCommand.java +++ b/src/main/java/com/diamondfire/helpbot/bot/command/impl/other/PermUnlocksCommand.java @@ -1,6 +1,7 @@ package com.diamondfire.helpbot.bot.command.impl.other; import com.diamondfire.helpbot.bot.HelpBotInstance; +import com.diamondfire.helpbot.bot.command.CommandHandler; import com.diamondfire.helpbot.bot.command.argument.ArgumentSet; import com.diamondfire.helpbot.bot.command.argument.impl.types.DefinedObjectArgument; import com.diamondfire.helpbot.bot.command.help.*; @@ -53,7 +54,7 @@ public void run(CommandEvent event) { ); List commands = new ArrayList<>(); - List commandList = new ArrayList<>(HelpBotInstance.getHandler().getCommands().values()); + List commandList = new ArrayList<>(CommandHandler.getInstance().getCommands().values()); commandList.sort(Comparator.comparingInt((command) -> command.getPermission().ordinal())); for (Command command : commandList) { diff --git a/src/main/java/com/diamondfire/helpbot/sys/message/acceptors/CommandAcceptor.java b/src/main/java/com/diamondfire/helpbot/sys/message/acceptors/CommandAcceptor.java index a52ca15d..5b48c619 100644 --- a/src/main/java/com/diamondfire/helpbot/sys/message/acceptors/CommandAcceptor.java +++ b/src/main/java/com/diamondfire/helpbot/sys/message/acceptors/CommandAcceptor.java @@ -1,6 +1,7 @@ package com.diamondfire.helpbot.sys.message.acceptors; import com.diamondfire.helpbot.bot.HelpBotInstance; +import com.diamondfire.helpbot.bot.command.CommandHandler; import com.diamondfire.helpbot.bot.events.CommandEvent; import net.dv8tion.jda.api.entities.Message; @@ -9,7 +10,7 @@ public class CommandAcceptor implements MessageAcceptor { @Override public boolean accept(Message message) { if (message.getContentDisplay().startsWith(HelpBotInstance.getConfig().getPrefix()) && !message.getAuthor().isBot()) { - HelpBotInstance.getHandler().run(new CommandEvent(message)); + CommandHandler.getInstance().run(new CommandEvent(message)); return true; } From 89ed8b8f0a3fe98e76e1097f0b64494b48040aff Mon Sep 17 00:00:00 2001 From: Hammer86gn Date: Tue, 13 Jul 2021 20:04:52 -0400 Subject: [PATCH 10/10] Fixing Code Removed all my instances of `assert` --- .../argument/impl/types/MinecraftPlayerUUIDArgument.java | 4 +--- .../codedatabase/changelog/CodeDifferenceHandler.java | 1 - 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/com/diamondfire/helpbot/bot/command/argument/impl/types/MinecraftPlayerUUIDArgument.java b/src/main/java/com/diamondfire/helpbot/bot/command/argument/impl/types/MinecraftPlayerUUIDArgument.java index d6aa463a..30802910 100644 --- a/src/main/java/com/diamondfire/helpbot/bot/command/argument/impl/types/MinecraftPlayerUUIDArgument.java +++ b/src/main/java/com/diamondfire/helpbot/bot/command/argument/impl/types/MinecraftPlayerUUIDArgument.java @@ -24,14 +24,12 @@ protected UUID parse(@NotNull String argument) throws ArgumentException { } catch (IOException e) { e.printStackTrace(); } - - assert res != null; + try { responseObject = JsonParser.parseString(res.string()).getAsJsonObject(); } catch (IOException e) { e.printStackTrace(); } - assert responseObject != null; if (responseObject.has("id")) { return UUID.fromString(responseObject.get("id").getAsString()); diff --git a/src/main/java/com/diamondfire/helpbot/df/codeinfo/codedatabase/changelog/CodeDifferenceHandler.java b/src/main/java/com/diamondfire/helpbot/df/codeinfo/codedatabase/changelog/CodeDifferenceHandler.java index 956c1ee2..c16efc3f 100644 --- a/src/main/java/com/diamondfire/helpbot/df/codeinfo/codedatabase/changelog/CodeDifferenceHandler.java +++ b/src/main/java/com/diamondfire/helpbot/df/codeinfo/codedatabase/changelog/CodeDifferenceHandler.java @@ -135,7 +135,6 @@ private static List readDiff(BufferedReader... readers) throws IOExc Files.copy(ExternalFiles.DB.toPath(), ExternalFiles.DB_COMPARE.toPath(), StandardCopyOption.REPLACE_EXISTING); } - assert jsonObject != null; jsonObjects.add(jsonObject); }