diff --git a/assets/config.csv b/assets/config.csv index c84d561..76a991d 100644 --- a/assets/config.csv +++ b/assets/config.csv @@ -37,6 +37,7 @@ "Localized Commands","kittyrole","" "Localized Commands","leaderboard","" "Localized Commands","map","" +"Localized Commands","mod","" "Localized Commands","perish, thenperish","" "Localized Commands","ping","" "Localized Commands","poll","" @@ -294,6 +295,7 @@ "Command Enabler","kittyrole","1" "Command Enabler","leaderboard","1" "Command Enabler","map","1" +"Command Enabler","mod","1" "Command Enabler","perish, thenperish","1" "Command Enabler","ping","1" "Command Enabler","poll","1" diff --git a/imagedownloaderutil_1.png b/imagedownloaderutil_1.png new file mode 100644 index 0000000..860accb Binary files /dev/null and b/imagedownloaderutil_1.png differ diff --git a/src/commands/characters/CommandCharacterMain.java b/src/commands/characters/CommandCharacterMain.java index 64e5621..6066ab1 100644 --- a/src/commands/characters/CommandCharacterMain.java +++ b/src/commands/characters/CommandCharacterMain.java @@ -25,6 +25,6 @@ public class CommandCharacterMain extends Command @Override public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) { - framework.run(guild, channel, user, input.args).Call(res); + framework.run(guild, channel, user, input).Call(res); } } \ No newline at end of file diff --git a/src/commands/characters/SubCommandCreate.java b/src/commands/characters/SubCommandCreate.java index 605b4c5..bbe5930 100644 --- a/src/commands/characters/SubCommandCreate.java +++ b/src/commands/characters/SubCommandCreate.java @@ -4,16 +4,21 @@ import core.CharacterManager; import core.LocStrings; import core.SubCommand; import core.SubCommandFormattable; -import dataStructures.*; +import dataStructures.KittyChannel; +import dataStructures.KittyGuild; +import dataStructures.KittyRating; +import dataStructures.KittyRole; +import dataStructures.KittyUser; +import dataStructures.UserInput; public class SubCommandCreate extends SubCommand { public SubCommandCreate(KittyRole level, KittyRating rating) { super(level, rating); } @Override - public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input) { - String [] info = input.split(","); + String [] info = input.args.split(","); if(info.length < 3) { return new SubCommandFormattable (LocStrings.stub("CharacterCreateNullInfo")); diff --git a/src/commands/characters/SubCommandEditBio.java b/src/commands/characters/SubCommandEditBio.java index 8236a6d..dc35b07 100644 --- a/src/commands/characters/SubCommandEditBio.java +++ b/src/commands/characters/SubCommandEditBio.java @@ -10,26 +10,27 @@ import dataStructures.KittyGuild; import dataStructures.KittyRating; import dataStructures.KittyRole; import dataStructures.KittyUser; +import dataStructures.UserInput; public class SubCommandEditBio extends SubCommand { public SubCommandEditBio(KittyRole level, KittyRating rating) { super(level, rating); } @Override - public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input) { try { - Long.parseLong(input.split(" ")[0]); + Long.parseLong(input.args.split(" ")[0]); } catch(Exception e) { return new SubCommandFormattable (LocStrings.stub("CharacterEditBioNotValid")); } - KittyCharacter character = CharacterManager.instance.searchCharacter(input.split(" ")[0]).get(0); + KittyCharacter character = CharacterManager.instance.searchCharacter(input.args.split(" ")[0]).get(0); if(character.getOwner().equals(user)) { - CharacterManager.instance.editBio(character, input.substring(input.indexOf(' '))); + CharacterManager.instance.editBio(character, input.args.substring(input.args.indexOf(' '))); return new SubCommandFormattable (LocStrings.stub("CharacterEditBioSuccess")); } else diff --git a/src/commands/characters/SubCommandEditName.java b/src/commands/characters/SubCommandEditName.java index 56c9cef..a339aa9 100644 --- a/src/commands/characters/SubCommandEditName.java +++ b/src/commands/characters/SubCommandEditName.java @@ -10,26 +10,27 @@ import dataStructures.KittyGuild; import dataStructures.KittyRating; import dataStructures.KittyRole; import dataStructures.KittyUser; +import dataStructures.UserInput; public class SubCommandEditName extends SubCommand { public SubCommandEditName(KittyRole level, KittyRating rating) { super(level, rating); } @Override - public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input) { try { - Long.parseLong(input.split(" ")[0]); + Long.parseLong(input.args.split(" ")[0]); } catch(Exception e) { return new SubCommandFormattable (LocStrings.stub("CharacterEditNameNotValid")); } - KittyCharacter character = CharacterManager.instance.searchCharacter(input.split(" ")[0]).get(0); + KittyCharacter character = CharacterManager.instance.searchCharacter(input.args.split(" ")[0]).get(0); if(character.getOwner().equals(user)) { - CharacterManager.instance.editName(character, input.substring(input.indexOf(' '))); + CharacterManager.instance.editName(character, input.args.substring(input.args.indexOf(' '))); return new SubCommandFormattable (LocStrings.stub("CharacterEditNameSuccess")); } else diff --git a/src/commands/characters/SubCommandEditURL.java b/src/commands/characters/SubCommandEditURL.java index 411d3cc..1d4b9a6 100644 --- a/src/commands/characters/SubCommandEditURL.java +++ b/src/commands/characters/SubCommandEditURL.java @@ -10,26 +10,27 @@ import dataStructures.KittyGuild; import dataStructures.KittyRating; import dataStructures.KittyRole; import dataStructures.KittyUser; +import dataStructures.UserInput; public class SubCommandEditURL extends SubCommand { public SubCommandEditURL(KittyRole level, KittyRating rating) { super(level, rating); } @Override - public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input) { try { - Long.parseLong(input.split(" ")[0]); + Long.parseLong(input.args.split(" ")[0]); } catch(Exception e) { return new SubCommandFormattable (LocStrings.stub("CharacterEditURLNotValid")); } - KittyCharacter character = CharacterManager.instance.searchCharacter(input.split(" ")[0]).get(0); + KittyCharacter character = CharacterManager.instance.searchCharacter(input.args.split(" ")[0]).get(0); if(character.getOwner().equals(user)) { - CharacterManager.instance.editRefImage(character, input.substring(input.indexOf(' '))); + CharacterManager.instance.editRefImage(character, input.args.substring(input.args.indexOf(' '))); return new SubCommandFormattable (LocStrings.stub("CharacterEditURLSuccess")); } else diff --git a/src/commands/characters/SubCommandSearch.java b/src/commands/characters/SubCommandSearch.java index 74b72cd..5a7c48e 100644 --- a/src/commands/characters/SubCommandSearch.java +++ b/src/commands/characters/SubCommandSearch.java @@ -12,15 +12,16 @@ import dataStructures.KittyGuild; import dataStructures.KittyRating; import dataStructures.KittyRole; import dataStructures.KittyUser; +import dataStructures.UserInput; public class SubCommandSearch extends SubCommand { public SubCommandSearch(KittyRole level, KittyRating rating) { super(level, rating); } @Override - public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input) { - ArrayList characters = CharacterManager.instance.searchCharacter(input); + ArrayList characters = CharacterManager.instance.searchCharacter(input.args); if(characters.size() < 1) { return new SubCommandFormattable (LocStrings.stub("CharacterSearchNoCharacterFound")); diff --git a/src/commands/general/CommandBlurry.java b/src/commands/general/CommandBlurry.java index 5d646c8..05e0e16 100644 --- a/src/commands/general/CommandBlurry.java +++ b/src/commands/general/CommandBlurry.java @@ -20,11 +20,8 @@ public class CommandBlurry extends Command public String getHelpText() { return LocStrings.stub("BlurryInfo"); }; private static Long num = 0l; - private static double [][] blur = {{0.0030, 0.0133, 0.0219, 0.0133, 0.0030}, - {0.0133, 0.0596, 0.0983, 0.0596, 0.0133}, - {0.0219, 0.0983, 0.1621, 0.0983, 0.0219}, - {0.0133, 0.0596, 0.0983, 0.0596, 0.0133}, - {0.0030, 0.0133, 0.0219, 0.0133, 0.0030}}; + private static float [] weights = {.00390625f, .0156625f, .0234475f, .0156625f, .00390625f}; + @Override public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) @@ -58,7 +55,7 @@ public class CommandBlurry extends Command return; } preProcessed = new File(filename); - applySnap(ImageIO.read(preProcessed), name); + applyBlur(ImageIO.read(preProcessed), name); } catch (IOException e) { @@ -72,51 +69,69 @@ public class CommandBlurry extends Command ImageUtils.blockingFileDelete(postProcessed); } - private static void applySnap(BufferedImage image, String name) throws IOException + private static void applyBlur(BufferedImage image, String name) throws IOException { BufferedImage blurred = ImageUtils.copyImage(image); // Iterate over each column left to right and touch up each pixel - for(int i = 0; i < 50; ++i) + for(int x = 0; x < image.getWidth(); ++x) { - for(int x = 1; x < image.getWidth() - 1; ++x) + for(int y = 0; y < image.getHeight(); ++y) { - for(int y = 1; y < image.getHeight() - 1; ++y) - { - blurred.setRGB(x, y, getColorAvg(image, x, y).getRGB()); - } + blurred.setRGB(x, y, getColorAvg(image, x, y).getRGB()); } - image = ImageUtils.copyImage(blurred); } - - + image = ImageUtils.copyImage(blurred); + File outputfile = new File(name); ImageIO.write(blurred, "png", outputfile); } private static Color getColorAvg(BufferedImage image, int x, int y) { - Color center = new Color(image.getRGB(x, y), true); - Color one = new Color(image.getRGB(x - 1, y), true); - Color two = new Color(image.getRGB(x - 1, y - 1), true); - Color three = new Color(image.getRGB(x, y - 1), true); - Color four = new Color(image.getRGB(x + 1, y - 1), true); - Color five = new Color(image.getRGB(x + 1, y), true); - Color six = new Color(image.getRGB(x + 1, y + 1), true); - Color seven = new Color(image.getRGB(x, y + 1), true); - Color eight = new Color(image.getRGB(x -1, y + 1), true); + Color current; + float r = 0; + float g = 0; + float b = 0; - int blue = center.getBlue() + one.getBlue() + two.getBlue() + three.getBlue() + four.getBlue() + five.getBlue() + six.getBlue() + seven.getBlue() + eight.getBlue(); - int red = center.getRed() + one.getRed() + two.getRed() + three.getRed() + four.getRed() + five.getRed() + six.getRed() + seven.getRed() + eight.getRed(); - int green = center.getGreen() + one.getGreen() + two.getGreen() + three.getGreen() + four.getGreen() + five.getGreen() + six.getGreen() + seven.getGreen() + eight.getGreen(); - int alpha = center.getAlpha() + one.getAlpha() + two.getAlpha() + three.getAlpha() + four.getAlpha() + five.getAlpha() + six.getAlpha() + seven.getAlpha() + eight.getAlpha(); + + for(int xCor = -2; xCor <= 2; xCor++) + { + for(int yCor = -2; yCor <= 2; yCor++) + { + current = new Color(image.getRGB(clamp(x + xCor, 0, image.getWidth() - 1), clamp(y + yCor, 0, image.getHeight() - 1))); + r += getGaus(current.getRed(), xCor, yCor); + g += getGaus(current.getGreen(), xCor, yCor); + b += getGaus(current.getBlue(), xCor, yCor); + } + } + int red = (int)r; + int green = (int)g; + int blue = (int)b; + return new Color(red, green, blue); + } + + private static int clamp(int num, int min, int max) + { + if(num >= max) + return max; + if(num < min) + return min; + return num; + } + + private static float getGaus(int col, int x, int y) + { + x += 2; + y+= 2; + float result = weights[x]; + if(y == 2 || y == 4) + result *= 4; + if(y==3) + result *= 6; - blue /= 9; - red /= 9; - green /= 9; - alpha /= 9; + result *= col; - Color blur = new Color(red, green, blue, alpha); - - return blur; - } + return result; + } + } \ No newline at end of file diff --git a/src/commands/guildrole/CommandGuildRoleMain.java b/src/commands/guildrole/CommandGuildRoleMain.java index 5b00142..010b847 100644 --- a/src/commands/guildrole/CommandGuildRoleMain.java +++ b/src/commands/guildrole/CommandGuildRoleMain.java @@ -27,12 +27,9 @@ public class CommandGuildRoleMain extends Command @Override public String getHelpText() { return LocStrings.stub("GuildRoleInfo"); } - - - @Override public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) { - framework.run(guild, channel, user, input.args).Call(res); + framework.run(guild, channel, user, input).Call(res); } } diff --git a/src/commands/guildrole/SubCommandAdd.java b/src/commands/guildrole/SubCommandAdd.java index 37c9617..04bf090 100644 --- a/src/commands/guildrole/SubCommandAdd.java +++ b/src/commands/guildrole/SubCommandAdd.java @@ -7,15 +7,16 @@ import dataStructures.KittyGuild; import dataStructures.KittyRating; import dataStructures.KittyRole; import dataStructures.KittyUser; +import dataStructures.UserInput; public class SubCommandAdd extends SubCommand { public SubCommandAdd(KittyRole level, KittyRating rating) { super(level, rating); } @Override - public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input) { - String role = input.split(" ")[0]; + String role = input.args.split(" ")[0]; if(guild.roleList.contains(role)) { if(guild.control.addRole(user.discordID, role)) diff --git a/src/commands/guildrole/SubCommandAllowed.java b/src/commands/guildrole/SubCommandAllowed.java index 95fd093..15c7252 100644 --- a/src/commands/guildrole/SubCommandAllowed.java +++ b/src/commands/guildrole/SubCommandAllowed.java @@ -8,15 +8,16 @@ import dataStructures.KittyGuild; import dataStructures.KittyRating; import dataStructures.KittyRole; import dataStructures.KittyUser; +import dataStructures.UserInput; public class SubCommandAllowed extends SubCommand { public SubCommandAllowed(KittyRole level, KittyRating rating) { super(level, rating); } @Override - public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input) { - String [] roles = input.split(","); + String [] roles = input.args.split(","); String role; String formatted = ""; for(int i = 0; i < roles.length; i++) diff --git a/src/commands/guildrole/SubCommandList.java b/src/commands/guildrole/SubCommandList.java index 5bf3163..f59c292 100644 --- a/src/commands/guildrole/SubCommandList.java +++ b/src/commands/guildrole/SubCommandList.java @@ -8,6 +8,7 @@ import dataStructures.KittyGuild; import dataStructures.KittyRating; import dataStructures.KittyRole; import dataStructures.KittyUser; +import dataStructures.UserInput; public class SubCommandList extends SubCommand { @@ -15,7 +16,7 @@ public class SubCommandList extends SubCommand public SubCommandList(KittyRole level, KittyRating rating) { super(level, rating);} @Override - public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input) { String roles = ""; if(guild.roleList.isEmpty()) diff --git a/src/commands/guildrole/SubCommandNotAllowed.java b/src/commands/guildrole/SubCommandNotAllowed.java index f11ec28..e2c6ac7 100644 --- a/src/commands/guildrole/SubCommandNotAllowed.java +++ b/src/commands/guildrole/SubCommandNotAllowed.java @@ -8,16 +8,17 @@ import dataStructures.KittyGuild; import dataStructures.KittyRating; import dataStructures.KittyRole; import dataStructures.KittyUser; +import dataStructures.UserInput; public class SubCommandNotAllowed extends SubCommand { public SubCommandNotAllowed(KittyRole level, KittyRating rating) { super(level, rating); } @Override - public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input) { - input = input.toLowerCase(); - String [] roles = input.split(","); + String lowerInput = input.args.toLowerCase(); + String [] roles = lowerInput.split(","); for(String role:roles) { if(guild.roleList.contains(role.trim())) diff --git a/src/commands/guildrole/SubCommandRemove.java b/src/commands/guildrole/SubCommandRemove.java index ad5fd53..84555c5 100644 --- a/src/commands/guildrole/SubCommandRemove.java +++ b/src/commands/guildrole/SubCommandRemove.java @@ -10,9 +10,9 @@ public class SubCommandRemove extends SubCommand public SubCommandRemove(KittyRole level, KittyRating rating) { super(level, rating); } @Override - public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input) { - String role = input.split(" ")[0]; + String role = input.args.split(" ")[0]; String formatted = ""; if(guild.roleList.contains(role)) { diff --git a/src/commands/mod/CommandModMain.java b/src/commands/mod/CommandModMain.java new file mode 100644 index 0000000..8ab5e5b --- /dev/null +++ b/src/commands/mod/CommandModMain.java @@ -0,0 +1,33 @@ +package commands.mod; + +import core.Command; +import core.LocStrings; +import core.SubCommandFramework; +import dataStructures.KittyChannel; +import dataStructures.KittyGuild; +import dataStructures.KittyRating; +import dataStructures.KittyRole; +import dataStructures.KittyUser; +import dataStructures.Response; +import dataStructures.UserInput; + +public class CommandModMain extends Command +{ + SubCommandFramework framework = new SubCommandFramework(); + public CommandModMain(KittyRole level, KittyRating rating) + { + super(level, rating); + framework.addCommand("kick", new SubCommandKick(KittyRole.Admin, KittyRating.Safe)); + framework.addCommand("mute", new SubCommandMute(KittyRole.Admin, KittyRating.Safe)); + framework.addCommand("ban", new SubCommandBan(KittyRole.Admin, KittyRating.Safe)); + } + + @Override + public String getHelpText() { return LocStrings.stub("GuildRoleInfo"); } + + @Override + public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) + { + framework.run(guild, channel, user, input).Call(res); + } +} \ No newline at end of file diff --git a/src/commands/mod/SubCommandBan.java b/src/commands/mod/SubCommandBan.java new file mode 100644 index 0000000..2741885 --- /dev/null +++ b/src/commands/mod/SubCommandBan.java @@ -0,0 +1,21 @@ +package commands.mod; + +import core.SubCommand; +import core.SubCommandFormattable; +import dataStructures.KittyChannel; +import dataStructures.KittyGuild; +import dataStructures.KittyRating; +import dataStructures.KittyRole; +import dataStructures.KittyUser; +import dataStructures.UserInput; + +public class SubCommandBan extends SubCommand +{ +public SubCommandBan(KittyRole level, KittyRating rating) { super(level, rating); } + + @Override + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input) + { + return new SubCommandFormattable(guild.control.banMember(input.mentions[0].discordID) + " "); + } +} diff --git a/src/commands/mod/SubCommandKick.java b/src/commands/mod/SubCommandKick.java new file mode 100644 index 0000000..96bcaa2 --- /dev/null +++ b/src/commands/mod/SubCommandKick.java @@ -0,0 +1,25 @@ +package commands.mod; + +import core.SubCommand; +import core.SubCommandFormattable; +import dataStructures.KittyChannel; +import dataStructures.KittyGuild; +import dataStructures.KittyRating; +import dataStructures.KittyRole; +import dataStructures.KittyUser; +import dataStructures.UserInput; + +public class SubCommandKick extends SubCommand +{ + public SubCommandKick(KittyRole level, KittyRating rating) { super(level, rating); } + + @Override + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input) + { + if(guild.control.kickMember(input.mentions[0].discordID)) + { + return new SubCommandFormattable("Success"); + } + return new SubCommandFormattable("Fail"); + } +} \ No newline at end of file diff --git a/src/commands/mod/SubCommandMute.java b/src/commands/mod/SubCommandMute.java new file mode 100644 index 0000000..338484b --- /dev/null +++ b/src/commands/mod/SubCommandMute.java @@ -0,0 +1,21 @@ +package commands.mod; + +import core.SubCommand; +import core.SubCommandFormattable; +import dataStructures.KittyChannel; +import dataStructures.KittyGuild; +import dataStructures.KittyRating; +import dataStructures.KittyRole; +import dataStructures.KittyUser; +import dataStructures.UserInput; + +public class SubCommandMute extends SubCommand +{ + public SubCommandMute(KittyRole level, KittyRating rating) { super(level, rating); } + + @Override + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input) + { + return new SubCommandFormattable("" + guild.control.muteMember(input.mentions[0].avatarID)); + } +} diff --git a/src/commands/poll/CommandPollMain.java b/src/commands/poll/CommandPollMain.java index a7036fb..fda983e 100644 --- a/src/commands/poll/CommandPollMain.java +++ b/src/commands/poll/CommandPollMain.java @@ -29,6 +29,6 @@ public class CommandPollMain extends Command @Override public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) { - framework.run(guild, channel, user, input.args).Call(res); + framework.run(guild, channel, user, input).Call(res); } } diff --git a/src/commands/poll/SubCommandAddOption.java b/src/commands/poll/SubCommandAddOption.java index 7886194..aedf96e 100644 --- a/src/commands/poll/SubCommandAddOption.java +++ b/src/commands/poll/SubCommandAddOption.java @@ -7,16 +7,17 @@ import dataStructures.KittyGuild; import dataStructures.KittyRating; import dataStructures.KittyRole; import dataStructures.KittyUser; +import dataStructures.UserInput; public class SubCommandAddOption extends SubCommand { - public SubCommandAddOption(KittyRole roleLevel, KittyRating contentRating) {super(roleLevel, contentRating); } + public SubCommandAddOption(KittyRole roleLevel, KittyRating contentRating) {super(roleLevel, contentRating);} @Override - public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input) { - return new SubCommandFormattable (guild.addChoiceToPoll(input)); + return new SubCommandFormattable (guild.addChoiceToPoll(input.args)); } } \ No newline at end of file diff --git a/src/commands/poll/SubCommandEnd.java b/src/commands/poll/SubCommandEnd.java index 40c9d0c..fb600cf 100644 --- a/src/commands/poll/SubCommandEnd.java +++ b/src/commands/poll/SubCommandEnd.java @@ -7,6 +7,7 @@ import dataStructures.KittyGuild; import dataStructures.KittyRating; import dataStructures.KittyRole; import dataStructures.KittyUser; +import dataStructures.UserInput; public class SubCommandEnd extends SubCommand { @@ -14,7 +15,7 @@ public class SubCommandEnd extends SubCommand public SubCommandEnd(KittyRole roleLevel, KittyRating contentRating) {super(roleLevel, contentRating); } @Override - public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input) { return new SubCommandFormattable (guild.endPoll()); } diff --git a/src/commands/poll/SubCommandResults.java b/src/commands/poll/SubCommandResults.java index d793251..c2486be 100644 --- a/src/commands/poll/SubCommandResults.java +++ b/src/commands/poll/SubCommandResults.java @@ -10,7 +10,7 @@ public class SubCommandResults extends SubCommand public SubCommandResults(KittyRole level, KittyRating rating) { super(level, rating); } @Override - public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input) { String results = ""; int totalVotes = 0; diff --git a/src/commands/poll/SubCommandShow.java b/src/commands/poll/SubCommandShow.java index eafb1a5..df15f50 100644 --- a/src/commands/poll/SubCommandShow.java +++ b/src/commands/poll/SubCommandShow.java @@ -8,6 +8,7 @@ import dataStructures.KittyGuild; import dataStructures.KittyRating; import dataStructures.KittyRole; import dataStructures.KittyUser; +import dataStructures.UserInput; public class SubCommandShow extends SubCommand { @@ -15,7 +16,7 @@ public class SubCommandShow extends SubCommand @Override - public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input) { if(!guild.polling) { diff --git a/src/commands/poll/SubCommandStart.java b/src/commands/poll/SubCommandStart.java index 8216fa3..48855bc 100644 --- a/src/commands/poll/SubCommandStart.java +++ b/src/commands/poll/SubCommandStart.java @@ -7,6 +7,7 @@ import dataStructures.KittyGuild; import dataStructures.KittyRating; import dataStructures.KittyRole; import dataStructures.KittyUser; +import dataStructures.UserInput; public class SubCommandStart extends SubCommand { @@ -14,9 +15,9 @@ public class SubCommandStart extends SubCommand public SubCommandStart(KittyRole roleLevel, KittyRating contentRating) {super(roleLevel, contentRating); } @Override - public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input) { - return new SubCommandFormattable (guild.startPoll(input)); + return new SubCommandFormattable (guild.startPoll(input.args)); } } \ No newline at end of file diff --git a/src/commands/poll/SubCommandVote.java b/src/commands/poll/SubCommandVote.java index b4c9252..33b757d 100644 --- a/src/commands/poll/SubCommandVote.java +++ b/src/commands/poll/SubCommandVote.java @@ -9,13 +9,14 @@ import dataStructures.KittyPoll; import dataStructures.KittyRating; import dataStructures.KittyRole; import dataStructures.KittyUser; +import dataStructures.UserInput; public class SubCommandVote extends SubCommand { public SubCommandVote(KittyRole level, KittyRating rating) { super(level, rating); } @Override - public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input) { if(guild.polling) { @@ -25,7 +26,7 @@ public class SubCommandVote extends SubCommand } try { - int voteNum = Integer.parseInt(input.substring(input.indexOf(" ")).trim())-1; + int voteNum = Integer.parseInt(input.args.substring(input.args.indexOf(" ")).trim())-1; if(voteNum >= guild.choices.size() || voteNum < 0) { return new SubCommandFormattable (String.format(LocStrings.stub("PollVoteNotValidVote"), voteNum)); diff --git a/src/commands/raffle/CommandRaffleMain.java b/src/commands/raffle/CommandRaffleMain.java index 4363297..db5a4f4 100644 --- a/src/commands/raffle/CommandRaffleMain.java +++ b/src/commands/raffle/CommandRaffleMain.java @@ -19,6 +19,6 @@ public class CommandRaffleMain extends Command @Override public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) { - framework.run(guild, channel, user, input.args).Call(res); + framework.run(guild, channel, user, input).Call(res); } } \ No newline at end of file diff --git a/src/commands/raffle/SubCommandEnd.java b/src/commands/raffle/SubCommandEnd.java index f7df5b6..0f57d9e 100644 --- a/src/commands/raffle/SubCommandEnd.java +++ b/src/commands/raffle/SubCommandEnd.java @@ -8,13 +8,14 @@ import dataStructures.KittyGuild; import dataStructures.KittyRating; import dataStructures.KittyRole; import dataStructures.KittyUser; +import dataStructures.UserInput; public class SubCommandEnd extends SubCommand { public SubCommandEnd(KittyRole level, KittyRating rating) { super(level, rating); } @Override - public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input) { if(guild.endRaffle()) { diff --git a/src/commands/raffle/SubCommandJoin.java b/src/commands/raffle/SubCommandJoin.java index 98526e7..5ee4d96 100644 --- a/src/commands/raffle/SubCommandJoin.java +++ b/src/commands/raffle/SubCommandJoin.java @@ -3,14 +3,19 @@ package commands.raffle; import core.LocStrings; import core.SubCommand; import core.SubCommandFormattable; -import dataStructures.*; +import dataStructures.KittyChannel; +import dataStructures.KittyGuild; +import dataStructures.KittyRating; +import dataStructures.KittyRole; +import dataStructures.KittyUser; +import dataStructures.UserInput; public class SubCommandJoin extends SubCommand { public SubCommandJoin(KittyRole level, KittyRating rating) { super(level, rating); } @Override - public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input) { if(guild.joinRaffle(user)) { diff --git a/src/commands/raffle/SubCommandSpin.java b/src/commands/raffle/SubCommandSpin.java index c2572de..78fb0b9 100644 --- a/src/commands/raffle/SubCommandSpin.java +++ b/src/commands/raffle/SubCommandSpin.java @@ -8,13 +8,14 @@ import dataStructures.KittyGuild; import dataStructures.KittyRating; import dataStructures.KittyRole; import dataStructures.KittyUser; +import dataStructures.UserInput; public class SubCommandSpin extends SubCommand { public SubCommandSpin(KittyRole level, KittyRating rating) { super(level, rating); } @Override - public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input) { try { diff --git a/src/commands/raffle/SubCommandStart.java b/src/commands/raffle/SubCommandStart.java index 003f3d9..2b99e47 100644 --- a/src/commands/raffle/SubCommandStart.java +++ b/src/commands/raffle/SubCommandStart.java @@ -3,7 +3,12 @@ package commands.raffle; import core.LocStrings; import core.SubCommand; import core.SubCommandFormattable; -import dataStructures.*; +import dataStructures.KittyChannel; +import dataStructures.KittyGuild; +import dataStructures.KittyRating; +import dataStructures.KittyRole; +import dataStructures.KittyUser; +import dataStructures.UserInput; public class SubCommandStart extends SubCommand { @@ -12,11 +17,11 @@ public class SubCommandStart extends SubCommand public int beanCost; @Override - public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input) { try { - beanCost = Integer.parseInt(input); + beanCost = Integer.parseInt(input.args); } catch(Exception e) { diff --git a/src/core/CommandManager.java b/src/core/CommandManager.java index a3c2703..61ca7d3 100644 --- a/src/core/CommandManager.java +++ b/src/core/CommandManager.java @@ -47,6 +47,7 @@ import commands.general.CommandTweet; import commands.general.CommandWolfram; import commands.general.CommandYeet; import commands.guildrole.CommandGuildRoleMain; +import commands.mod.CommandModMain; import commands.poll.CommandPollMain; import commands.raffle.CommandRaffleMain; import dataStructures.KittyChannel; @@ -115,6 +116,7 @@ public class CommandManager // Mod this.register(LocCommands.stub("givebeans"), new CommandGiveBeans(KittyRole.Mod, KittyRating.Safe)); this.register(LocCommands.stub("rpg"), new CommandRPG(KittyRole.Mod, KittyRating.Safe)); + this.register(LocCommands.stub("mod"), new CommandModMain(KittyRole.Mod, KittyRating.Safe)); // General this.register(LocCommands.stub("fetch"), new CommandFetch(KittyRole.General, KittyRating.Safe)); diff --git a/src/core/SubCommand.java b/src/core/SubCommand.java index 6410ff8..e3f3216 100644 --- a/src/core/SubCommand.java +++ b/src/core/SubCommand.java @@ -42,7 +42,7 @@ public abstract class SubCommand // Called by the Command manager - this will run the command // if the issuing user has the permission to do so! - protected final SubCommandFormattable Invoke(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + protected final SubCommandFormattable Invoke(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input) { if(!CanCall(guild, channel, user)) return null; @@ -60,5 +60,5 @@ public abstract class SubCommand return roleLevel; } - public abstract SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input); + public abstract SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input); } \ No newline at end of file diff --git a/src/core/SubCommandFramework.java b/src/core/SubCommandFramework.java index 8af80f5..2d19a51 100644 --- a/src/core/SubCommandFramework.java +++ b/src/core/SubCommandFramework.java @@ -5,6 +5,7 @@ import java.util.HashMap; import dataStructures.KittyChannel; import dataStructures.KittyGuild; import dataStructures.KittyUser; +import dataStructures.UserInput; import utils.GlobalLog; public class SubCommandFramework @@ -25,18 +26,22 @@ public class SubCommandFramework GlobalLog.log("Registered SubCommand " + name); } - public SubCommandFormattable run(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + public SubCommandFormattable run(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input) { - SubCommandFormattable res = null; - try + SubCommand res = commands.get(input.args.split(" ")[0].toLowerCase()); + try { - res = commands.get(input.split(" ")[0].toLowerCase()).Invoke(guild, channel, user, input.substring(input.indexOf(" "))); + input.args = input.args.substring(input.args.indexOf(' ')).trim(); + } + catch(Exception e){} + + try + { + return res.Invoke(guild, channel, user, input); } catch(Exception e) { - res = commands.get(input.split(" ")[0].toLowerCase()).Invoke(guild, channel, user, ""); + return new SubCommandFormattable("That's not a valid subcommand!"); } - - return res; } } \ No newline at end of file diff --git a/src/utils/AdminControl.java b/src/utils/AdminControl.java index bc919d2..ce13637 100644 --- a/src/utils/AdminControl.java +++ b/src/utils/AdminControl.java @@ -39,4 +39,43 @@ public class AdminControl } return true; } + + public boolean kickMember(String memberID) + { + try + { + guildCon.kick(guild.getMemberById(memberID)).complete(); + } + catch(Exception e) + { + return false; + } + return true; + } + + public boolean muteMember(String memberID) + { + try + { + guildCon.setMute(guild.getMemberById(memberID), true); + return true; + } + catch(Exception e) + { + return false; + } + } + + public boolean banMember(String memberID) + { + try + { + guildCon.ban(guild.getMemberById(memberID), 0).complete(); + return true; + } + catch(Exception e) + { + return false; + } + } }