mirror of https://github.com/kami-blue/client
Add a ton of options to AntiSpam and make detection better (#550)
* add changes * fix regex endings * formatting
This commit is contained in:
parent
badb45d103
commit
c3de2ef0d1
|
@ -2,6 +2,7 @@ package me.zeroeightsix.kami.module.modules.chat;
|
||||||
|
|
||||||
import me.zero.alpine.listener.EventHandler;
|
import me.zero.alpine.listener.EventHandler;
|
||||||
import me.zero.alpine.listener.Listener;
|
import me.zero.alpine.listener.Listener;
|
||||||
|
import me.zeroeightsix.kami.KamiMod;
|
||||||
import me.zeroeightsix.kami.command.Command;
|
import me.zeroeightsix.kami.command.Command;
|
||||||
import me.zeroeightsix.kami.event.events.PacketEvent;
|
import me.zeroeightsix.kami.event.events.PacketEvent;
|
||||||
import me.zeroeightsix.kami.module.Module;
|
import me.zeroeightsix.kami.module.Module;
|
||||||
|
@ -22,24 +23,38 @@ import java.util.stream.Collectors;
|
||||||
@Module.Info(name = "AntiSpam", category = Module.Category.CHAT, description = "Removes spam and advertising from the chat", showOnArray = Module.ShowOnArray.OFF)
|
@Module.Info(name = "AntiSpam", category = Module.Category.CHAT, description = "Removes spam and advertising from the chat", showOnArray = Module.ShowOnArray.OFF)
|
||||||
public class AntiSpam extends Module {
|
public class AntiSpam extends Module {
|
||||||
|
|
||||||
private Setting<Boolean> greenText = register(Settings.b("Green Text", false));
|
private Setting<Page> p = register(Settings.e("Page", Page.ONE));
|
||||||
private Setting<Boolean> discordLinks = register(Settings.b("Discord Links", true));
|
/* Page One */
|
||||||
private Setting<Boolean> webLinks = register(Settings.b("Web Links", false));
|
private Setting<Boolean> discordLinks = register(Settings.booleanBuilder("Discord Links").withValue(true).withVisibility(v -> p.getValue().equals(Page.ONE)).build());
|
||||||
private Setting<Boolean> announcers = register(Settings.b("Announcers", true));
|
private Setting<Boolean> announcers = register(Settings.booleanBuilder("Announcers").withValue(true).withVisibility(v -> p.getValue().equals(Page.ONE)).build());
|
||||||
private Setting<Boolean> spammers = register(Settings.b("Spammers", true));
|
private Setting<Boolean> spammers = register(Settings.booleanBuilder("Spammers").withValue(true).withVisibility(v -> p.getValue().equals(Page.ONE)).build());
|
||||||
private Setting<Boolean> insulters = register(Settings.b("Insulters", true));
|
private Setting<Boolean> insulters = register(Settings.booleanBuilder("Insulters").withValue(true).withVisibility(v -> p.getValue().equals(Page.ONE)).build());
|
||||||
private Setting<Boolean> greeters = register(Settings.b("Greeters", true));
|
private Setting<Boolean> greeters = register(Settings.booleanBuilder("Greeters").withValue(true).withVisibility(v -> p.getValue().equals(Page.ONE)).build());
|
||||||
private Setting<Boolean> hypixelShills = register(Settings.b("Hypixel Shills", true));
|
private Setting<Boolean> ips = register(Settings.booleanBuilder("Server Ips").withValue(true).withVisibility(v -> p.getValue().equals(Page.ONE)).build());
|
||||||
private Setting<Boolean> tradeChat = register(Settings.b("Trade Chat", true));
|
private Setting<Boolean> wordsLongerThen = register(Settings.booleanBuilder("11+ long words").withValue(true).withVisibility(v -> p.getValue().equals(Page.ONE)).build());
|
||||||
private Setting<Boolean> ips = register(Settings.b("Server Ips", true));
|
private Setting<Boolean> specialCharEnding = register(Settings.booleanBuilder("Special Ending").withValue(true).withVisibility(v -> p.getValue().equals(Page.ONE)).build());
|
||||||
private Setting<Boolean> ipsAgr = register(Settings.b("Ips Aggressive", false));
|
private Setting<Boolean> specialCharBegin = register(Settings.booleanBuilder("Special Begin").withValue(true).withVisibility(v -> p.getValue().equals(Page.ONE)).build());
|
||||||
private Setting<Boolean> numberSuffix = register(Settings.b("Number Suffix", true));
|
private Setting<Boolean> iJustThanksTo = register(Settings.booleanBuilder("I just...thanks to").withValue(true).withVisibility(v -> p.getValue().equals(Page.ONE)).build());
|
||||||
private Setting<Boolean> duplicates = register(Settings.b("Duplicates", true));
|
/* I can't get settings to work in non static context for filter */
|
||||||
private Setting<Integer> duplicatesTimeout = register(Settings.integerBuilder("Duplicates Timeout").withMinimum(1).withValue(30).withMaximum(600).build());
|
// private Setting<Integer> characters = register(Settings.integerBuilder("Characters").withValue(15).withVisibility(v -> wordsLongerThen.getValue() && p.getValue().equals(Page.ONE)).build());
|
||||||
private Setting<Boolean> filterOwn = register(Settings.b("Filter Own", false));
|
|
||||||
private Setting<Boolean> showBlocked = register(Settings.b("Show Blocked", false));
|
/* Page Two */
|
||||||
|
private Setting<Boolean> ownsMeAndAll = register(Settings.booleanBuilder("Owns Me And All").withValue(true).withVisibility(v -> p.getValue().equals(Page.TWO)).build());
|
||||||
|
private Setting<Boolean> greenText = register(Settings.booleanBuilder("Green Text").withValue(false).withVisibility(v -> p.getValue().equals(Page.TWO)).build());
|
||||||
|
private Setting<Boolean> numberSuffix = register(Settings.booleanBuilder("Number Ending").withValue(true).withVisibility(v -> p.getValue().equals(Page.TWO)).build());
|
||||||
|
private Setting<Boolean> numberPrefix = register(Settings.booleanBuilder("Number Begin").withValue(false).withVisibility(v -> p.getValue().equals(Page.TWO)).build());
|
||||||
|
private Setting<Boolean> tradeChat = register(Settings.booleanBuilder("Trade Chat").withValue(true).withVisibility(v -> p.getValue().equals(Page.TWO)).build());
|
||||||
|
private Setting<Boolean> hypixelShills = register(Settings.booleanBuilder("Hypixel Shills").withValue(true).withVisibility(v -> p.getValue().equals(Page.TWO)).build());
|
||||||
|
private Setting<Boolean> ipsAgr = register(Settings.booleanBuilder("Ips Aggressive").withValue(false).withVisibility(v -> p.getValue().equals(Page.TWO)).build());
|
||||||
|
private Setting<Boolean> duplicates = register(Settings.booleanBuilder("Duplicates").withValue(true).withVisibility(v -> p.getValue().equals(Page.TWO)).build());
|
||||||
|
private Setting<Integer> duplicatesTimeout = register(Settings.integerBuilder("Duplicates Timeout").withMinimum(1).withValue(30).withMaximum(600).withVisibility(v -> duplicates.getValue() && p.getValue().equals(Page.TWO)).build());
|
||||||
|
private Setting<Boolean> webLinks = register(Settings.booleanBuilder("Web Links").withValue(false).withVisibility(v -> p.getValue().equals(Page.TWO)).build());
|
||||||
|
private Setting<Boolean> filterOwn = register(Settings.booleanBuilder("Filter Own").withValue(false).withVisibility(v -> p.getValue().equals(Page.TWO)).build());
|
||||||
|
private Setting<ShowBlocked> showBlocked = register(Settings.enumBuilder(ShowBlocked.class).withName("Show Blocked").withValue(ShowBlocked.LOG_FILE).withVisibility(v -> p.getValue().equals(Page.TWO)).build());
|
||||||
|
|
||||||
private ConcurrentHashMap<String, Long> messageHistory;
|
private ConcurrentHashMap<String, Long> messageHistory;
|
||||||
|
private enum Page { ONE, TWO }
|
||||||
|
private enum ShowBlocked { NONE, LOG_FILE, CHAT }
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public Listener<PacketEvent.Receive> listener = new Listener<>(event -> {
|
public Listener<PacketEvent.Receive> listener = new Listener<>(event -> {
|
||||||
|
@ -53,18 +68,18 @@ public class AntiSpam extends Module {
|
||||||
return;
|
return;
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
// leijurv's sexy lambda to remove older entries in messageHistory
|
/* leijurv's sexy lambda to remove older entries in messageHistory */
|
||||||
messageHistory.entrySet()
|
messageHistory.entrySet()
|
||||||
.stream()
|
.stream()
|
||||||
.filter(entry -> entry.getValue() < System.currentTimeMillis() - 10 * 60 * 1000) // 10 is delay in minutes
|
.filter(entry -> entry.getValue() < System.currentTimeMillis() - 10 * 60 * 1000) // 10 is delay in minutes
|
||||||
.collect(Collectors.toList())
|
.collect(Collectors.toList())
|
||||||
.forEach(entry -> messageHistory.remove(entry.getKey()));
|
.forEach(entry -> messageHistory.remove(entry.getKey()));
|
||||||
|
|
||||||
if (detectSpam(sPacketChat.getChatComponent().getUnformattedText())) {
|
if (detectSpam(removeUsername(sPacketChat.getChatComponent().getUnformattedText()))) event.cancel();
|
||||||
event.cancel();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
private String removeUsername(String username) { return username.replaceAll("<[^>]*> ", ""); }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() { messageHistory = new ConcurrentHashMap<>(); }
|
public void onEnable() { messageHistory = new ConcurrentHashMap<>(); }
|
||||||
|
|
||||||
|
@ -72,107 +87,54 @@ public class AntiSpam extends Module {
|
||||||
public void onDisable() { messageHistory = null; }
|
public void onDisable() { messageHistory = null; }
|
||||||
|
|
||||||
private boolean detectSpam(String message) {
|
private boolean detectSpam(String message) {
|
||||||
if (!filterOwn.getValue() && findPatterns(FilterPatterns.OWN_MESSAGE, message)) {
|
if (!filterOwn.getValue() && findPatterns(FilterPatterns.OWN_MESSAGE, message)) return false;
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (greenText.getValue() && findPatterns(FilterPatterns.GREEN_TEXT, message)) {
|
if (wordsLongerThen.getValue() && findPatterns(FilterPatterns.LONG_WORD, message)) return sendResult(wordsLongerThen.getName(), message);
|
||||||
if (showBlocked.getValue()) {
|
|
||||||
Command.sendChatMessage(this.getChatName() + "Green Text: " + message);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (discordLinks.getValue() && findPatterns(FilterPatterns.DISCORD, message)) {
|
if (greenText.getValue() && findPatterns(FilterPatterns.GREEN_TEXT, message)) return sendResult(greenText.getName(), message);
|
||||||
if (showBlocked.getValue()) {
|
|
||||||
Command.sendChatMessage(this.getChatName() + "Discord Link: " + message);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (webLinks.getValue() && findPatterns(FilterPatterns.WEB_LINK, message)) {
|
if (specialCharBegin.getValue() && findPatterns(FilterPatterns.SPECIAL_BEGINNING, message)) return sendResult(specialCharBegin.getName(), message);
|
||||||
if (showBlocked.getValue()) {
|
|
||||||
Command.sendChatMessage(this.getChatName() + "Web Link: " + message);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ips.getValue() && findPatterns(FilterPatterns.IP_ADDR, message)) {
|
if (specialCharEnding.getValue() && findPatterns(FilterPatterns.SPECIAL_ENDING, message)) return sendResult(specialCharEnding.getName(), message);
|
||||||
if (showBlocked.getValue()) {
|
|
||||||
Command.sendChatMessage(this.getChatName() + "IP Address: " + message);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ipsAgr.getValue() && findPatterns(FilterPatterns.IP_ADDR_AGR, message)) {
|
if (ownsMeAndAll.getValue() && findPatterns(FilterPatterns.OWNS_ME_AND_ALL, message)) return sendResult(ownsMeAndAll.getName(), message);
|
||||||
if (showBlocked.getValue()) {
|
|
||||||
Command.sendChatMessage(this.getChatName() + "IP Aggressive: " + message);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tradeChat.getValue() && findPatterns(FilterPatterns.TRADE_CHAT, message)) {
|
if (iJustThanksTo.getValue() && findPatterns(FilterPatterns.I_JUST_THANKS_TO, message)) return sendResult(iJustThanksTo.getName(), message);
|
||||||
if (showBlocked.getValue()) {
|
|
||||||
Command.sendChatMessage(this.getChatName() + "Trade Chat: " + message);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (numberSuffix.getValue() && findPatterns(FilterPatterns.NUMBER_SUFFIX, message)) {
|
if (numberSuffix.getValue() && findPatterns(FilterPatterns.NUMBER_SUFFIX, message)) return sendResult(numberSuffix.getName(), message);
|
||||||
if (showBlocked.getValue()) {
|
|
||||||
Command.sendChatMessage(this.getChatName() + "Number Suffix: " + message);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (announcers.getValue() && findPatterns(FilterPatterns.ANNOUNCER, message)) {
|
if (numberPrefix.getValue() && findPatterns(FilterPatterns.NUMBER_PREFIX, message)) return sendResult(numberPrefix.getName(), message);
|
||||||
if (showBlocked.getValue()) {
|
|
||||||
Command.sendChatMessage(this.getChatName() + "Announcer: " + message);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (spammers.getValue() && findPatterns(FilterPatterns.SPAMMER, message)) {
|
if (discordLinks.getValue() && findPatterns(FilterPatterns.DISCORD, message)) return sendResult(discordLinks.getName(), message);
|
||||||
if (showBlocked.getValue()) {
|
|
||||||
Command.sendChatMessage(this.getChatName() + "Spammers: " + message);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (insulters.getValue() && findPatterns(FilterPatterns.INSULTER, message)) {
|
if (webLinks.getValue() && findPatterns(FilterPatterns.WEB_LINK, message)) return sendResult(webLinks.getName(), message);
|
||||||
if (showBlocked.getValue()) {
|
|
||||||
Command.sendChatMessage(this.getChatName() + "Insulter: " + message);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (greeters.getValue() && findPatterns(FilterPatterns.GREETER, message)) {
|
if (ips.getValue() && findPatterns(FilterPatterns.IP_ADDR, message)) return sendResult(ips.getName(), message);
|
||||||
if (showBlocked.getValue()) {
|
|
||||||
Command.sendChatMessage(this.getChatName() + "Greeter: " + message);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (hypixelShills.getValue() && findPatterns(FilterPatterns.HYPIXEL_SHILLS, message)) {
|
if (ipsAgr.getValue() && findPatterns(FilterPatterns.IP_ADDR_AGR, message)) return sendResult(ipsAgr.getName(), message);
|
||||||
if (showBlocked.getValue()) {
|
|
||||||
Command.sendChatMessage(this.getChatName() + "Hypixel Shills: ");
|
if (announcers.getValue() && findPatterns(FilterPatterns.ANNOUNCER, message)) return sendResult(announcers.getName(), message);
|
||||||
}
|
|
||||||
return true;
|
if (spammers.getValue() && findPatterns(FilterPatterns.SPAMMER, message)) return sendResult(spammers.getName(), message);
|
||||||
}
|
|
||||||
|
if (insulters.getValue() && findPatterns(FilterPatterns.INSULTER, message)) return sendResult(insulters.getName(), message);
|
||||||
|
|
||||||
|
if (greeters.getValue() && findPatterns(FilterPatterns.GREETER, message)) return sendResult(greeters.getName(), message);
|
||||||
|
|
||||||
|
if (hypixelShills.getValue() && findPatterns(FilterPatterns.HYPIXEL_SHILLS, message)) return sendResult(hypixelShills.getName(), message);
|
||||||
|
|
||||||
|
if (tradeChat.getValue() && findPatterns(FilterPatterns.TRADE_CHAT, message)) return sendResult(tradeChat.getName(), message);
|
||||||
|
|
||||||
if (duplicates.getValue()) {
|
if (duplicates.getValue()) {
|
||||||
if (messageHistory == null) {
|
if (messageHistory == null) messageHistory = new ConcurrentHashMap<>();
|
||||||
messageHistory = new ConcurrentHashMap<>();
|
|
||||||
}
|
|
||||||
boolean isDuplicate = false;
|
boolean isDuplicate = false;
|
||||||
if (messageHistory.containsKey(message) && (System.currentTimeMillis() - messageHistory.get(message)) / 1000 < duplicatesTimeout.getValue()) {
|
|
||||||
isDuplicate = true;
|
if (messageHistory.containsKey(message) && (System.currentTimeMillis() - messageHistory.get(message)) / 1000 < duplicatesTimeout.getValue()) isDuplicate = true;
|
||||||
}
|
|
||||||
messageHistory.put(message, System.currentTimeMillis());
|
messageHistory.put(message, System.currentTimeMillis());
|
||||||
if (isDuplicate) {
|
if (isDuplicate) {
|
||||||
if (showBlocked.getValue()) {
|
if (showBlocked.getValue().equals(ShowBlocked.CHAT)) Command.sendChatMessage(this.getChatName() + "Duplicate: " + message);
|
||||||
Command.sendChatMessage(this.getChatName() + "Duplicate: " + message);
|
else if (showBlocked.getValue().equals(ShowBlocked.LOG_FILE)) KamiMod.log.info(this.getChatName() + "Duplicate: " + message);
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -180,8 +142,9 @@ public class AntiSpam extends Module {
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean findPatterns(String[] patterns, String string) {
|
private boolean findPatterns(String[] patterns, String string) {
|
||||||
|
string = string.replaceAll("<[^>]*> ", ""); // remove username first
|
||||||
for (String pattern : patterns) {
|
for (String pattern : patterns) {
|
||||||
if (Pattern.compile(pattern).matcher(string).find()) {
|
if (Pattern.compile(pattern, Pattern.CASE_INSENSITIVE).matcher(string).find()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -189,178 +152,212 @@ public class AntiSpam extends Module {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class FilterPatterns {
|
private static class FilterPatterns {
|
||||||
private static final String[] ANNOUNCER =
|
private static final String[] ANNOUNCER = {
|
||||||
{
|
// RusherHack b8
|
||||||
// RusherHack b8
|
"I just walked .+ feet!",
|
||||||
"I just walked .+ feet!",
|
"I just placed a .+!",
|
||||||
"I just placed a .+!",
|
"I just attacked .+ with a .+!",
|
||||||
"I just attacked .+ with a .+!",
|
"I just dropped a .+!",
|
||||||
"I just dropped a .+!",
|
"I just opened chat!",
|
||||||
"I just opened chat!",
|
"I just opened my console!",
|
||||||
"I just opened my console!",
|
"I just opened my GUI!",
|
||||||
"I just opened my GUI!",
|
"I just went into full screen mode!",
|
||||||
"I just went into full screen mode!",
|
"I just paused my game!",
|
||||||
"I just paused my game!",
|
"I just opened my inventory!",
|
||||||
"I just opened my inventory!",
|
"I just looked at the player list!",
|
||||||
"I just looked at the player list!",
|
"I just took a screen shot!",
|
||||||
"I just took a screen shot!",
|
"I just swaped hands!",
|
||||||
"I just swaped hands!",
|
"I just ducked!",
|
||||||
"I just ducked!",
|
"I just changed perspectives!",
|
||||||
"I just changed perspectives!",
|
"I just jumped!",
|
||||||
"I just jumped!",
|
"I just ate a .+!",
|
||||||
"I just ate a .+!",
|
"I just crafted .+ .+!",
|
||||||
"I just crafted .+ .+!",
|
"I just picked up a .+!",
|
||||||
"I just picked up a .+!",
|
"I just smelted .+ .+!",
|
||||||
"I just smelted .+ .+!",
|
"I just respawned!",
|
||||||
"I just respawned!",
|
// RusherHack b11
|
||||||
// RusherHack b11
|
"I just attacked .+ with my hands",
|
||||||
"I just attacked .+ with my hands",
|
"I just broke a .+!",
|
||||||
"I just broke a .+!",
|
// WWE
|
||||||
// WWE
|
"I recently walked .+ blocks",
|
||||||
"I recently walked .+ blocks",
|
"I just droped a .+ called, .+!",
|
||||||
"I just droped a .+ called, .+!",
|
"I just placed a block called, .+!",
|
||||||
"I just placed a block called, .+!",
|
"Im currently breaking a block called, .+!",
|
||||||
"Im currently breaking a block called, .+!",
|
"I just broke a block called, .+!",
|
||||||
"I just broke a block called, .+!",
|
"I just opened chat!",
|
||||||
"I just opened chat!",
|
"I just opened chat and typed a slash!",
|
||||||
"I just opened chat and typed a slash!",
|
"I just paused my game!",
|
||||||
"I just paused my game!",
|
"I just opened my inventory!",
|
||||||
"I just opened my inventory!",
|
"I just looked at the player list!",
|
||||||
"I just looked at the player list!",
|
"I just changed perspectives, now im in .+!",
|
||||||
"I just changed perspectives, now im in .+!",
|
"I just crouched!",
|
||||||
"I just crouched!",
|
"I just jumped!",
|
||||||
"I just jumped!",
|
"I just attacked a entity called, .+ with a .+",
|
||||||
"I just attacked a entity called, .+ with a .+",
|
"Im currently eatting a peice of food called, .+!",
|
||||||
"Im currently eatting a peice of food called, .+!",
|
"Im currently using a item called, .+!",
|
||||||
"Im currently using a item called, .+!",
|
"I just toggled full screen mode!",
|
||||||
"I just toggled full screen mode!",
|
"I just took a screen shot!",
|
||||||
"I just took a screen shot!",
|
"I just swaped hands and now theres a .+ in my main hand and a .+ in my off hand!",
|
||||||
"I just swaped hands and now theres a .+ in my main hand and a .+ in my off hand!",
|
"I just used pick block on a block called, .+!",
|
||||||
"I just used pick block on a block called, .+!",
|
"Ra just completed his blazing ark",
|
||||||
"Ra just completed his blazing ark",
|
"Its a new day yes it is",
|
||||||
"Its a new day yes it is",
|
// DotGod.CC
|
||||||
// DotGod.CC
|
"I just placed .+ thanks to (http:\\/\\/)?DotGod\\.CC!",
|
||||||
"I just placed .+ thanks to (http:\\/\\/)?DotGod\\.CC!",
|
"I just flew .+ meters like a butterfly thanks to (http:\\/\\/)?DotGod\\.CC!",
|
||||||
"I just flew .+ meters like a butterfly thanks to (http:\\/\\/)?DotGod\\.CC!",
|
};
|
||||||
};
|
|
||||||
|
|
||||||
private static final String[] SPAMMER =
|
private static final String[] SPAMMER = {
|
||||||
{
|
//WWE
|
||||||
//WWE
|
"WWE Client's spammer",
|
||||||
"WWE Client's spammer",
|
"Lol get gud",
|
||||||
"Lol get gud",
|
"Future client is bad",
|
||||||
"Future client is bad",
|
"WWE > Future",
|
||||||
"WWE > Future",
|
"WWE > Impact",
|
||||||
"WWE > Impact",
|
"Default Message",
|
||||||
"Default Message",
|
"IKnowImEZ is a god",
|
||||||
"IKnowImEZ is a god",
|
"THEREALWWEFAN231 is a god",
|
||||||
"THEREALWWEFAN231 is a god",
|
"WWE Client made by IKnowImEZ/THEREALWWEFAN231",
|
||||||
"WWE Client made by IKnowImEZ/THEREALWWEFAN231",
|
"WWE Client was the first public client to have Path Finder/New Chunks",
|
||||||
"WWE Client was the first public client to have Path Finder/New Chunks",
|
"WWE Client was the first public client to have color signs",
|
||||||
"WWE Client was the first public client to have color signs",
|
"WWE Client was the first client to have Teleport Finder",
|
||||||
"WWE Client was the first client to have Teleport Finder",
|
"WWE Client was the first client to have Tunneller & Tunneller Back Fill",
|
||||||
"WWE Client was the first client to have Tunneller & Tunneller Back Fill",
|
};
|
||||||
};
|
|
||||||
|
|
||||||
private static final String[] INSULTER =
|
private static final String[] INSULTER = {
|
||||||
{
|
// WWE
|
||||||
// WWE
|
".+ Download WWE utility mod, Its free!",
|
||||||
".+ Download WWE utility mod, Its free!",
|
".+ 4b4t is da best mintscreft serber",
|
||||||
".+ 4b4t is da best mintscreft serber",
|
".+ dont abouse",
|
||||||
".+ dont abouse",
|
".+ you cuck",
|
||||||
".+ you cuck",
|
".+ https://www.youtube.com/channel/UCJGCNPEjvsCn0FKw3zso0TA",
|
||||||
".+ https://www.youtube.com/channel/UCJGCNPEjvsCn0FKw3zso0TA",
|
".+ is my step dad",
|
||||||
".+ is my step dad",
|
".+ again daddy!",
|
||||||
".+ again daddy!",
|
"dont worry .+ it happens to every one",
|
||||||
"dont worry .+ it happens to every one",
|
".+ dont buy future it's crap, compared to WWE!",
|
||||||
".+ dont buy future it's crap, compared to WWE!",
|
"What are you, fucking gay, .+?",
|
||||||
"What are you, fucking gay, .+?",
|
"Did you know? .+ hates you, .+",
|
||||||
"Did you know? .+ hates you, .+",
|
"You are literally 10, .+",
|
||||||
"You are literally 10, .+",
|
".+ finally lost their virginity, sadly they lost it to .+... yeah, that's unfortunate.",
|
||||||
".+ finally lost their virginity, sadly they lost it to .+... yeah, that's unfortunate.",
|
".+, don't be upset, it's not like anyone cares about you, fag.",
|
||||||
".+, don't be upset, it's not like anyone cares about you, fag.",
|
".+, see that rubbish bin over there? Get your ass in it, or I'll get .+ to whoop your ass.",
|
||||||
".+, see that rubbish bin over there? Get your ass in it, or I'll get .+ to whoop your ass.",
|
".+, may I borrow that dirt block? that guy named .+ needs it...",
|
||||||
".+, may I borrow that dirt block? that guy named .+ needs it...",
|
"Yo, .+, btfo you virgin",
|
||||||
"Yo, .+, btfo you virgin",
|
"Hey .+ want to play some High School RP with me and .+?",
|
||||||
"Hey .+ want to play some High School RP with me and .+?",
|
".+ is an Archon player. Why is he on here? Fucking factions player.",
|
||||||
".+ is an Archon player. Why is he on here? Fucking factions player.",
|
"Did you know? .+ just joined The Vortex Coalition!",
|
||||||
"Did you know? .+ just joined The Vortex Coalition!",
|
".+ has successfully conducted the cactus dupe and duped a itemhand!",
|
||||||
".+ has successfully conducted the cactus dupe and duped a itemhand!",
|
".+, are you even human? You act like my dog, holy shit.",
|
||||||
".+, are you even human? You act like my dog, holy shit.",
|
".+, you were never loved by your family.",
|
||||||
".+, you were never loved by your family.",
|
"Come on .+, you hurt .+'s feelings. You meany.",
|
||||||
"Come on .+, you hurt .+'s feelings. You meany.",
|
"Stop trying to meme .+, you can't do that. kek",
|
||||||
"Stop trying to meme .+, you can't do that. kek",
|
".+, .+ is gay. Don't go near him.",
|
||||||
".+, .+ is gay. Don't go near him.",
|
"Whoa .+ didn't mean to offend you, .+.",
|
||||||
"Whoa .+ didn't mean to offend you, .+.",
|
".+ im not pvping .+, im WWE'ing .+.",
|
||||||
".+ im not pvping .+, im WWE'ing .+.",
|
"Did you know? .+ just joined The Vortex Coalition!",
|
||||||
"Did you know? .+ just joined The Vortex Coalition!",
|
".+, are you even human? You act like my dog, holy shit.",
|
||||||
".+, are you even human? You act like my dog, holy shit.",
|
};
|
||||||
};
|
|
||||||
|
|
||||||
private static final String[] GREETER =
|
private static final String[] GREETER = {
|
||||||
{
|
// WWE
|
||||||
// WWE
|
"Bye, Bye .+",
|
||||||
"Bye, Bye .+",
|
"Farwell, .+",
|
||||||
"Farwell, .+",
|
// Others(?)
|
||||||
// incomplete
|
"See you next time, .+",
|
||||||
};
|
"Catch ya later, .+",
|
||||||
|
"Bye, .+",
|
||||||
|
"Welcome, .+",
|
||||||
|
"Hey, .+",
|
||||||
|
// Vanilla MC / Essentials MC
|
||||||
|
".+ joined the game",
|
||||||
|
".+ has joined",
|
||||||
|
".+ joined the lobby",
|
||||||
|
"Welcome .+",
|
||||||
|
".+ left the game",
|
||||||
|
};
|
||||||
|
|
||||||
private static final String[] HYPIXEL_SHILLS =
|
private static final String[] HYPIXEL_SHILLS = {
|
||||||
{
|
"/p join",
|
||||||
"/p join",
|
"/party join",
|
||||||
"/party join",
|
"road to",
|
||||||
"road to",
|
"private games"
|
||||||
"private games"
|
};
|
||||||
};
|
|
||||||
|
|
||||||
private static final String[] DISCORD =
|
private static final String[] DISCORD = {
|
||||||
{
|
"discord.gg",
|
||||||
"discord.gg",
|
"discordapp.com",
|
||||||
"discordapp.com",
|
"discord.io",
|
||||||
"discord.io",
|
"invite.gg",
|
||||||
"invite.gg",
|
};
|
||||||
};
|
|
||||||
|
|
||||||
private static final String[] NUMBER_SUFFIX =
|
private static final String[] NUMBER_SUFFIX = {
|
||||||
{
|
".+\\d{3,}$",
|
||||||
".+\\d{3,}$",
|
};
|
||||||
};
|
|
||||||
|
|
||||||
private static final String[] GREEN_TEXT =
|
private static final String[] NUMBER_PREFIX = {
|
||||||
{
|
"\\d{3,}.*$",
|
||||||
"^<.+> >",
|
};
|
||||||
};
|
|
||||||
|
|
||||||
private static final String[] TRADE_CHAT =
|
private static final String[] GREEN_TEXT = {
|
||||||
{
|
"^<.+> >",
|
||||||
"buy",
|
};
|
||||||
"sell",
|
|
||||||
};
|
|
||||||
|
|
||||||
private static final String[] WEB_LINK =
|
private static final String[] TRADE_CHAT = {
|
||||||
{
|
"buy",
|
||||||
"http:\\/\\/",
|
"sell",
|
||||||
"https:\\/\\/",
|
};
|
||||||
"www.",
|
|
||||||
};
|
|
||||||
|
|
||||||
private static final String[] IP_ADDR =
|
private static final String[] WEB_LINK = {
|
||||||
{
|
"http:\\/\\/",
|
||||||
"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\:\\d{1,5}\\b",
|
"https:\\/\\/",
|
||||||
"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}",
|
"www.",
|
||||||
"^(?:http(?:s)?:\\/\\/)?(?:[^\\.]+\\.)?.*\\..*\\..*$",
|
};
|
||||||
".*\\..*\\:\\d{1,5}$",
|
|
||||||
};
|
|
||||||
|
|
||||||
private static final String[] IP_ADDR_AGR =
|
private static final String[] IP_ADDR = {
|
||||||
{
|
"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\:\\d{1,5}\\b",
|
||||||
".*\\..*$",
|
"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}",
|
||||||
};
|
"^(?:http(?:s)?:\\/\\/)?(?:[^\\.]+\\.)?.*\\..*\\..*$",
|
||||||
|
".*\\..*\\:\\d{1,5}$",
|
||||||
|
};
|
||||||
|
|
||||||
private static final String[] OWN_MESSAGE =
|
private static final String[] IP_ADDR_AGR = {
|
||||||
{
|
".*\\..*$",
|
||||||
"^<" + mc.player.getName() + "> ",
|
};
|
||||||
"^To .+: ",
|
|
||||||
};
|
private static final String[] LONG_WORD = {
|
||||||
|
// "\\b\\w{" + getCharacters() + ",256}\\b",
|
||||||
|
"\\b\\w{11,256}\\b",
|
||||||
|
};
|
||||||
|
|
||||||
|
private static final String[] OWNS_ME_AND_ALL = {
|
||||||
|
"owns me and all",
|
||||||
|
};
|
||||||
|
|
||||||
|
private static final String[] I_JUST_THANKS_TO = {
|
||||||
|
"i just.*thanks to",
|
||||||
|
};
|
||||||
|
|
||||||
|
private static final String[] SPECIAL_BEGINNING = {
|
||||||
|
"^[.,/?!()\\[\\]{}<>«»⏐|\\-+=\\\\]", // the <> don't filter as the player name is removed when matching
|
||||||
|
};
|
||||||
|
|
||||||
|
private static final String[] SPECIAL_ENDING = {
|
||||||
|
"[/@#^()\\[\\]{}<>«»⏐|\\-+=\\\\]",
|
||||||
|
};
|
||||||
|
|
||||||
|
private static final String[] OWN_MESSAGE = {
|
||||||
|
"^<" + mc.player.getName() + "> ",
|
||||||
|
"^To .+: ",
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// private static Integer getCharacters() {
|
||||||
|
// AntiSpam antiSpam = ((AntiSpam) ModuleManager.getModuleByName("AntiSpam"));
|
||||||
|
// return antiSpam.characters.getValue();
|
||||||
|
// }
|
||||||
|
|
||||||
|
private boolean sendResult(String name, String message) {
|
||||||
|
if (showBlocked.getValue().equals(ShowBlocked.CHAT)) Command.sendChatMessage(this.getChatName() + name + ": " + message);
|
||||||
|
else if (showBlocked.getValue().equals(ShowBlocked.LOG_FILE)) KamiMod.log.info(this.getChatName() + name + ": " + message);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue