diff --git a/pom.xml b/pom.xml index 58d4fc5..2156cbd 100644 --- a/pom.xml +++ b/pom.xml @@ -14,6 +14,11 @@ + dv8tion + m2-dv8tion + https://m2.dv8tion.net/releases + + jcenter jcenter-bintray https://jcenter.bintray.com @@ -24,7 +29,7 @@ net.dv8tion JDA - 4.2.0_219 + 4.2.1_265 com.jagrosh diff --git a/src/main/java/com/jagrosh/vortex/Constants.java b/src/main/java/com/jagrosh/vortex/Constants.java index 322da7a..36c4656 100644 --- a/src/main/java/com/jagrosh/vortex/Constants.java +++ b/src/main/java/com/jagrosh/vortex/Constants.java @@ -62,5 +62,6 @@ public final static String RAID_MODE = WIKI_BASE + "/Raid-Mode"; public final static String COMMANDS = WIKI_BASE + "/Commands"; public final static String AUTOMOD = WIKI_BASE + "/Auto-Moderation"; + public final static String VORTEX_PRO = WIKI_BASE + "/Vortex-Pro"; } } diff --git a/src/main/java/com/jagrosh/vortex/Vortex.java b/src/main/java/com/jagrosh/vortex/Vortex.java index 2de7cc5..5ec442b 100644 --- a/src/main/java/com/jagrosh/vortex/Vortex.java +++ b/src/main/java/com/jagrosh/vortex/Vortex.java @@ -48,6 +48,7 @@ import java.util.concurrent.TimeUnit; import net.dv8tion.jda.api.entities.Activity; import net.dv8tion.jda.api.entities.ChannelType; +import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.exceptions.PermissionException; import net.dv8tion.jda.api.requests.restaction.MessageAction; @@ -188,7 +189,7 @@ .addBot(config.getString("bot-token"), Constants.INTENTS) .setMemberCachePolicy(MemberCachePolicy.ALL) .enableCache(CacheFlag.MEMBER_OVERRIDES, CacheFlag.VOICE_STATE) - .disableCache(CacheFlag.EMOTE, CacheFlag.ACTIVITY, CacheFlag.CLIENT_STATUS) + .disableCache(CacheFlag.EMOTE, CacheFlag.ACTIVITY, CacheFlag.CLIENT_STATUS, CacheFlag.ONLINE_STATUS) .addEventListeners(new Listener(this), client, waiter) .setStatus(OnlineStatus.DO_NOT_DISTURB) .setActivity(Activity.playing("loading...")) @@ -275,6 +276,12 @@ database.settings.setAvatarLogChannel(gid, null); database.settings.setVoiceLogChannel(gid, null); database.filters.deleteAllFilters(gid); + for(int i = 0; i < shards.size() - 1; i++) + { + Guild g = shards.getShardManagers().get(i).getGuildById(gid); + if (g != null) + g.leave().queue(); + } }); } diff --git a/src/main/java/com/jagrosh/vortex/automod/AutoMod.java b/src/main/java/com/jagrosh/vortex/automod/AutoMod.java index 91fad03..f0082d0 100644 --- a/src/main/java/com/jagrosh/vortex/automod/AutoMod.java +++ b/src/main/java/com/jagrosh/vortex/automod/AutoMod.java @@ -27,17 +27,12 @@ import com.typesafe.config.Config; import java.time.OffsetDateTime; import java.time.temporal.ChronoUnit; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; +import java.util.*; import java.util.concurrent.TimeUnit; import java.util.function.Predicate; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; -import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.entities.*; import net.dv8tion.jda.api.entities.Guild.VerificationLevel; @@ -59,7 +54,7 @@ private static final Pattern BASE_URL = Pattern.compile("https?:\\/\\/(?:[^?&:\\/\\s]+\\.)?([^?&:\\/\\s]+\\.\\w+)(?:\\W|$)", Pattern.CASE_INSENSITIVE); private static final Pattern LINK = Pattern.compile("https?:\\/\\/\\S+", Pattern.CASE_INSENSITIVE); - private static final String INVITE_LINK = "https?:\\/\\/discord(?:app\\.com\\/invite|\\.gg)\\/(\\S+)"; + private static final String INVITE_LINK = "https?:\\/\\/discord(?:app\\.com\\/invite|\\.com\\/invite|\\.gg)\\/(\\S+)"; private static final String CONDENSER = "(.+?)\\s*(\\1\\s*)+"; private static final Logger LOG = LoggerFactory.getLogger("AutoMod"); @@ -554,13 +549,22 @@ return false; } + private final static List ZEROWIDTH = Arrays.asList("\u00AD", "\u034F", "\u17B4", "\u17B5", "\u180B", "\u180C", "\u180D", + "\u180E", "\u200B", "\u200C", "\u200D", "\u200E", "\u202A", "\u202C", "\u202D", "\u2060", "\u2061", "\u2062", + "\u2063", "\u2064", "\u2065", "\u2066", "\u2067", "\u2068", "\u2069", "\u206A", "\u206B", "\u206C", "\u206D", + "\u206E", "\u206F", "\uFE00", "\uFE01", "\uFE02", "\uFE03", "\uFE04", "\uFE05", "\uFE06", "\uFE07", "\uFE08", + "\uFE09", "\uFE0A", "\uFE0B", "\uFE0C", "\uFE0D", "\uFE0E", "\uFE0F", "\uFEFF", "\uFFF0", "\uFFF1", "\uFFF2", + "\uFFF3", "\uFFF4", "\uFFF5", "\uFFF6", "\uFFF7", "\uFFF8"); + private static String condensedContent(Message m) { StringBuilder sb = new StringBuilder(m.getContentRaw()); m.getAttachments().forEach(at -> sb.append("\n").append(at.getFileName())); try { - return sb.toString().trim().replaceAll(CONDENSER, "$1"); + StringBuilder sb2 = new StringBuilder(); + sb.chars().filter(c -> !ZEROWIDTH.contains(Character.toString((char)c))).forEach(c -> sb2.append((char)c)); + return sb2.toString().trim().replaceAll(CONDENSER, "$1"); } catch(Exception ex) { diff --git a/src/main/java/com/jagrosh/vortex/automod/StrikeHandler.java b/src/main/java/com/jagrosh/vortex/automod/StrikeHandler.java index 8266044..25602a4 100644 --- a/src/main/java/com/jagrosh/vortex/automod/StrikeHandler.java +++ b/src/main/java/com/jagrosh/vortex/automod/StrikeHandler.java @@ -54,7 +54,8 @@ public void pardonStrikes(Member moderator, OffsetDateTime nowo, long targetId, int number, String reason) { int[] counts = vortex.getDatabase().strikes.removeStrikes(moderator.getGuild(), targetId, number); - User user = vortex.getShardManager().getUserById(targetId); + Member member = moderator.getGuild().getMemberById(targetId); + User user = member == null ? vortex.getShardManager().getUserById(targetId) : member.getUser(); if(user==null) { moderator.getJDA().retrieveUserById(targetId).queue(u -> vortex.getModLogger().postPardonCase(moderator, nowo, number, counts[0], counts[1], u, reason)); diff --git a/src/main/java/com/jagrosh/vortex/commands/moderation/BanCmd.java b/src/main/java/com/jagrosh/vortex/commands/moderation/BanCmd.java index dd4bc73..1900a83 100644 --- a/src/main/java/com/jagrosh/vortex/commands/moderation/BanCmd.java +++ b/src/main/java/com/jagrosh/vortex/commands/moderation/BanCmd.java @@ -42,7 +42,7 @@ { super(vortex, Permission.BAN_MEMBERS); this.name = "ban"; - this.aliases = new String[]{"hackban","forceban"}; + //this.aliases = new String[]{"hackban","forceban"}; this.arguments = "<@users> [time] [reason]"; this.help = "bans users"; this.botPermissions = new Permission[]{Permission.BAN_MEMBERS}; diff --git a/src/main/java/com/jagrosh/vortex/commands/settings/AvatarlogCmd.java b/src/main/java/com/jagrosh/vortex/commands/settings/AvatarlogCmd.java index dfd61a1..83d52a1 100644 --- a/src/main/java/com/jagrosh/vortex/commands/settings/AvatarlogCmd.java +++ b/src/main/java/com/jagrosh/vortex/commands/settings/AvatarlogCmd.java @@ -49,7 +49,7 @@ @Override protected void setLogChannel(CommandEvent event, TextChannel tc) { - if(vortex.getDatabase().premium.getPremiumInfo(event.getGuild()).level.isAtLeast(PremiumManager.Level.PRO)) + if(vortex.getDatabase().premium.getPremiumInfo(event.getGuild()).level.isAtLeast(PremiumManager.Level.ULTRA)) { vortex.getDatabase().settings.setAvatarLogChannel(event.getGuild(), tc); if(tc==null) @@ -58,6 +58,6 @@ event.replySuccess("Avatar Logs will now be sent in "+tc.getAsMention()); } else - event.reply(PremiumManager.Level.PRO.getRequirementMessage()); + event.reply(PremiumManager.Level.ULTRA.getRequirementMessage()); } } diff --git a/src/main/java/com/jagrosh/vortex/commands/settings/SetupCmd.java b/src/main/java/com/jagrosh/vortex/commands/settings/SetupCmd.java index fa9f35b..963ab57 100644 --- a/src/main/java/com/jagrosh/vortex/commands/settings/SetupCmd.java +++ b/src/main/java/com/jagrosh/vortex/commands/settings/SetupCmd.java @@ -48,7 +48,7 @@ this.guildOnly = true; this.userPermissions = new Permission[]{Permission.MANAGE_SERVER}; this.botPermissions = new Permission[]{Permission.ADMINISTRATOR}; - this.children = new Command[]{new MuteSetupCmd(), new AutomodSetupCmd()}; + this.children = new Command[]{new MuteSetupCmd()/*, new AutomodSetupCmd()*/}; } @Override diff --git a/src/main/java/com/jagrosh/vortex/commands/tools/LookupCmd.java b/src/main/java/com/jagrosh/vortex/commands/tools/LookupCmd.java index a9292df..c433ac6 100644 --- a/src/main/java/com/jagrosh/vortex/commands/tools/LookupCmd.java +++ b/src/main/java/com/jagrosh/vortex/commands/tools/LookupCmd.java @@ -104,7 +104,7 @@ private String extractCode(String args) { - return args.substring(args.indexOf("/")+1); + return args.substring(args.lastIndexOf("/")+1); } private boolean lookupUser(long userId, CommandEvent event) diff --git a/src/main/java/com/jagrosh/vortex/database/managers/PremiumManager.java b/src/main/java/com/jagrosh/vortex/database/managers/PremiumManager.java index d7de504..8d6b29d 100644 --- a/src/main/java/com/jagrosh/vortex/database/managers/PremiumManager.java +++ b/src/main/java/com/jagrosh/vortex/database/managers/PremiumManager.java @@ -154,9 +154,9 @@ public static enum Level { NONE("No Premium"), - PLUS("Vortex Plus"), + PLUS("Vortex Pro Lite"), PRO("Vortex Pro"), - ULTRA("Vortex Ultra"); + ULTRA("Vortex Experimental"); public final String name; @@ -172,7 +172,7 @@ public String getRequirementMessage() { - return Constants.WARNING + " Sorry, this feature requires Vortex Pro. Vortex Pro is not available yet."; + return Constants.WARNING + " Sorry, this feature requires " + name + ". See <" + Constants.Wiki.VORTEX_PRO + "> for more information."; } } diff --git a/src/main/java/com/jagrosh/vortex/utils/MultiBotManager.java b/src/main/java/com/jagrosh/vortex/utils/MultiBotManager.java index 17f0f76..927f30b 100644 --- a/src/main/java/com/jagrosh/vortex/utils/MultiBotManager.java +++ b/src/main/java/com/jagrosh/vortex/utils/MultiBotManager.java @@ -53,6 +53,11 @@ } } + public int size() + { + return bots.size(); + } + public List getShardManagers() { return bots;