Fix for whitelisting amount issue, option to delete unneeded messages after a set amount of time, option to hide info commands

This commit is contained in:
Joe Shimell 2021-02-03 11:33:33 +00:00
parent eb2d033b7b
commit 40250fc1ab
10 changed files with 311 additions and 96 deletions

View File

@ -6,7 +6,7 @@
<groupId>uk.co.angrybee.joe</groupId>
<artifactId>discord-whitelister</artifactId>
<version>1.4.4</version>
<version>1.4.5</version>
<name>discord-whitelister</name>
<url>https://github.com/JoeShimell/DiscordWhitelisterSpigot</url>

View File

@ -27,10 +27,12 @@ import uk.co.angrybee.joe.stores.WhitelistedPlayers;
import javax.annotation.Nonnull;
import javax.security.auth.login.LoginException;
import javax.xml.soap.Text;
import java.awt.Color;
import java.io.*;
import java.net.URL;
import java.util.*;
import java.util.concurrent.TimeUnit;
// handles Discord interaction
public class DiscordClient extends ListenerAdapter
@ -330,13 +332,18 @@ public class DiscordClient extends ListenerAdapter
// TODO remove, use in command classes when complete
AuthorPermissions authorPermissions = new AuthorPermissions(messageReceivedEvent);
User author = messageReceivedEvent.getAuthor();
//String messageContents = messageReceivedEvent.getMessage().getContentDisplay(); // used above
TextChannel channel = messageReceivedEvent.getTextChannel();
// determine which command to run
if (splitMessage.length == 1 && CheckForPrefix(whitelistInfoPrefix, splitMessage))
{
if(MainConfig.getMainConfig().getBoolean("hide-info-command-replies"))
return;
CommandInfo.ExecuteCommand(messageReceivedEvent);
if(DiscordWhitelister.removeUnnecessaryMessages)
RemoveMessageAfterSeconds(messageReceivedEvent, DiscordWhitelister.removeMessageWaitTime);
return;
}
@ -344,6 +351,9 @@ public class DiscordClient extends ListenerAdapter
|| DiscordWhitelister.getUseCustomPrefixes() && splitMessage.length >= customWhitelistAddPrefixSplit.length && CheckForPrefix(customWhitelistAddPrefixSplit, splitMessage))
{
CommandAdd.ExecuteCommand(messageReceivedEvent, splitMessage);
if(DiscordWhitelister.removeUnnecessaryMessages)
RemoveMessageAfterSeconds(messageReceivedEvent, DiscordWhitelister.removeMessageWaitTime);
return;
}
@ -375,7 +385,10 @@ public class DiscordClient extends ListenerAdapter
if (finalNameToRemove.isEmpty())
{
channel.sendMessage(removeCommandInfo).queue();
if(!MainConfig.getMainConfig().getBoolean("hide-info-command-replies"))
QueueAndRemoveAfterSeconds(channel, removeCommandInfo);
TempRemoveOriginalMessageAfterSeconds(messageReceivedEvent);
return;
}
else
@ -390,7 +403,11 @@ public class DiscordClient extends ListenerAdapter
if(!DiscordWhitelister.useCustomMessages)
{
channel.sendMessage(CreateEmbeddedMessage("This user is not on the whitelist", (author.getAsMention() + ", cannot remove user as `" + finalNameToRemove + "` is not on the whitelist!"), EmbedMessageType.INFO).build()).queue();
MessageEmbed messageEmbed = CreateEmbeddedMessage("This user is not on the whitelist",
(author.getAsMention() + ", cannot remove user as `" + finalNameToRemove + "` is not on the whitelist!"), EmbedMessageType.INFO).build();
QueueAndRemoveAfterSeconds(channel, messageEmbed);
TempRemoveOriginalMessageAfterSeconds(messageReceivedEvent);
// Return below
}
else
{
@ -399,7 +416,9 @@ public class DiscordClient extends ListenerAdapter
customMessage = customMessage.replaceAll("\\{Sender}", author.getAsMention());
customMessage = customMessage.replaceAll("\\{MinecraftUsername}", finalNameToRemove);
channel.sendMessage(CreateEmbeddedMessage(customTitle, customMessage, EmbedMessageType.INFO).build()).queue();
MessageEmbed messageEmbed = CreateEmbeddedMessage(customTitle, customMessage, EmbedMessageType.INFO).build();
QueueAndRemoveAfterSeconds(channel, messageEmbed);
TempRemoveOriginalMessageAfterSeconds(messageReceivedEvent);
}
}
@ -416,7 +435,10 @@ public class DiscordClient extends ListenerAdapter
if(!DiscordWhitelister.useCustomMessages)
{
embedBuilderSuccess = CreateEmbeddedMessage((finalNameToRemove + " has been removed"), (author.getAsMention() + " has removed `" + finalNameToRemove + "` from the whitelist."), EmbedMessageType.SUCCESS);
if(!MainConfig.getMainConfig().getBoolean("set-removed-message-colour-to-red"))
embedBuilderSuccess = CreateEmbeddedMessage((finalNameToRemove + " has been removed"), (author.getAsMention() + " has removed `" + finalNameToRemove + "` from the whitelist."), EmbedMessageType.SUCCESS);
else
embedBuilderSuccess = CreateEmbeddedMessage((finalNameToRemove + " has been removed"), (author.getAsMention() + " has removed `" + finalNameToRemove + "` from the whitelist."), EmbedMessageType.FAILURE);
}
else
{
@ -427,7 +449,16 @@ public class DiscordClient extends ListenerAdapter
customMessage = customMessage.replaceAll("\\{Sender}", author.getAsMention());
customMessage = customMessage.replaceAll("\\{MinecraftUsername}", finalNameToRemove);
embedBuilderSuccess = CreateEmbeddedMessage(customTitle, customMessage, EmbedMessageType.SUCCESS);
if(!MainConfig.getMainConfig().getBoolean("set-removed-message-colour-to-red"))
embedBuilderSuccess = CreateEmbeddedMessage(customTitle, customMessage, EmbedMessageType.SUCCESS);
else
embedBuilderSuccess = CreateEmbeddedMessage(customTitle, customMessage, EmbedMessageType.FAILURE);
}
if(DiscordWhitelister.showPlayerSkin)
{
String playerUUID = DiscordClient.minecraftUsernameToUUID(finalNameToRemove);
embedBuilderSuccess.setThumbnail("https://minotar.net/armor/bust/" + playerUUID + "/100.png");
}
EmbedBuilder embedBuilderFailure;
@ -442,6 +473,7 @@ public class DiscordClient extends ListenerAdapter
|| !WhitelistedPlayers.usingEasyWhitelist && !WhitelistedPlayers.CheckForPlayer(finalNameToRemove))
{
channel.sendMessage(embedBuilderSuccess.build()).queue();
TempRemoveOriginalMessageAfterSeconds(messageReceivedEvent);
if(DiscordWhitelister.useUltraPerms)
{
@ -525,14 +557,17 @@ public class DiscordClient extends ListenerAdapter
}
else
{
channel.sendMessage(embedBuilderFailure.build()).queue();
QueueAndRemoveAfterSeconds(channel, embedBuilderFailure.build());
TempRemoveOriginalMessageAfterSeconds(messageReceivedEvent);
}
return null;
});
return;
}
return;
}
}
if (authorPermissions.isUserCanAdd() && !authorPermissions.isUserCanAddRemove())
@ -558,12 +593,14 @@ public class DiscordClient extends ListenerAdapter
embedBuilderInfo = CreateEmbeddedMessage(customTitle, customMessage, EmbedMessageType.INFO);
}
channel.sendMessage(embedBuilderInfo.build()).queue();
QueueAndRemoveAfterSeconds(channel, embedBuilderInfo.build());
TempRemoveOriginalMessageAfterSeconds(messageReceivedEvent);
return;
}
// if the user doesn't have any allowed roles
channel.sendMessage(CreateInsufficientPermsMessage(author)).queue();
QueueAndRemoveAfterSeconds(channel, CreateInsufficientPermsMessage(author));
//TempRemoveOriginalMessageAfterSeconds(messageReceivedEvent);
}
// Clear Whitelists command
@ -579,11 +616,24 @@ public class DiscordClient extends ListenerAdapter
if(messageContents.toLowerCase().trim().equals("!clearname") && !DiscordWhitelister.getUseCustomPrefixes()
|| messageContents.toLowerCase().trim().equals(customClearNamePrefix) && DiscordWhitelister.getUseCustomPrefixes())
{
if(!DiscordWhitelister.getUseCustomPrefixes())
channel.sendMessage(CreateEmbeddedMessage("Clear Name Command", "Usage: `!clearname <minecraftUsername>`\n", EmbedMessageType.INFO).build()).queue();
else
channel.sendMessage(CreateEmbeddedMessage("Clear Name Command", "Usage: `" + customClearNamePrefix + " <minecraftUsername>`\n", EmbedMessageType.INFO).build()).queue();
if(!MainConfig.getMainConfig().getBoolean("hide-info-command-replies"))
{
TempRemoveOriginalMessageAfterSeconds(messageReceivedEvent);
return;
}
if(!DiscordWhitelister.getUseCustomPrefixes())
{
MessageEmbed messageEmbed = CreateEmbeddedMessage("Clear Name Command", "Usage: `!clearname <minecraftUsername>`\n", EmbedMessageType.INFO).build();
QueueAndRemoveAfterSeconds(channel, messageEmbed);
}
else
{
MessageEmbed messageEmbed = CreateEmbeddedMessage("Clear Name Command", "Usage: `" + customClearNamePrefix + " <minecraftUsername>`\n", EmbedMessageType.INFO).build();
QueueAndRemoveAfterSeconds(channel, messageEmbed);
}
TempRemoveOriginalMessageAfterSeconds(messageReceivedEvent);
return;
}
@ -691,20 +741,28 @@ public class DiscordClient extends ListenerAdapter
clearNameTitle = clearNameTitle.replaceAll("\\{MinecraftUsername}", splitMessage[userNameIndex]);
channel.sendMessage(CreateEmbeddedMessage(clearNameTitle, clearNameMessage, EmbedMessageType.SUCCESS).build()).queue();
MessageEmbed messageEmbed = CreateEmbeddedMessage(clearNameTitle, clearNameMessage, EmbedMessageType.SUCCESS).build();
QueueAndRemoveAfterSeconds(channel, messageEmbed);
}
else
{
channel.sendMessage(CreateEmbeddedMessage("Successfully Cleared Name", (author.getAsMention() + " successfully cleared username `" + splitMessage[userNameIndex] +
"` from <@" + targetDiscordId + ">'s whitelisted users."), EmbedMessageType.SUCCESS).build()).queue();
MessageEmbed messageEmbed = CreateEmbeddedMessage("Successfully Cleared Name", (author.getAsMention() + " successfully cleared username `" + splitMessage[userNameIndex] +
"` from <@" + targetDiscordId + ">'s whitelisted users."), EmbedMessageType.SUCCESS).build();
QueueAndRemoveAfterSeconds(channel, messageEmbed);
}
TempRemoveOriginalMessageAfterSeconds(messageReceivedEvent);
return;
}
else
{
// Name not found
if(!DiscordWhitelister.useCustomMessages)
{
channel.sendMessage(CreateEmbeddedMessage((splitMessage[userNameIndex] + " not Found"), (author.getAsMention() + ", could not find name " + splitMessage[userNameIndex] + " to clear in user list."), EmbedMessageType.FAILURE).build()).queue();
MessageEmbed messageEmbed =
CreateEmbeddedMessage((splitMessage[userNameIndex] + " not Found"),
(author.getAsMention() + ", could not find name " + splitMessage[userNameIndex] + " to clear in user list."), EmbedMessageType.FAILURE).build();
QueueAndRemoveAfterSeconds(channel, messageEmbed);
}
else
{
@ -714,13 +772,18 @@ public class DiscordClient extends ListenerAdapter
customMessage = customMessage.replaceAll("\\{MinecraftUsername}", splitMessage[userNameIndex]);
customTitle = customTitle.replaceAll("\\{MinecraftUsername}", splitMessage[userNameIndex]);
channel.sendMessage(CreateEmbeddedMessage(customTitle, customMessage, EmbedMessageType.FAILURE).build()).queue();
MessageEmbed messageEmbed = CreateEmbeddedMessage(customTitle, customMessage, EmbedMessageType.FAILURE).build();
QueueAndRemoveAfterSeconds(channel, messageEmbed);
}
TempRemoveOriginalMessageAfterSeconds(messageReceivedEvent);
return;
}
}
else // Don't have permission
{
channel.sendMessage(CreateInsufficientPermsMessage(author)).queue();
QueueAndRemoveAfterSeconds(channel, CreateInsufficientPermsMessage(author));
TempRemoveOriginalMessageAfterSeconds(messageReceivedEvent);
return;
}
}
@ -735,8 +798,10 @@ public class DiscordClient extends ListenerAdapter
// just inform staff, can add custom messages later if really needed
if(authorPermissions.isUserCanAddRemove() && !authorPermissions.isUserIsBanned() || authorPermissions.isUserCanAdd() && !authorPermissions.isUserIsBanned())
{
channel.sendMessage(CreateEmbeddedMessage("This Command is Only Available for Limited Whitelister Roles",
"If staff members need to clear a name from the whitelist please use `!clearname <mcName>`.", EmbedMessageType.INFO).build()).queue();
MessageEmbed messageEmbed = CreateEmbeddedMessage("This Command is Only Available for Limited Whitelister Roles",
"If staff members need to clear a name from the whitelist please use `!clearname <mcName>`.", EmbedMessageType.INFO).build();
QueueAndRemoveAfterSeconds(channel, messageEmbed);
TempRemoveOriginalMessageAfterSeconds(messageReceivedEvent);
return;
}
@ -783,8 +848,9 @@ public class DiscordClient extends ListenerAdapter
}
message += "\n You now have **" + maxWhitelistAmount + " whitelist(s) remaining**.";
channel.sendMessage(CreateEmbeddedMessage(("Successfully Removed " + author.getName() + "'s Whitelisted Entries"),
message, EmbedMessageType.FAILURE).build()).queue();
MessageEmbed messageEmbed = CreateEmbeddedMessage(("Successfully Removed " + author.getName() + "'s Whitelisted Entries"),
message, EmbedMessageType.FAILURE).build();
QueueAndRemoveAfterSeconds(channel, messageEmbed);
}
else
{
@ -802,7 +868,8 @@ public class DiscordClient extends ListenerAdapter
customMessage = customMessage.replaceAll("\\{RemovedEntries}", removedNames);
customMessage = customMessage.replaceAll("\\{MaxWhitelistAmount}", String.valueOf(maxWhitelistAmount));
channel.sendMessage(CreateEmbeddedMessage(customTitle,customMessage,EmbedMessageType.SUCCESS).build()).queue();
MessageEmbed messageEmbed = CreateEmbeddedMessage(customTitle,customMessage,EmbedMessageType.SUCCESS).build();
QueueAndRemoveAfterSeconds(channel, messageEmbed);
}
if(MainConfig.getMainConfig().getBoolean("whitelisted-role-auto-remove"))
@ -814,6 +881,9 @@ public class DiscordClient extends ListenerAdapter
RemoveRolesFromUser(javaDiscordAPI.getGuilds().get(i), author.getId(), Arrays.asList(whitelistedRoleNames));
}
}
TempRemoveOriginalMessageAfterSeconds(messageReceivedEvent);
return;
}
else
{
@ -823,8 +893,9 @@ public class DiscordClient extends ListenerAdapter
// Log in Discord channel
if(!DiscordWhitelister.useCustomMessages)
{
channel.sendMessage(CreateEmbeddedMessage("No Entries to Remove",
(author.getAsMention() + ", you do not have any whitelisted entries to remove."), EmbedMessageType.FAILURE).build()).queue();
MessageEmbed messageEmbed = CreateEmbeddedMessage("No Entries to Remove",
(author.getAsMention() + ", you do not have any whitelisted entries to remove."), EmbedMessageType.FAILURE).build();
QueueAndRemoveAfterSeconds(channel, messageEmbed);
}
else
{
@ -832,14 +903,19 @@ public class DiscordClient extends ListenerAdapter
String customMessage = DiscordWhitelister.getCustomMessagesConfig().getString("whitelist-clear-failure-message");
customMessage = customMessage.replaceAll("\\{Sender}", author.getAsMention());
channel.sendMessage(CreateEmbeddedMessage(customTitle, customMessage, EmbedMessageType.FAILURE).build()).queue();
MessageEmbed messageEmbed = CreateEmbeddedMessage(customTitle, customMessage, EmbedMessageType.FAILURE).build();
QueueAndRemoveAfterSeconds(channel, messageEmbed);
}
TempRemoveOriginalMessageAfterSeconds(messageReceivedEvent);
return;
}
}
if(!authorPermissions.isUserCanAddRemove() && !authorPermissions.isUserCanAdd() && !authorPermissions.isUserHasLimitedAdd() || authorPermissions.isUserIsBanned())
{
channel.sendMessage(CreateInsufficientPermsMessage(author)).queue();
QueueAndRemoveAfterSeconds(channel, CreateInsufficientPermsMessage(author));
TempRemoveOriginalMessageAfterSeconds(messageReceivedEvent);
return;
}
}
@ -853,12 +929,25 @@ public class DiscordClient extends ListenerAdapter
if(messageContents.toLowerCase().trim().equals("!clearban") && !DiscordWhitelister.getUseCustomPrefixes()
|| messageContents.toLowerCase().trim().equals(customClearBanPrefix) && DiscordWhitelister.getUseCustomPrefixes())
{
if(!MainConfig.getMainConfig().getBoolean("hide-info-command-replies"))
{
TempRemoveOriginalMessageAfterSeconds(messageReceivedEvent);
return;
}
// Send info message
if(!DiscordWhitelister.getUseCustomPrefixes())
channel.sendMessage(CreateEmbeddedMessage("Clear Ban Command", "Usage: `!clearban <minecraftUsername>`\n", EmbedMessageType.INFO).build()).queue();
{
MessageEmbed messageEmbed = CreateEmbeddedMessage("Clear Ban Command", "Usage: `!clearban <minecraftUsername>`\n", EmbedMessageType.INFO).build();
QueueAndRemoveAfterSeconds(channel, messageEmbed);
}
else
channel.sendMessage(CreateEmbeddedMessage("Clear Ban Command", "Usage: `" + customClearBanPrefix + " <minecraftUsername>`\n", EmbedMessageType.INFO).build()).queue();
{
MessageEmbed messageEmbed = CreateEmbeddedMessage("Clear Ban Command", "Usage: `" + customClearBanPrefix + " <minecraftUsername>`\n", EmbedMessageType.INFO).build();
QueueAndRemoveAfterSeconds(channel, messageEmbed);
}
TempRemoveOriginalMessageAfterSeconds(messageReceivedEvent);
return;
}
@ -900,8 +989,9 @@ public class DiscordClient extends ListenerAdapter
if(!DiscordWhitelister.useCustomMessages)
{
channel.sendMessage(CreateEmbeddedMessage(("Successfully Cleared `" + targetName + "`"),
(author.getAsMention() + " has successfully cleared `" + targetName + "` from the removed list(s)."), EmbedMessageType.SUCCESS).build()).queue();
MessageEmbed messageEmbed = CreateEmbeddedMessage(("Successfully Cleared `" + targetName + "`"),
(author.getAsMention() + " has successfully cleared `" + targetName + "` from the removed list(s)."), EmbedMessageType.SUCCESS).build();
QueueAndRemoveAfterSeconds(channel, messageEmbed);
}
else
{
@ -911,17 +1001,20 @@ public class DiscordClient extends ListenerAdapter
customMessage = customMessage.replaceAll("\\{MinecraftUsername}", targetName);
customTitle = customTitle.replaceAll("\\{MinecraftUsername}", targetName);
channel.sendMessage(CreateEmbeddedMessage(customTitle, customMessage, EmbedMessageType.INFO).build()).queue();
MessageEmbed messageEmbed = CreateEmbeddedMessage(customTitle, customMessage, EmbedMessageType.INFO).build();
QueueAndRemoveAfterSeconds(channel, messageEmbed);
}
TempRemoveOriginalMessageAfterSeconds(messageReceivedEvent);
return;
}
else
{
if(!DiscordWhitelister.useCustomMessages)
{
channel.sendMessage(CreateEmbeddedMessage(("Failed to Clear `" + targetName + "`"),
(author.getAsMention() + ", `" + targetName + "` cannot be found in any of the removed lists!"), EmbedMessageType.FAILURE).build()).queue();
MessageEmbed messageEmbed = CreateEmbeddedMessage(("Failed to Clear `" + targetName + "`"),
(author.getAsMention() + ", `" + targetName + "` cannot be found in any of the removed lists!"), EmbedMessageType.FAILURE).build();
QueueAndRemoveAfterSeconds(channel, messageEmbed);
}
else
{
@ -931,15 +1024,18 @@ public class DiscordClient extends ListenerAdapter
customMessage = customMessage.replaceAll("\\{MinecraftUsername}", targetName);
customTitle = customTitle.replaceAll("\\{MinecraftUsername}", targetName);
channel.sendMessage(CreateEmbeddedMessage(customTitle, customMessage, EmbedMessageType.FAILURE).build()).queue();
MessageEmbed messageEmbed = CreateEmbeddedMessage(customTitle, customMessage, EmbedMessageType.FAILURE).build();
QueueAndRemoveAfterSeconds(channel, messageEmbed);
}
TempRemoveOriginalMessageAfterSeconds(messageReceivedEvent);
return;
}
}
else
{
channel.sendMessage(CreateInsufficientPermsMessage(author));
QueueAndRemoveAfterSeconds(channel, CreateInsufficientPermsMessage(author));
TempRemoveOriginalMessageAfterSeconds(messageReceivedEvent);
return;
}
}
@ -948,8 +1044,37 @@ public class DiscordClient extends ListenerAdapter
|| DiscordWhitelister.getUseCustomPrefixes() && splitMessage.length >= customWhoIsPrefix.length && CheckForPrefix(customWhoIsPrefix, splitMessage))
{
CommandWhoIs.ExecuteCommand(messageReceivedEvent, splitMessage);
if(DiscordWhitelister.removeUnnecessaryMessages)
RemoveMessageAfterSeconds(messageReceivedEvent, DiscordWhitelister.removeMessageWaitTime);
return;
}
// if no commands are executed, delete the message, if enabled
if(DiscordWhitelister.removeUnnecessaryMessages)
{
RemoveMessageAfterSeconds(messageReceivedEvent, DiscordWhitelister.removeMessageWaitTime);
if(MainConfig.getMainConfig().getBoolean("show-warning-in-command-channel"))
{
if(!DiscordWhitelister.useCustomMessages)
{
MessageEmbed messageEmbed = CreateEmbeddedMessage("This Channel is for Commands Only", (author.getAsMention() + ", this channel is for commands only, please use another channel."),
EmbedMessageType.FAILURE).build();
QueueAndRemoveAfterSeconds(channel, messageEmbed);
}
else
{
String customTitle = DiscordWhitelister.getCustomMessagesConfig().getString("command-channel-title");
String customMessage = DiscordWhitelister.getCustomMessagesConfig().getString("command-channel-message");
customMessage = customMessage.replaceAll("\\{Sender}", author.getAsMention());
MessageEmbed messageEmbed = DiscordClient.CreateEmbeddedMessage(customTitle, customMessage, DiscordClient.EmbedMessageType.FAILURE).build();
QueueAndRemoveAfterSeconds(channel, messageEmbed);
}
}
}
}
}
@ -1295,6 +1420,60 @@ public class DiscordClient extends ListenerAdapter
}
}
public static void RemoveMessageAfterSeconds(MessageReceivedEvent messageReceivedEvent, Integer timeToWait)
{
Thread removeTimerThread = new Thread(() ->
{
try
{
TimeUnit.SECONDS.sleep(timeToWait);
messageReceivedEvent.getMessage().delete().queue();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
});
removeTimerThread.start();
}
// public static void SendAndRemoveMessagesAfterSeconds(MessageReceivedEvent messageReceivedEvent, List<Object> messages, Integer timeToWait)
// {
// TextChannel textChannel = messageReceivedEvent.getTextChannel();
//
// for (Object o : messages)
// {
// // Only Remove supplied Messages
// if(o instanceof Message)
// {
// if(DiscordWhitelister.removeUnnecessaryMessages)
// RemoveMessageAfterSeconds(messageReceivedEvent, DiscordWhitelister.removeMessageWaitTime);
// }
// else if(o instanceof MessageEmbed)
// {
// if(DiscordWhitelister.removeUnnecessaryMessages)
// textChannel.sendMessage((MessageEmbed) o).queue(message -> message.delete().queueAfter(timeToWait, TimeUnit.SECONDS));
// else
// textChannel.sendMessage((MessageEmbed) o).queue();
// }
// }
// }
public static void QueueAndRemoveAfterSeconds(TextChannel textChannel, MessageEmbed messageEmbed)
{
if(DiscordWhitelister.removeUnnecessaryMessages)
textChannel.sendMessage(messageEmbed).queue(message -> message.delete().queueAfter(DiscordWhitelister.removeMessageWaitTime, TimeUnit.SECONDS));
else
textChannel.sendMessage(messageEmbed).queue();
}
public static void TempRemoveOriginalMessageAfterSeconds(MessageReceivedEvent messageReceivedEvent)
{
if(DiscordWhitelister.removeUnnecessaryMessages)
RemoveMessageAfterSeconds(messageReceivedEvent, DiscordWhitelister.removeMessageWaitTime);
}
// TODO: improve, not go through console commands
// For ultra perms
public static void AssignPermsToUser(String targetPlayerName, List<String> permsToAssign)

View File

@ -34,6 +34,7 @@ public class DiscordWhitelister extends JavaPlugin
public static boolean useOnBanEvents = true;
public static boolean useUltraPerms = false;
public static boolean useOnWhitelistCommands = false;
public static boolean removeUnnecessaryMessages = false;
public static boolean botEnabled;
@ -46,6 +47,8 @@ public class DiscordWhitelister extends JavaPlugin
// For not counting vanished players when other players join/leave
private static int vanishedPlayersCount;
public static int removeMessageWaitTime = 5;
@Override
public void onEnable()
{
@ -121,6 +124,9 @@ public class DiscordWhitelister extends JavaPlugin
showVanishedPlayersInCount = MainConfig.getMainConfig().getBoolean("show-vanished-players-in-player-count");
useInGameAddRemoves = MainConfig.getMainConfig().getBoolean("add-in-game-adds-and-removes-to-list");
useOnBanEvents = MainConfig.getMainConfig().getBoolean("use-on-ban-events");
removeUnnecessaryMessages = MainConfig.getMainConfig().getBoolean("remove-unnecessary-messages-from-whitelist-channel");
removeMessageWaitTime = MainConfig.getMainConfig().getInt("seconds-to-remove-message-from-whitelist-channel");
// Check for UltraPerms first
if(MainConfig.getMainConfig().getBoolean("assign-perms-with-ultra-perms"))

View File

@ -10,5 +10,5 @@ public class VersionInfo
return "v." + getVersion();
}
private static String version = "1.4.4";
private static String version = "1.4.5";
}

