From d6e88aaaf43cfc500344b059fdcdbab45da26bd6 Mon Sep 17 00:00:00 2001 From: Joe Shimell <49585339+JoeShimell@users.noreply.github.com> Date: Thu, 4 Feb 2021 12:51:47 +0000 Subject: [PATCH] on-whitelist command's %PLAYER% variable is no longer converted to lowercase to fix compatibility with case sensitive commands --- .../uk/co/angrybee/joe/DiscordClient.java | 3 +- .../joe/commands/discord/CommandAdd.java | 52 +++++++++---------- .../co/angrybee/joe/stores/RemovedList.java | 3 ++ 3 files changed, 31 insertions(+), 27 deletions(-) diff --git a/src/main/java/uk/co/angrybee/joe/DiscordClient.java b/src/main/java/uk/co/angrybee/joe/DiscordClient.java index cf0480f..ea17f96 100644 --- a/src/main/java/uk/co/angrybee/joe/DiscordClient.java +++ b/src/main/java/uk/co/angrybee/joe/DiscordClient.java @@ -325,6 +325,7 @@ public class DiscordClient extends ListenerAdapter String messageContents = messageReceivedEvent.getMessage().getContentRaw(); String[] splitMessage = messageContents.toLowerCase().trim().split(" "); + String[] splitMessageCaseSensitive = messageContents.trim().split(" "); if(splitMessage.length <= 0) return; @@ -350,7 +351,7 @@ public class DiscordClient extends ListenerAdapter if(!DiscordWhitelister.getUseCustomPrefixes() && splitMessage.length >= whitelistAddPrefix.length && CheckForPrefix(whitelistAddPrefix, splitMessage) || DiscordWhitelister.getUseCustomPrefixes() && splitMessage.length >= customWhitelistAddPrefixSplit.length && CheckForPrefix(customWhitelistAddPrefixSplit, splitMessage)) { - CommandAdd.ExecuteCommand(messageReceivedEvent, splitMessage); + CommandAdd.ExecuteCommand(messageReceivedEvent, splitMessageCaseSensitive); if(DiscordWhitelister.removeUnnecessaryMessages) RemoveMessageAfterSeconds(messageReceivedEvent, DiscordWhitelister.removeMessageWaitTime); diff --git a/src/main/java/uk/co/angrybee/joe/commands/discord/CommandAdd.java b/src/main/java/uk/co/angrybee/joe/commands/discord/CommandAdd.java index 534c57d..b36fd68 100644 --- a/src/main/java/uk/co/angrybee/joe/commands/discord/CommandAdd.java +++ b/src/main/java/uk/co/angrybee/joe/commands/discord/CommandAdd.java @@ -23,7 +23,7 @@ import java.util.concurrent.atomic.AtomicBoolean; public class CommandAdd { - public static void ExecuteCommand(MessageReceivedEvent messageReceivedEvent, String[] splitMessage) + public static void ExecuteCommand(MessageReceivedEvent messageReceivedEvent, String[] splitMessageCaseSensitive) { AuthorPermissions authorPermissions = new AuthorPermissions(messageReceivedEvent); User author = messageReceivedEvent.getAuthor(); @@ -82,14 +82,14 @@ public class CommandAdd if (authorPermissions.isUserCanAddRemove() || authorPermissions.isUserCanAdd() || DiscordClient.limitedWhitelistEnabled && authorPermissions.isUserHasLimitedAdd()) { - if(DiscordWhitelister.getUseCustomPrefixes() && splitMessage.length > (DiscordClient.customWhitelistAddPrefixSplit.length + 2) - || !DiscordWhitelister.getUseCustomPrefixes() && splitMessage.length > (DiscordClient.whitelistAddPrefix.length + 2)) + if(DiscordWhitelister.getUseCustomPrefixes() && splitMessageCaseSensitive.length > (DiscordClient.customWhitelistAddPrefixSplit.length + 2) + || !DiscordWhitelister.getUseCustomPrefixes() && splitMessageCaseSensitive.length > (DiscordClient.whitelistAddPrefix.length + 2)) { int amountOfArgs = 0; if(DiscordWhitelister.getUseCustomPrefixes()) - amountOfArgs = splitMessage.length - (DiscordClient.customWhitelistAddPrefixSplit.length); + amountOfArgs = splitMessageCaseSensitive.length - (DiscordClient.customWhitelistAddPrefixSplit.length); else - amountOfArgs = splitMessage.length - (DiscordClient.whitelistAddPrefix.length); + amountOfArgs = splitMessageCaseSensitive.length - (DiscordClient.whitelistAddPrefix.length); StringBuilder exampleCommand = new StringBuilder(); if(DiscordWhitelister.getUseCustomPrefixes()) @@ -117,15 +117,15 @@ public class CommandAdd return; } - String nameToAdd = ""; - if(DiscordWhitelister.getUseCustomPrefixes() && splitMessage.length >= DiscordClient.customWhitelistAddPrefixSplit.length + 1) - nameToAdd = splitMessage[DiscordClient.customWhitelistAddPrefixSplit.length]; + String nameToAddCaseSensitive = ""; + if(DiscordWhitelister.getUseCustomPrefixes() && splitMessageCaseSensitive.length >= DiscordClient.customWhitelistAddPrefixSplit.length + 1) + nameToAddCaseSensitive = splitMessageCaseSensitive[DiscordClient.customWhitelistAddPrefixSplit.length]; - if(!DiscordWhitelister.getUseCustomPrefixes() && splitMessage.length >= DiscordClient.whitelistAddPrefix.length + 1) - nameToAdd = splitMessage[DiscordClient.whitelistAddPrefix.length]; + if(!DiscordWhitelister.getUseCustomPrefixes() && splitMessageCaseSensitive.length >= DiscordClient.whitelistAddPrefix.length + 1) + nameToAddCaseSensitive = splitMessageCaseSensitive[DiscordClient.whitelistAddPrefix.length]; - final String finalNameToAdd = nameToAdd; - final char[] finalNameToWhitelistChar = finalNameToAdd.toCharArray(); + final String finalNameToAdd = nameToAddCaseSensitive; + final char[] finalNameToWhitelistChar = finalNameToAdd.toLowerCase().toCharArray(); // Lower case for char check int timesWhitelisted = 0; @@ -133,8 +133,8 @@ public class CommandAdd !authorPermissions.isUserCanAddRemove() && !authorPermissions.isUserCanAdd(); boolean discordIdProvided = false; - if(DiscordWhitelister.getUseCustomPrefixes() && splitMessage.length == (DiscordClient.customWhitelistAddPrefixSplit.length + 2) - || !DiscordWhitelister.getUseCustomPrefixes() && splitMessage.length == (DiscordClient.whitelistAddPrefix.length + 2)) + if(DiscordWhitelister.getUseCustomPrefixes() && splitMessageCaseSensitive.length == (DiscordClient.customWhitelistAddPrefixSplit.length + 2) + || !DiscordWhitelister.getUseCustomPrefixes() && splitMessageCaseSensitive.length == (DiscordClient.whitelistAddPrefix.length + 2)) { if(onlyHasLimitedAdd) { @@ -155,7 +155,7 @@ public class CommandAdd String discordIdStripped = ""; if(finalDiscordIdProvided) { - discordIdStripped = splitMessage[DiscordClient.customWhitelistAddPrefixSplit.length + 1]; + discordIdStripped = splitMessageCaseSensitive[DiscordClient.customWhitelistAddPrefixSplit.length + 1]; discordIdStripped = discordIdStripped.replaceAll("<@!",""); discordIdStripped = discordIdStripped.replaceAll(">",""); } @@ -219,8 +219,8 @@ public class CommandAdd } // Command would only be executed if the prefix matched so no need to check contents just length - if (DiscordWhitelister.getUseCustomPrefixes() && splitMessage.length == DiscordClient.customWhitelistAddPrefixSplit.length - || !DiscordWhitelister.getUseCustomPrefixes() && splitMessage.length == DiscordClient.whitelistAddPrefix.length + if (DiscordWhitelister.getUseCustomPrefixes() && splitMessageCaseSensitive.length == DiscordClient.customWhitelistAddPrefixSplit.length + || !DiscordWhitelister.getUseCustomPrefixes() && splitMessageCaseSensitive.length == DiscordClient.whitelistAddPrefix.length || finalNameToAdd.isEmpty()) { if(!MainConfig.getMainConfig().getBoolean("hide-info-command-replies")) @@ -338,14 +338,14 @@ public class CommandAdd if(!DiscordWhitelister.useCustomMessages) { embedBuilderRemovedByStaff = DiscordClient.CreateEmbeddedMessage("This user was previously removed by a staff member", - (author.getAsMention() + ", this user was previously removed by a staff member (<@" + RemovedList.getRemovedPlayers().get(finalNameToAdd) + ">).\n" + + (author.getAsMention() + ", this user was previously removed by a staff member (<@" + RemovedList.getRemovedPlayers().get(finalNameToAdd.toLowerCase()) + ">).\n" + "Please ask a user with higher permissions to add this user.\n"), DiscordClient.EmbedMessageType.FAILURE); } else { String customTitle = DiscordWhitelister.getCustomMessagesConfig().getString("user-was-removed-title"); String customMessage = DiscordWhitelister.getCustomMessagesConfig().getString("user-was-removed"); - String staffMemberMention = "<@" + RemovedList.getRemovedPlayers().get(finalNameToAdd) + ">"; + String staffMemberMention = "<@" + RemovedList.getRemovedPlayers().get(finalNameToAdd.toLowerCase()) + ">"; customMessage = customMessage.replaceAll("\\{Sender}", author.getAsMention()); customMessage = customMessage.replaceAll("\\{StaffMember}", staffMemberMention); @@ -359,7 +359,7 @@ public class CommandAdd } else { - RemovedList.getRemovedPlayers().set(finalNameToAdd, null); + RemovedList.getRemovedPlayers().set(finalNameToAdd.toLowerCase(), null); RemovedList.SaveStore(); DiscordWhitelister.getPlugin().getLogger().info(finalNameToAdd + " has been removed from the removed list by " + author.getName() + "(" + author.getId() + ")"); @@ -369,7 +369,7 @@ public class CommandAdd // In-game list check if(DiscordWhitelister.useInGameAddRemoves) { - if(InGameRemovedList.CheckStoreForPlayer(finalNameToAdd)) + if(InGameRemovedList.CheckStoreForPlayer(finalNameToAdd.toLowerCase())) { if(onlyHasLimitedAdd) { @@ -378,14 +378,14 @@ public class CommandAdd if(!DiscordWhitelister.useCustomMessages) { embedBuilderRemovedByInGameStaff = DiscordClient.CreateEmbeddedMessage("This user was previously removed by a staff member", - (author.getAsMention() + ", this user was previously removed by a staff member in-game (" + InGameRemovedList.getRemovedPlayers().get(finalNameToAdd) + ").\n" + + (author.getAsMention() + ", this user was previously removed by a staff member in-game (" + InGameRemovedList.getRemovedPlayers().get(finalNameToAdd.toLowerCase()) + ").\n" + "Please ask a user with higher permissions to add this user.\n"), DiscordClient.EmbedMessageType.FAILURE); } else { String customTitle = DiscordWhitelister.getCustomMessagesConfig().getString("user-was-removed-in-game-title"); String customMessage = DiscordWhitelister.getCustomMessagesConfig().getString("user-was-removed-in-game"); - String inGameStaffMember = InGameRemovedList.getRemovedPlayers().getString(finalNameToAdd); + String inGameStaffMember = InGameRemovedList.getRemovedPlayers().getString(finalNameToAdd.toLowerCase()); customMessage = customMessage.replaceAll("\\{Sender}", author.getAsMention()); customMessage = customMessage.replaceAll("\\{StaffMember}", inGameStaffMember); @@ -400,7 +400,7 @@ public class CommandAdd } else { - InGameRemovedList.RemoveUserFromStore(finalNameToAdd); + InGameRemovedList.RemoveUserFromStore(finalNameToAdd.toLowerCase()); DiscordWhitelister.getPlugin().getLogger().info(finalNameToAdd + " has been removed from in-game-removed-list.yml by " + author.getName() + "(" + author.getId() + ")"); } @@ -583,11 +583,11 @@ public class CommandAdd { if(!finalDiscordIdProvided) { - UserList.addRegisteredUser(author.getId(), finalNameToAdd); + UserList.addRegisteredUser(author.getId(), finalNameToAdd.toLowerCase()); // convert to lower case for remove & clearname commands } else { - UserList.addRegisteredUser(suppliedMember.getId(), finalNameToAdd); + UserList.addRegisteredUser(suppliedMember.getId(), finalNameToAdd.toLowerCase()); } if(!finalDiscordIdProvided) diff --git a/src/main/java/uk/co/angrybee/joe/stores/RemovedList.java b/src/main/java/uk/co/angrybee/joe/stores/RemovedList.java index e452f2f..0977971 100644 --- a/src/main/java/uk/co/angrybee/joe/stores/RemovedList.java +++ b/src/main/java/uk/co/angrybee/joe/stores/RemovedList.java @@ -70,6 +70,9 @@ public class RemovedList // Returns true if the player is in the store/list public static boolean CheckStoreForPlayer(String nameToCheck) { + // Removed list is case-insensitive, can change in the future if needed + nameToCheck = nameToCheck.toLowerCase(); + LoadStore(); return removedPlayersConfig.get(nameToCheck) != null; }