From 5611d0dedec58b5c4b341b4bf123b77686a026c7 Mon Sep 17 00:00:00 2001 From: Hax Date: Thu, 31 Oct 2019 17:17:35 +0100 Subject: [PATCH 1/2] Edited Command System, added Help Command --- src/main/java/com/bbn/hadder/Hadder.java | 3 +- src/main/java/com/bbn/hadder/Rethink.java | 2 +- .../java/com/bbn/hadder/commands/Command.java | 2 + .../bbn/hadder/commands/fun/GifCommand.java | 10 ++++ .../hadder/commands/general/HelpCommand.java | 54 +++++++++++++++++++ .../hadder/commands/general/PingCommand.java | 10 ++++ .../hadder/commands/misc/GitHubCommand.java | 10 ++++ .../commands/moderation/BanCommand.java | 10 ++++ .../commands/moderation/ClearCommand.java | 10 ++++ .../commands/moderation/KickCommand.java | 10 ++++ .../commands/owner/ShutdownCommand.java | 10 ++++ .../{general => owner}/TestCommand.java | 10 ++++ .../commands/settings/PrefixCommand.java | 11 +++- 13 files changed, 149 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/bbn/hadder/commands/general/HelpCommand.java rename src/main/java/com/bbn/hadder/commands/{general => owner}/TestCommand.java (76%) diff --git a/src/main/java/com/bbn/hadder/Hadder.java b/src/main/java/com/bbn/hadder/Hadder.java index ce583e1..3b44930 100644 --- a/src/main/java/com/bbn/hadder/Hadder.java +++ b/src/main/java/com/bbn/hadder/Hadder.java @@ -5,6 +5,7 @@ import com.bbn.hadder.commands.fun.GifCommand; import com.bbn.hadder.commands.misc.GitHubCommand; import com.bbn.hadder.commands.moderation.*; import com.bbn.hadder.commands.owner.ShutdownCommand; +import com.bbn.hadder.commands.owner.TestCommand; import com.bbn.hadder.commands.settings.PrefixCommand; import com.bbn.hadder.core.CommandHandler; import com.bbn.hadder.listener.*; @@ -46,7 +47,7 @@ public class Hadder { builder.setToken(config.getString("Token")); - CommandHandler.cmdlist.addAll(List.of(new TestCommand(), new BanCommand(), new PrefixCommand(), new ShutdownCommand(), new KickCommand(), new PingCommand(), new GifCommand(), new ClearCommand(), new GitHubCommand())); + CommandHandler.cmdlist.addAll(List.of(new HelpCommand(), new TestCommand(), new BanCommand(), new PrefixCommand(), new ShutdownCommand(), new KickCommand(), new PingCommand(), new GifCommand(), new ClearCommand(), new GitHubCommand())); builder.addEventListeners( new MentionListener(), diff --git a/src/main/java/com/bbn/hadder/Rethink.java b/src/main/java/com/bbn/hadder/Rethink.java index 5991325..6da164b 100644 --- a/src/main/java/com/bbn/hadder/Rethink.java +++ b/src/main/java/com/bbn/hadder/Rethink.java @@ -1,10 +1,10 @@ package com.bbn.hadder; +import com.google.gson.JsonParser; import com.rethinkdb.RethinkDB; import com.rethinkdb.gen.exc.ReqlOpFailedError; import com.rethinkdb.net.Connection; import com.rethinkdb.net.Cursor; -import com.google.gson.JsonParser; import java.util.NoSuchElementException; diff --git a/src/main/java/com/bbn/hadder/commands/Command.java b/src/main/java/com/bbn/hadder/commands/Command.java index fcb46df..d9c5fe7 100644 --- a/src/main/java/com/bbn/hadder/commands/Command.java +++ b/src/main/java/com/bbn/hadder/commands/Command.java @@ -9,4 +9,6 @@ import net.dv8tion.jda.api.events.message.MessageReceivedEvent; public interface Command { void executed(String[] args, MessageReceivedEvent event); String[] labels(); + String description(); + String usage(); } diff --git a/src/main/java/com/bbn/hadder/commands/fun/GifCommand.java b/src/main/java/com/bbn/hadder/commands/fun/GifCommand.java index cbcd8fe..056fdf4 100644 --- a/src/main/java/com/bbn/hadder/commands/fun/GifCommand.java +++ b/src/main/java/com/bbn/hadder/commands/fun/GifCommand.java @@ -63,4 +63,14 @@ public class GifCommand implements Command { public String[] labels() { return new String[]{"gif"}; } + + @Override + public String description() { + return "Displays a gif"; + } + + @Override + public String usage() { + return labels()[0]+" "; + } } diff --git a/src/main/java/com/bbn/hadder/commands/general/HelpCommand.java b/src/main/java/com/bbn/hadder/commands/general/HelpCommand.java new file mode 100644 index 0000000..e1bc72d --- /dev/null +++ b/src/main/java/com/bbn/hadder/commands/general/HelpCommand.java @@ -0,0 +1,54 @@ +package com.bbn.hadder.commands.general; + +import com.bbn.hadder.commands.Command; +import com.bbn.hadder.core.CommandHandler; +import com.bbn.hadder.utils.MessageEditor; +import net.dv8tion.jda.api.EmbedBuilder; +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +public class HelpCommand implements Command { + @Override + public void executed(String[] args, MessageReceivedEvent event) { + if (args.length==0) { + HashMap> hashMap = new HashMap<>(); + for (Command cmd : CommandHandler.cmdlist) { + if (!hashMap.containsKey(cmd.getClass().getPackageName())) { + ArrayList cmdlist = new ArrayList<>(); + cmdlist.add(cmd); + hashMap.put(cmd.getClass().getPackageName(), cmdlist); + } else { + hashMap.get(cmd.getClass().getPackageName()).add(cmd); + } + } + EmbedBuilder eb = new EmbedBuilder(); + for (Map.Entry> entry : hashMap.entrySet()) { + if (!entry.getKey().endsWith("owner")||(entry.getKey().endsWith("owner")&&(event.getAuthor().getId().equals("477141528981012511") || event.getAuthor().getId().equals("261083609148948488")))) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < entry.getValue().size(); i++) { + Command cmd = entry.getValue().get(i); + sb.append("`" + cmd.labels()[0] + "`"); + if (i < entry.getValue().size() - 1) sb.append(", "); + } + String[] packagesplit = entry.getKey().split("."); + eb.addField(packagesplit[packagesplit.length - 1], sb.toString(), false); + } + } + new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, eb); + + } + } + + @Override + public String[] labels() { + return new String[]{"help"}; + } + + @Override + public String description() { + return "Shows every Command or explains a Command"; + } +} diff --git a/src/main/java/com/bbn/hadder/commands/general/PingCommand.java b/src/main/java/com/bbn/hadder/commands/general/PingCommand.java index 516ba98..2b99ef4 100644 --- a/src/main/java/com/bbn/hadder/commands/general/PingCommand.java +++ b/src/main/java/com/bbn/hadder/commands/general/PingCommand.java @@ -23,4 +23,14 @@ public class PingCommand implements Command { public String[] labels() { return new String[]{"ping"}; } + + @Override + public String description() { + return "Shows the ping to the discord api"; + } + + @Override + public String usage() { + return labels()[0]; + } } diff --git a/src/main/java/com/bbn/hadder/commands/misc/GitHubCommand.java b/src/main/java/com/bbn/hadder/commands/misc/GitHubCommand.java index 4900887..09e03c1 100644 --- a/src/main/java/com/bbn/hadder/commands/misc/GitHubCommand.java +++ b/src/main/java/com/bbn/hadder/commands/misc/GitHubCommand.java @@ -73,4 +73,14 @@ public class GitHubCommand implements Command { public String[] labels() { return new String[]{"GitHub"}; } + + @Override + public String description() { + return "Shows info of an user"; + } + + @Override + public String usage() { + return labels()[0]+" "; + } } diff --git a/src/main/java/com/bbn/hadder/commands/moderation/BanCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/BanCommand.java index cccdf83..5e6fa0c 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/BanCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/BanCommand.java @@ -52,4 +52,14 @@ public class BanCommand implements Command { public String[] labels() { return new String[]{"ban"}; } + + @Override + public String description() { + return "Bans an user"; + } + + @Override + public String usage() { + return labels()[0]+" <@User>"; + } } diff --git a/src/main/java/com/bbn/hadder/commands/moderation/ClearCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/ClearCommand.java index 58059e7..70336e0 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/ClearCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/ClearCommand.java @@ -59,4 +59,14 @@ public class ClearCommand implements Command { public String[] labels() { return new String[]{"clear"}; } + + @Override + public String description() { + return "Clears messages"; + } + + @Override + public String usage() { + return labels()[0]+" "; + } } diff --git a/src/main/java/com/bbn/hadder/commands/moderation/KickCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/KickCommand.java index 00bfed8..5b21f10 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/KickCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/KickCommand.java @@ -49,4 +49,14 @@ public class KickCommand implements Command { public String[] labels() { return new String[]{"kick"}; } + + @Override + public String description() { + return "Kicks an user"; + } + + @Override + public String usage() { + return labels()[0]+" <@User>"; + } } diff --git a/src/main/java/com/bbn/hadder/commands/owner/ShutdownCommand.java b/src/main/java/com/bbn/hadder/commands/owner/ShutdownCommand.java index 926ad15..39f4ee5 100644 --- a/src/main/java/com/bbn/hadder/commands/owner/ShutdownCommand.java +++ b/src/main/java/com/bbn/hadder/commands/owner/ShutdownCommand.java @@ -29,4 +29,14 @@ public class ShutdownCommand implements Command { public String[] labels() { return new String[]{"shutdown"}; } + + @Override + public String description() { + return "Shuts the Bot down"; + } + + @Override + public String usage() { + return labels()[0]; + } } diff --git a/src/main/java/com/bbn/hadder/commands/general/TestCommand.java b/src/main/java/com/bbn/hadder/commands/owner/TestCommand.java similarity index 76% rename from src/main/java/com/bbn/hadder/commands/general/TestCommand.java rename to src/main/java/com/bbn/hadder/commands/owner/TestCommand.java index b4ca20d..306763c 100644 --- a/src/main/java/com/bbn/hadder/commands/general/TestCommand.java +++ b/src/main/java/com/bbn/hadder/commands/owner/TestCommand.java @@ -21,4 +21,14 @@ public class TestCommand implements Command { public String[] labels() { return new String[]{"test"}; } + + @Override + public String description() { + return "Sub to bbn"; + } + + @Override + public String usage() { + return labels()[0]; + } } diff --git a/src/main/java/com/bbn/hadder/commands/settings/PrefixCommand.java b/src/main/java/com/bbn/hadder/commands/settings/PrefixCommand.java index 07fc48e..4df2852 100644 --- a/src/main/java/com/bbn/hadder/commands/settings/PrefixCommand.java +++ b/src/main/java/com/bbn/hadder/commands/settings/PrefixCommand.java @@ -8,7 +8,6 @@ import com.bbn.hadder.Rethink; import com.bbn.hadder.commands.Command; import com.bbn.hadder.utils.MessageEditor; import net.dv8tion.jda.api.EmbedBuilder; -import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; @@ -36,4 +35,14 @@ public class PrefixCommand implements Command { public String[] labels() { return new String[]{"prefix"}; } + + @Override + public String description() { + return "Changes the prefix"; + } + + @Override + public String usage() { + return labels()[0]+" "; + } } -- 2.45.3 From fd97d7a20f8b8b73cd549e56a0242ef7cc857b84 Mon Sep 17 00:00:00 2001 From: Hax Date: Thu, 31 Oct 2019 17:17:58 +0100 Subject: [PATCH 2/2] Edited Help Command --- .../hadder/commands/general/HelpCommand.java | 30 ++++++++++++++++--- .../hadder/commands/owner/TestCommand.java | 2 +- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/bbn/hadder/commands/general/HelpCommand.java b/src/main/java/com/bbn/hadder/commands/general/HelpCommand.java index e1bc72d..c5325f4 100644 --- a/src/main/java/com/bbn/hadder/commands/general/HelpCommand.java +++ b/src/main/java/com/bbn/hadder/commands/general/HelpCommand.java @@ -1,9 +1,11 @@ package com.bbn.hadder.commands.general; +import com.bbn.hadder.Rethink; import com.bbn.hadder.commands.Command; import com.bbn.hadder.core.CommandHandler; import com.bbn.hadder.utils.MessageEditor; import net.dv8tion.jda.api.EmbedBuilder; +import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import java.util.ArrayList; @@ -13,7 +15,7 @@ import java.util.Map; public class HelpCommand implements Command { @Override public void executed(String[] args, MessageReceivedEvent event) { - if (args.length==0) { + if (args.length == 0) { HashMap> hashMap = new HashMap<>(); for (Command cmd : CommandHandler.cmdlist) { if (!hashMap.containsKey(cmd.getClass().getPackageName())) { @@ -26,19 +28,34 @@ public class HelpCommand implements Command { } EmbedBuilder eb = new EmbedBuilder(); for (Map.Entry> entry : hashMap.entrySet()) { - if (!entry.getKey().endsWith("owner")||(entry.getKey().endsWith("owner")&&(event.getAuthor().getId().equals("477141528981012511") || event.getAuthor().getId().equals("261083609148948488")))) { + if (!entry.getKey().endsWith("owner") || (entry.getKey().endsWith("owner") && (event.getAuthor().getId().equals("477141528981012511") || event.getAuthor().getId().equals("261083609148948488")))) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < entry.getValue().size(); i++) { Command cmd = entry.getValue().get(i); sb.append("`" + cmd.labels()[0] + "`"); if (i < entry.getValue().size() - 1) sb.append(", "); } - String[] packagesplit = entry.getKey().split("."); + String[] packagesplit = entry.getKey().split("\\."); eb.addField(packagesplit[packagesplit.length - 1], sb.toString(), false); } } new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, eb); - + event.getChannel().sendMessage(eb.build()).queue(); + } else { + for (Command cmd : CommandHandler.cmdlist) { + for (String label : cmd.labels()) { + if (label.toLowerCase().equals(args[0])) { + if (!cmd.getClass().getPackageName().endsWith("owner") || (cmd.getClass().getPackageName().endsWith("owner") && (event.getAuthor().getId().equals("477141528981012511") || event.getAuthor().getId().equals("261083609148948488")))) { + EmbedBuilder eb = new EmbedBuilder(); + String name = cmd.labels()[0]; + eb.setDescription(cmd.description()).setTitle(name.replaceFirst(String.valueOf(name.charAt(0)), String.valueOf(name.charAt(0)).toUpperCase())); + eb.addField("Usage", Rethink.get("user", "id", event.getAuthor().getId(), "prefix") + cmd.usage(), false); + new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, eb); + event.getChannel().sendMessage(eb.build()).queue(); + } + } + } + } } } @@ -51,4 +68,9 @@ public class HelpCommand implements Command { public String description() { return "Shows every Command or explains a Command"; } + + @Override + public String usage() { + return "help [Commandname]"; + } } diff --git a/src/main/java/com/bbn/hadder/commands/owner/TestCommand.java b/src/main/java/com/bbn/hadder/commands/owner/TestCommand.java index 306763c..a42b185 100644 --- a/src/main/java/com/bbn/hadder/commands/owner/TestCommand.java +++ b/src/main/java/com/bbn/hadder/commands/owner/TestCommand.java @@ -1,4 +1,4 @@ -package com.bbn.hadder.commands.general; +package com.bbn.hadder.commands.owner; /* * @author Skidder / GregTCLTK -- 2.45.3