View File

@ -1,10 +1,7 @@
package uk.co.angrybee.joe.commands.discord;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.Role;
import net.dv8tion.jda.api.entities.TextChannel;
import net.dv8tion.jda.api.entities.User;
import net.dv8tion.jda.api.entities.*;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import uk.co.angrybee.joe.AuthorPermissions;
import uk.co.angrybee.joe.DiscordClient;
@ -20,6 +17,7 @@ import uk.co.angrybee.joe.stores.WhitelistedPlayers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
@ -36,7 +34,10 @@ public class CommandAdd
{
if(!DiscordWhitelister.useCustomMessages)
{
channel.sendMessage(DiscordClient.CreateEmbeddedMessage("You have been banned!", (author.getAsMention() + ", you cannot use this bot as you have been banned!"), DiscordClient.EmbedMessageType.FAILURE).build()).queue();
MessageEmbed messageEmbed =
DiscordClient.CreateEmbeddedMessage("You have been banned!", (author.getAsMention() + ", you cannot use this bot as you have been banned!"), DiscordClient.EmbedMessageType.FAILURE).build();
DiscordClient.QueueAndRemoveAfterSeconds(channel, messageEmbed);
}
else
{
@ -44,16 +45,16 @@ public class CommandAdd
String customMessage = DiscordWhitelister.getCustomMessagesConfig().getString("banned-message");
customMessage = customMessage.replaceAll("\\{Sender}", author.getAsMention()); // Only checking for {Sender}
channel.sendMessage(DiscordClient.CreateEmbeddedMessage(customTitle, customMessage, DiscordClient.EmbedMessageType.FAILURE).build()).queue();
MessageEmbed messageEmbed = DiscordClient.CreateEmbeddedMessage(customTitle, customMessage, DiscordClient.EmbedMessageType.FAILURE).build();
DiscordClient.QueueAndRemoveAfterSeconds(channel, messageEmbed);
}
return;
}
// Permission check
if (!(authorPermissions.isUserCanAddRemove() || authorPermissions.isUserCanAdd() || DiscordClient.limitedWhitelistEnabled && authorPermissions.isUserHasLimitedAdd()))
{
channel.sendMessage(DiscordClient.CreateInsufficientPermsMessage(author)).queue();
DiscordClient.QueueAndRemoveAfterSeconds(channel, DiscordClient.CreateInsufficientPermsMessage(author));
return;
}
@ -107,10 +108,12 @@ public class CommandAdd
}
exampleCommand.append("<minecraftUsername> <@discordMention>");
channel.sendMessage(DiscordClient.CreateEmbeddedMessage("Too many arguments",
MessageEmbed messageEmbed = DiscordClient.CreateEmbeddedMessage("Too many arguments",
(author.getAsMention() + ", expected 1 or 2 arguments but found " + amountOfArgs + ".\n" +
"Example: " + exampleCommand.toString() + "\n\n **NOTE:** Only staff members may use the <@discordMention> parameter."),
DiscordClient.EmbedMessageType.FAILURE).build()).queue();
DiscordClient.EmbedMessageType.FAILURE).build();
DiscordClient.QueueAndRemoveAfterSeconds(channel, messageEmbed);
return;
}
@ -135,9 +138,10 @@ public class CommandAdd
{
if(onlyHasLimitedAdd)
{
channel.sendMessage(DiscordClient.CreateEmbeddedMessage("Insufficient Permissions",
(author.getAsMention() + ", only staff members can manually link Discord IDs. Please only enter your Minecraft name."), DiscordClient.EmbedMessageType.FAILURE).build()).queue();
MessageEmbed messageEmbed = DiscordClient.CreateEmbeddedMessage("Insufficient Permissions",
(author.getAsMention() + ", only staff members can manually link Discord IDs. Please only enter your Minecraft name."), DiscordClient.EmbedMessageType.FAILURE).build();
DiscordClient.QueueAndRemoveAfterSeconds(channel, messageEmbed);
return;
}
else
@ -161,10 +165,11 @@ public class CommandAdd
if(finalDiscordIdProvided && suppliedMember == null)
{
channel.sendMessage(DiscordClient.CreateEmbeddedMessage("Discord ID not found in Guild or is incorrect",
MessageEmbed messageEmbed = DiscordClient.CreateEmbeddedMessage("Discord ID not found in Guild or is incorrect",
(author.getAsMention() + ", the ID supplied (`" + discordIdStripped + "`) could not be located in this Discord Server/Guild."),
DiscordClient.EmbedMessageType.FAILURE).build()).queue();
DiscordClient.EmbedMessageType.FAILURE).build();
DiscordClient.QueueAndRemoveAfterSeconds(channel, messageEmbed);
return;
}
@ -194,8 +199,9 @@ public class CommandAdd
{
if(!DiscordWhitelister.useCustomMessages)
{
channel.sendMessage(DiscordClient.CreateEmbeddedMessage("No Whitelists Remaining", (author.getAsMention() + ", unable to whitelist. You have **" + (DiscordClient.maxWhitelistAmount - timesWhitelisted)
+ " out of " + DiscordClient.maxWhitelistAmount + "** whitelists remaining."), DiscordClient.EmbedMessageType.INFO).build()).queue();
MessageEmbed messageEmbed = DiscordClient.CreateEmbeddedMessage("No Whitelists Remaining", (author.getAsMention() + ", unable to whitelist. You have **" + (DiscordClient.maxWhitelistAmount - timesWhitelisted)
+ " out of " + DiscordClient.maxWhitelistAmount + "** whitelists remaining."), DiscordClient.EmbedMessageType.INFO).build();
DiscordClient.QueueAndRemoveAfterSeconds(channel, messageEmbed);
}
else
{
@ -205,7 +211,8 @@ public class CommandAdd
customMessage = customMessage.replaceAll("\\{RemainingWhitelists}", String.valueOf((DiscordClient.maxWhitelistAmount - timesWhitelisted)));
customMessage = customMessage.replaceAll("\\{MaxWhitelistAmount}", String.valueOf(DiscordClient.maxWhitelistAmount));
channel.sendMessage(DiscordClient.CreateEmbeddedMessage(customTitle, customMessage, DiscordClient.EmbedMessageType.INFO).build()).queue();
MessageEmbed messageEmbed = DiscordClient.CreateEmbeddedMessage(customTitle, customMessage, DiscordClient.EmbedMessageType.INFO).build();
DiscordClient.QueueAndRemoveAfterSeconds(channel, messageEmbed);
}
return;
@ -216,7 +223,8 @@ public class CommandAdd
|| !DiscordWhitelister.getUseCustomPrefixes() && splitMessage.length == DiscordClient.whitelistAddPrefix.length
|| finalNameToAdd.isEmpty())
{
channel.sendMessage(DiscordClient.addCommandInfo).queue();
if(!MainConfig.getMainConfig().getBoolean("hide-info-command-replies"))
DiscordClient.QueueAndRemoveAfterSeconds(channel, DiscordClient.addCommandInfo);
}
else
{
@ -247,7 +255,7 @@ public class CommandAdd
DiscordClient.AddWhitelistRemainingCount(embedBuilderInvalidChar, timesWhitelisted);
}
channel.sendMessage(embedBuilderInvalidChar.build()).queue();
DiscordClient.QueueAndRemoveAfterSeconds(channel, embedBuilderInvalidChar.build());
return;
}
}
@ -275,7 +283,7 @@ public class CommandAdd
DiscordClient.AddWhitelistRemainingCount(embedBuilderLengthInvalid, timesWhitelisted);
}
channel.sendMessage(embedBuilderLengthInvalid.build()).queue();
DiscordClient.QueueAndRemoveAfterSeconds(channel, embedBuilderLengthInvalid.build());
return;
}
}
@ -303,7 +311,10 @@ public class CommandAdd
{
if(!DiscordWhitelister.useCustomMessages)
{
channel.sendMessage(DiscordClient.CreateEmbeddedMessage("User already on the whitelist", (author.getAsMention() + ", cannot add user as `" + finalNameToAdd + "` is already on the whitelist!"), DiscordClient.EmbedMessageType.INFO).build()).queue();
MessageEmbed messageEmbed =
DiscordClient.CreateEmbeddedMessage("User already on the whitelist",
(author.getAsMention() + ", cannot add user as `" + finalNameToAdd + "` is already on the whitelist!"), DiscordClient.EmbedMessageType.INFO).build();
DiscordClient.QueueAndRemoveAfterSeconds(channel, messageEmbed);
}
else
{
@ -312,7 +323,8 @@ public class CommandAdd
customMessage = customMessage.replaceAll("\\{Sender}", author.getAsMention());
customMessage = customMessage.replaceAll("\\{MinecraftUsername}", finalNameToAdd);
channel.sendMessage(DiscordClient.CreateEmbeddedMessage(customTitle, customMessage, DiscordClient.EmbedMessageType.INFO).build()).queue();
MessageEmbed messageEmbed = DiscordClient.CreateEmbeddedMessage(customTitle, customMessage, DiscordClient.EmbedMessageType.INFO).build();
DiscordClient.QueueAndRemoveAfterSeconds(channel, messageEmbed);
}
return;
}
@ -342,8 +354,7 @@ public class CommandAdd
}
DiscordClient.AddWhitelistRemainingCount(embedBuilderRemovedByStaff, timesWhitelisted);
channel.sendMessage(embedBuilderRemovedByStaff.build()).queue();
DiscordClient.QueueAndRemoveAfterSeconds(channel, embedBuilderRemovedByStaff.build());
return;
}
else
@ -384,7 +395,7 @@ public class CommandAdd
DiscordClient.AddWhitelistRemainingCount(embedBuilderRemovedByInGameStaff, timesWhitelisted);
channel.sendMessage(embedBuilderRemovedByInGameStaff.build()).queue();
DiscordClient.QueueAndRemoveAfterSeconds(channel, embedBuilderRemovedByInGameStaff.build());
return;
}
else
@ -566,30 +577,30 @@ public class CommandAdd
}
}
}
}
if (onlyHasLimitedAdd || finalDiscordIdProvided)
if (onlyHasLimitedAdd || finalDiscordIdProvided)
{
if(!finalDiscordIdProvided)
{
if(!finalDiscordIdProvided)
{
UserList.addRegisteredUser(author.getId(), finalNameToAdd);
}
else
{
UserList.addRegisteredUser(suppliedMember.getId(), finalNameToAdd);
}
if(!finalDiscordIdProvided)
DiscordWhitelister.getPluginLogger().info(author.getName() + "(" + author.getId() + ") successfully added " + finalNameToAdd
+ " to the whitelist, " + (DiscordClient.maxWhitelistAmount - finalTimesWhitelisted) + " whitelists remaining.");
else
DiscordWhitelister.getPluginLogger().info(author.getName() + "(" + author.getId() + ") successfully added " + finalNameToAdd
+ " to the whitelist and linked " + finalNameToAdd + " to "+ suppliedMember.getEffectiveName() + "(" + suppliedMember.getId() + ").");
UserList.addRegisteredUser(author.getId(), finalNameToAdd);
}
else
{
UserList.addRegisteredUser(suppliedMember.getId(), finalNameToAdd);
}
if(!finalDiscordIdProvided)
DiscordWhitelister.getPluginLogger().info(author.getName() + "(" + author.getId() + ") successfully added " + finalNameToAdd
+ " to the whitelist, " + (DiscordClient.maxWhitelistAmount - finalTimesWhitelisted) + " whitelists remaining.");
else
DiscordWhitelister.getPluginLogger().info(author.getName() + "(" + author.getId() + ") successfully added " + finalNameToAdd
+ " to the whitelist and linked " + finalNameToAdd + " to "+ suppliedMember.getEffectiveName() + "(" + suppliedMember.getId() + ").");
}
}
else
{
channel.sendMessage(embedBuilderWhitelistFailure.build()).queue();
DiscordClient.QueueAndRemoveAfterSeconds(channel, embedBuilderWhitelistFailure.build());
}
return null;
});

