diff --git a/src/main/java/buttondevteam/discordplugin/CommandListener.java b/src/main/java/buttondevteam/discordplugin/CommandListener.java index 559dee5..397741d 100644 --- a/src/main/java/buttondevteam/discordplugin/CommandListener.java +++ b/src/main/java/buttondevteam/discordplugin/CommandListener.java @@ -1,5 +1,6 @@ package buttondevteam.discordplugin; +import buttondevteam.discordplugin.commands.DiscordCommandBase; import sx.blah.discord.api.events.IListener; import sx.blah.discord.handle.impl.events.MentionEvent; import sx.blah.discord.handle.impl.events.MessageReceivedEvent; @@ -12,6 +13,8 @@ public class CommandListener { return new IListener[] { new IListener() { @Override public void handle(MentionEvent event) { + if (event.getMessage().getAuthor().isBot()) + return; final IChannel channel = event.getMessage().getChannel(); if (!channel.getID().equals(DiscordPlugin.botchannel.getID()) && !channel.isPrivate()) return; @@ -22,12 +25,28 @@ public class CommandListener { public void handle(MessageReceivedEvent event) { if (!event.getMessage().getChannel().isPrivate()) return; + if (event.getMessage().getAuthor().isBot()) + return; runCommand(event.getMessage()); } } }; } private static void runCommand(IMessage message) { - System.out.println(message.getContent()); // TODO: Resolve mentions + String cmdwithargs = message.getContent(); + final String mention = DiscordPlugin.dc.getOurUser().mention(); + if (message.getContent().startsWith(mention)) // TODO: Resolve mentions: Compound arguments, either a mention or text + cmdwithargs = cmdwithargs.substring(mention.length()); + int index = cmdwithargs.indexOf(' '); + String cmd; + String args; + if (index == -1) { + cmd = cmdwithargs; + args = ""; + } else { + cmd = cmdwithargs.substring(0, index); + args = cmdwithargs.substring(index); + } + DiscordCommandBase.runCommand(cmd, args, message); } } diff --git a/src/main/java/buttondevteam/discordplugin/commands/DiscordCommandBase.java b/src/main/java/buttondevteam/discordplugin/commands/DiscordCommandBase.java index 4c72245..ec138d0 100644 --- a/src/main/java/buttondevteam/discordplugin/commands/DiscordCommandBase.java +++ b/src/main/java/buttondevteam/discordplugin/commands/DiscordCommandBase.java @@ -2,6 +2,7 @@ package buttondevteam.discordplugin.commands; import java.util.HashMap; +import buttondevteam.discordplugin.DiscordPlugin; import sx.blah.discord.handle.obj.IMessage; public abstract class DiscordCommandBase { @@ -11,14 +12,17 @@ public abstract class DiscordCommandBase { private static final HashMap commands = new HashMap(); - protected void respond(IMessage message, String messagetosend) { - } - static { commands.put("connect", new ConnectCommand()); // TODO: API for adding commands? } - public static final void runCommand(IMessage message) { - + public static void runCommand(String cmd, String args, IMessage message) { + DiscordCommandBase command = commands.get(cmd); + if (command == null) { + // TODO: Help command + DiscordPlugin.sendMessageToChannel(message.getChannel(), "Unknown command: " + cmd + " with args: " + args); + return; + } + command.run(message, args); } }