diff --git a/src/main/java/com/bbn/hadder/Hadder.java b/src/main/java/com/bbn/hadder/Hadder.java index 3d6eec6..8572baa 100644 --- a/src/main/java/com/bbn/hadder/Hadder.java +++ b/src/main/java/com/bbn/hadder/Hadder.java @@ -38,10 +38,11 @@ public class Hadder { builder.setActivity(Activity.streaming("on the BigBotNetwork", "https://twitch.tv/BigBotNetwork")); builder.setToken(config.getBotToken()); + HelpCommand helpCommand = new HelpCommand(); CommandHandler commandHandler = new CommandHandler( List.of( - new HelpCommand(), + helpCommand, new TestCommand(), new BanCommand(), new PrefixCommand(), @@ -67,7 +68,7 @@ public class Hadder { new FeetCommand(), new EroticCommand(), new RoleCommand(), - new LinkCommand()), config); + new LinkCommand()), config, helpCommand); builder.addEventListeners( new MentionListener(rethink), diff --git a/src/main/java/com/bbn/hadder/commands/CommandEvent.java b/src/main/java/com/bbn/hadder/commands/CommandEvent.java index f45ca7e..577cda3 100644 --- a/src/main/java/com/bbn/hadder/commands/CommandEvent.java +++ b/src/main/java/com/bbn/hadder/commands/CommandEvent.java @@ -1,6 +1,7 @@ package com.bbn.hadder.commands; import com.bbn.hadder.Rethink; +import com.bbn.hadder.commands.general.HelpCommand; import com.bbn.hadder.core.CommandHandler; import com.bbn.hadder.core.Config; import net.dv8tion.jda.api.JDA; @@ -14,19 +15,22 @@ public class CommandEvent extends MessageReceivedEvent { private Rethink rethink; private Config config; private CommandHandler commandHandler; + private HelpCommand helpCommand; - public CommandEvent(@Nonnull JDA api, long responseNumber, @Nonnull Message message, Config config, Rethink rethink, CommandHandler commandHandler) { + public CommandEvent(@Nonnull JDA api, long responseNumber, @Nonnull Message message, Config config, Rethink rethink, CommandHandler commandHandler, HelpCommand helpCommand) { super(api, responseNumber, message); this.config = config; this.rethink = rethink; this.commandHandler = commandHandler; + this.helpCommand = helpCommand; } - public CommandEvent(@Nonnull MessageReceivedEvent event, Config config, Rethink rethink, CommandHandler commandHandler) { + public CommandEvent(@Nonnull MessageReceivedEvent event, Config config, Rethink rethink, CommandHandler commandHandler, HelpCommand helpCommand) { super(event.getJDA(), event.getResponseNumber(), event.getMessage()); this.config = config; this.rethink = rethink; this.commandHandler = commandHandler; + this.helpCommand = helpCommand; } public Rethink getRethink() { @@ -37,6 +41,10 @@ public class CommandEvent extends MessageReceivedEvent { return config; } + public HelpCommand getHelpCommand() { + return helpCommand; + } + public CommandHandler getCommandHandler() { return commandHandler; } 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 dbb3ad3..25efe90 100644 --- a/src/main/java/com/bbn/hadder/commands/fun/GifCommand.java +++ b/src/main/java/com/bbn/hadder/commands/fun/GifCommand.java @@ -43,8 +43,7 @@ public class GifCommand implements Command { event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.ERROR, builder).setTitle("Error").setDescription("Please try again with another term.").build()).queue(); } } else { - EmbedBuilder builder = new EmbedBuilder(); - event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING, builder).setDescription("You have to write at least one search term!").build()).queue(); + event.getHelpCommand().sendHelp(this, event.getRethink(), event.getAuthor(), event.getTextChannel()); } } 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 6b1e4e6..45d3b0e 100644 --- a/src/main/java/com/bbn/hadder/commands/general/HelpCommand.java +++ b/src/main/java/com/bbn/hadder/commands/general/HelpCommand.java @@ -1,10 +1,13 @@ package com.bbn.hadder.commands.general; +import com.bbn.hadder.Rethink; import com.bbn.hadder.commands.Command; import com.bbn.hadder.commands.CommandEvent; import com.bbn.hadder.utils.MessageEditor; import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.Permission; +import net.dv8tion.jda.api.entities.TextChannel; +import net.dv8tion.jda.api.entities.User; import java.util.ArrayList; import java.util.HashMap; @@ -45,14 +48,7 @@ public class HelpCommand implements Command { for (Command cmd : event.getCommandHandler().getCommandList()) { 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", event.getRethink().getUserPrefix(event.getAuthor().getId()) + cmd.labels()[0] + " " + cmd.usage(), false); - new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO, eb); - event.getChannel().sendMessage(eb.build()).queue(); - } + sendHelp(cmd, event.getRethink(), event.getAuthor(), event.getTextChannel()); } } } @@ -62,6 +58,18 @@ public class HelpCommand implements Command { } } + public void sendHelp(Command cmd, Rethink rethink, User author, TextChannel channel) { + if (!cmd.getClass().getPackageName().endsWith("owner") || (cmd.getClass().getPackageName().endsWith("owner") && + (author.getId().equals("477141528981012511") || author.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.getUserPrefix(author.getId()) + cmd.labels()[0] + " " + cmd.usage(), false); + new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO, eb); + channel.sendMessage(eb.build()).queue(); + } + } + @Override public String[] labels() { return new String[]{"help"}; diff --git a/src/main/java/com/bbn/hadder/commands/misc/ScreenshareCommand.java b/src/main/java/com/bbn/hadder/commands/misc/ScreenshareCommand.java index 64de8dd..c9adbe0 100644 --- a/src/main/java/com/bbn/hadder/commands/misc/ScreenshareCommand.java +++ b/src/main/java/com/bbn/hadder/commands/misc/ScreenshareCommand.java @@ -26,6 +26,7 @@ public class ScreenshareCommand implements Command { event.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.ERROR, new EmbedBuilder() .setTitle("Wait, that's illegal") .setDescription("This ID is invalid. \nMaybe you entered a wrong ID? \n\nNote: Make sure the Voice Channel is on this Guild.")).build()).queue(); + event.getHelpCommand().sendHelp(this, event.getRethink(), event.getAuthor(), event.getTextChannel()); return; } } @@ -51,17 +52,20 @@ public class ScreenshareCommand implements Command { event.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.ERROR, new EmbedBuilder() .setTitle("You specified a wrong number!")).build()).queue(); + event.getHelpCommand().sendHelp(this, event.getRethink(), event.getAuthor(), event.getTextChannel()); } } catch (NumberFormatException e) { event.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.ERROR, new EmbedBuilder() .setTitle("Wait, that's illegal") .setDescription("This isn't a Number.")).build()).queue(); + event.getHelpCommand().sendHelp(this, event.getRethink(), event.getAuthor(), event.getTextChannel()); } }, event.getJDA(), event.getAuthor()); } else if (vcs.size()==0) { event.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.ERROR, new EmbedBuilder() .setTitle("Hol' up") .setDescription("There is no Voice Channel named like this. \n\nNote: Make sure the Voice Channel is on this Guild.")).build()).queue(); + event.getHelpCommand().sendHelp(this, event.getRethink(), event.getAuthor(), event.getTextChannel()); } else { event.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO, new EmbedBuilder() .setTitle("Here's your Url to share your Screen") 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 d85b936..07405a4 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/BanCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/BanCommand.java @@ -39,6 +39,7 @@ public class BanCommand implements Command { } else if (event.getMessage().getMentionedMembers().size() == 0) { EmbedBuilder builder = new EmbedBuilder(); event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING, builder).setDescription("You have to mention at least one user!").build()).queue(); + event.getHelpCommand().sendHelp(this, event.getRethink(), event.getAuthor(), event.getTextChannel()); } else if (event.getMessage().getMentionedMembers().size() > 1) { for (int i = 0; i < event.getMessage().getMentionedMembers().size(); i++) { Member member = event.getMessage().getMentionedMembers().get(i); 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 968830d..884c7d8 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/ClearCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/ClearCommand.java @@ -38,6 +38,7 @@ public class ClearCommand implements Command { } catch (NumberFormatException e) { EmbedBuilder builder = new EmbedBuilder(); event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING, builder).setDescription("You have to specify a number!").build()).queue(); + event.getHelpCommand().sendHelp(this, event.getRethink(), event.getAuthor(), event.getTextChannel()); } } else { EmbedBuilder builder = new EmbedBuilder(); @@ -50,6 +51,7 @@ public class ClearCommand implements Command { } else { EmbedBuilder builder = new EmbedBuilder(); event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING, builder).setDescription("You have to specify a number!").build()).queue(); + event.getHelpCommand().sendHelp(this, event.getRethink(), event.getAuthor(), event.getTextChannel()); } } diff --git a/src/main/java/com/bbn/hadder/commands/moderation/GuildPrefixCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/GuildPrefixCommand.java index be03e01..8407394 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/GuildPrefixCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/GuildPrefixCommand.java @@ -26,6 +26,7 @@ public class GuildPrefixCommand implements Command { } else { EmbedBuilder builder = new EmbedBuilder(); event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING, builder).setDescription("You have to set a prefix.").build()).queue(); + event.getHelpCommand().sendHelp(this, event.getRethink(), event.getAuthor(), event.getTextChannel()); } } else { EmbedBuilder builder = new EmbedBuilder(); 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 0b7a67d..36a7650 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/KickCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/KickCommand.java @@ -40,6 +40,7 @@ public class KickCommand implements Command { } else if (event.getMessage().getMentionedMembers().size() == 0) { EmbedBuilder builder = new EmbedBuilder(); event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING, builder).setDescription("You have to mention at least one user!").build()).queue(); + event.getHelpCommand().sendHelp(this, event.getRethink(), event.getAuthor(), event.getTextChannel()); } else if (event.getMessage().getMentionedMembers().size() > 1) { for (int i = 0; i < event.getMessage().getMentionedMembers().size(); i++) { Member member = event.getMessage().getMentionedMembers().get(i); diff --git a/src/main/java/com/bbn/hadder/commands/moderation/LinkCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/LinkCommand.java index 61df5d0..d33dd60 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/LinkCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/LinkCommand.java @@ -9,7 +9,7 @@ import net.dv8tion.jda.api.entities.Guild; public class LinkCommand implements Command { @Override public void executed(String[] args, CommandEvent event) { - if (args.length == 0) return; + if (args.length == 0) event.getHelpCommand().sendHelp(this, event.getRethink(), event.getAuthor(), event.getTextChannel()); switch (args[0]) { case "add": diff --git a/src/main/java/com/bbn/hadder/commands/moderation/NickCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/NickCommand.java index f1216ff..4ab91b9 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/NickCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/NickCommand.java @@ -33,6 +33,7 @@ public class NickCommand implements Command { } else { EmbedBuilder builder = new EmbedBuilder(); event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING, builder).setTitle("Missing arguments").setDescription("You have to specify a new nickname for the user(s).").build()).queue(); + event.getHelpCommand().sendHelp(this, event.getRethink(), event.getAuthor(), event.getTextChannel()); } } else { EmbedBuilder builder = new EmbedBuilder(); @@ -52,6 +53,7 @@ public class NickCommand implements Command { } else if (event.getMessage().getMentionedMembers().size() == 0) { EmbedBuilder builder = new EmbedBuilder(); event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING, builder).setDescription("You have to mention at least one user!").build()).queue(); + event.getHelpCommand().sendHelp(this, event.getRethink(), event.getAuthor(), event.getTextChannel()); } else { for (int i = 0; i < event.getMessage().getMentionedMembers().size(); i++) { Member member = event.getMessage().getMentionedMembers().get(i); 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 98e896d..70ea455 100644 --- a/src/main/java/com/bbn/hadder/commands/settings/PrefixCommand.java +++ b/src/main/java/com/bbn/hadder/commands/settings/PrefixCommand.java @@ -20,6 +20,7 @@ public class PrefixCommand implements Command { } else { EmbedBuilder builder = new EmbedBuilder(); event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING, builder).setDescription("You have to set a prefix.").build()).queue(); + event.getHelpCommand().sendHelp(this, event.getRethink(), event.getAuthor(), event.getTextChannel()); } } diff --git a/src/main/java/com/bbn/hadder/core/CommandHandler.java b/src/main/java/com/bbn/hadder/core/CommandHandler.java index 71c3a49..0fc435e 100644 --- a/src/main/java/com/bbn/hadder/core/CommandHandler.java +++ b/src/main/java/com/bbn/hadder/core/CommandHandler.java @@ -3,6 +3,7 @@ package com.bbn.hadder.core; import com.bbn.hadder.Rethink; import com.bbn.hadder.commands.Command; import com.bbn.hadder.commands.CommandEvent; +import com.bbn.hadder.commands.general.HelpCommand; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import java.util.List; @@ -11,10 +12,12 @@ public class CommandHandler { private List commandList; private Config config; + private HelpCommand helpCommand; - public CommandHandler(List commandList, Config config) { + public CommandHandler(List commandList, Config config, HelpCommand helpCommand) { this.commandList = commandList; this.config = config; + this.helpCommand = helpCommand; } public void handle(MessageReceivedEvent event, Rethink rethink, String prefix) { @@ -27,7 +30,7 @@ public class CommandHandler { if (argString.startsWith(" ")) argString = argString.replaceFirst(" ", ""); String[] args = argString.split(" "); if (args.length>0&&args[0].equals("")) args = new String[0]; - cmd.executed(args, new CommandEvent(event, config, rethink, this)); + cmd.executed(args, new CommandEvent(event, config, rethink, this, helpCommand)); return; } }