View File

@ -16,11 +16,11 @@ public class CommandInfo
if (authorPermissions.isUserCanUseCommand())
{
channel.sendMessage(DiscordClient.botInfo).queue();
DiscordClient.QueueAndRemoveAfterSeconds(channel, DiscordClient.botInfo);
}
else
{
channel.sendMessage(DiscordClient.CreateInsufficientPermsMessage(author)).queue();
DiscordClient.QueueAndRemoveAfterSeconds(channel, DiscordClient.CreateInsufficientPermsMessage(author));
}
}
}

View File

@ -2,24 +2,24 @@ package uk.co.angrybee.joe.commands.discord;
import com.sun.org.apache.xpath.internal.operations.Bool;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.MessageEmbed;
import net.dv8tion.jda.api.entities.TextChannel;
import net.dv8tion.jda.api.entities.User;
import net.dv8tion.jda.api.entities.*;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.exceptions.AccountTypeException;
import org.yaml.snakeyaml.Yaml;
import uk.co.angrybee.joe.AuthorPermissions;
import uk.co.angrybee.joe.DiscordClient;
import uk.co.angrybee.joe.DiscordWhitelister;
import uk.co.angrybee.joe.configs.MainConfig;
import uk.co.angrybee.joe.stores.UserList;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
public class CommandWhoIs
{
@ -28,11 +28,10 @@ public class CommandWhoIs
AuthorPermissions authorPermissions = new AuthorPermissions(messageReceivedEvent);
User author = messageReceivedEvent.getAuthor();
TextChannel channel = messageReceivedEvent.getTextChannel();
Member member = messageReceivedEvent.getMember();
if (!authorPermissions.isUserCanAddRemove() && !authorPermissions.isUserCanAdd())
{
channel.sendMessage(DiscordClient.CreateInsufficientPermsMessage(author)).queue();
DiscordClient.QueueAndRemoveAfterSeconds(channel, DiscordClient.CreateInsufficientPermsMessage(author));
return;
}
@ -63,9 +62,11 @@ public class CommandWhoIs
}
exampleCommand.append("<minecraftUsername>");
channel.sendMessage(DiscordClient.CreateEmbeddedMessage("Too many arguments",
MessageEmbed messageEmbed = DiscordClient.CreateEmbeddedMessage("Too many arguments",
(author.getAsMention() + ", expected 1 argument but found " + amountOfArgs + ".\n" +
"Example: " + exampleCommand.toString()), DiscordClient.EmbedMessageType.FAILURE).build()).queue();
"Example: " + exampleCommand.toString()), DiscordClient.EmbedMessageType.FAILURE).build();
DiscordClient.QueueAndRemoveAfterSeconds(channel, messageEmbed);
return;
}
@ -79,7 +80,10 @@ public class CommandWhoIs
if(DiscordWhitelister.getUseCustomPrefixes() && splitMessage.length == DiscordClient.customWhoIsPrefix.length
|| !DiscordWhitelister.getUseCustomPrefixes() && splitMessage.length == DiscordClient.whitelistWhoIsPrefix.length || nameToCheck.isEmpty())
{
channel.sendMessage(DiscordClient.whoIsInfo).queue();
if(!MainConfig.getMainConfig().getBoolean("hide-info-command-replies"))
return;
DiscordClient.QueueAndRemoveAfterSeconds(channel, DiscordClient.whoIsInfo);
return;
}
@ -134,14 +138,16 @@ public class CommandWhoIs
else
DiscordWhitelister.getPluginLogger().warning("Failed to fetch avatar linked to Discord ID: " + targetDiscordId);
channel.sendMessage(idFoundMessage.build()).queue();
DiscordClient.QueueAndRemoveAfterSeconds(channel, idFoundMessage.build());
}
else
{
channel.sendMessage(DiscordClient.CreateEmbeddedMessage(("Could not find an account linked to `" + nameToCheck + "`"),
MessageEmbed messageEmbed = DiscordClient.CreateEmbeddedMessage(("Could not find an account linked to `" + nameToCheck + "`"),
(author.getAsMention() + ", the name: `" + nameToCheck +
"` could not be found in the users list. Please make sure that the Minecraft name is valid and whitelisted + linked to an ID before."),
DiscordClient.EmbedMessageType.FAILURE).build()).queue();
DiscordClient.EmbedMessageType.FAILURE).build();
DiscordClient.QueueAndRemoveAfterSeconds(channel, messageEmbed);
}
}
}

View File

@ -130,6 +130,9 @@ public class CustomMessagesConfig
CheckEntry("whitelist-clear-failure-title", "No Entries to Remove");
CheckEntry("whitelist-clear-failure-message", "{Sender}, you do not have any whitelisted entries to remove. ");
CheckEntry("command-channel-title", "This Channel is for Commands Only");
CheckEntry("command-channel-message", "{Sender}, this channel is for commands only, please use another channel.");
}
}

View File

@ -143,6 +143,16 @@ public class MainConfig
CheckEntry("un-whitelist-on-server-leave", true);
CheckEntry("remove-unnecessary-messages-from-whitelist-channel", false);
CheckEntry("seconds-to-remove-message-from-whitelist-channel", 5);
CheckEntry("set-removed-message-colour-to-red", false);
CheckEntry("show-warning-in-command-channel", false);
CheckEntry("hide-info-command-replies", false);
// Remove old role entry if found, move role to new array (for people with v1.3.6 or below)
if(whitelisterBotConfig.get("whitelisted-role") != null)
{

View File

@ -1,5 +1,5 @@
name: DiscordWhitelister
version: 1.4.4
version: 1.4.5
author: Joe Shimell
main: uk.co.angrybee.joe.DiscordWhitelister
description: Discord Whitelister.