aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/kotlin/cc/woverflow/chatting/Chatting.kt2
-rw-r--r--src/main/kotlin/cc/woverflow/chatting/chat/ChatSpamBlock.kt124
-rw-r--r--src/main/kotlin/cc/woverflow/chatting/config/ChattingConfig.kt26
-rw-r--r--src/main/resources/spamInfo.json6146
4 files changed, 0 insertions, 6298 deletions
diff --git a/src/main/kotlin/cc/woverflow/chatting/Chatting.kt b/src/main/kotlin/cc/woverflow/chatting/Chatting.kt
index 5718f14..0fe85f9 100644
--- a/src/main/kotlin/cc/woverflow/chatting/Chatting.kt
+++ b/src/main/kotlin/cc/woverflow/chatting/Chatting.kt
@@ -2,7 +2,6 @@ package cc.woverflow.chatting
import cc.woverflow.chatting.chat.ChatSearchingManager
import cc.woverflow.chatting.chat.ChatShortcuts
-import cc.woverflow.chatting.chat.ChatSpamBlock
import cc.woverflow.chatting.chat.ChatTabs
import cc.woverflow.chatting.config.ChattingConfig
import cc.woverflow.chatting.hook.GuiNewChatHook
@@ -81,7 +80,6 @@ object Chatting {
}
ClientRegistry.registerKeyBinding(keybind)
EVENT_BUS.register(this)
- EVENT_BUS.register(ChatSpamBlock)
ChatTabs.initialize()
ChatShortcuts.initialize()
}
diff --git a/src/main/kotlin/cc/woverflow/chatting/chat/ChatSpamBlock.kt b/src/main/kotlin/cc/woverflow/chatting/chat/ChatSpamBlock.kt
deleted file mode 100644
index 224e614..0000000
--- a/src/main/kotlin/cc/woverflow/chatting/chat/ChatSpamBlock.kt
+++ /dev/null
@@ -1,124 +0,0 @@
-package cc.woverflow.chatting.chat
-
-import cc.woverflow.chatting.config.ChattingConfig
-import com.google.gson.JsonObject
-import com.google.gson.JsonParser
-import net.minecraft.util.ChatComponentText
-import net.minecraft.util.EnumChatFormatting
-import net.minecraftforge.client.event.ClientChatReceivedEvent
-import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
-import java.text.Normalizer
-
-object ChatSpamBlock {
- /*
- Made by @KTibow
- Based off of Unspam (also by @KTibow)
- Algorithm based off of https://paulgraham.com/spam.html
- */
- private val PLAYER_MESSAGE = Regex("^(\\[VIP\\+?\\] |\\[MVP\\+?\\+?\\] |)(\\w{2,16}): (.*)$")
-
- @SubscribeEvent
- fun onChat(event: ClientChatReceivedEvent) {
- val message = event.message.unformattedText.replace(Regex("\u00A7."), "")
- if (!PLAYER_MESSAGE.matches(message)) return
- val (rank, player, content) = PLAYER_MESSAGE.matchEntire(message)!!.destructured
- val tokens = tokenize(content)
- val spamProb = findSpamProbability(tokens)
- println("\n[CHATTING]$message")
- if (spamProb * 100 > ChattingConfig.spamThreshold) {
- if (ChattingConfig.showSpamInGray) {
- var newMessage = EnumChatFormatting.DARK_GRAY.toString() + EnumChatFormatting.STRIKETHROUGH.toString()
- if (!ChattingConfig.customFormatting) {
- newMessage += rank
- }
- newMessage += "$player${EnumChatFormatting.DARK_GRAY.toString()}: $content"
- event.message = ChatComponentText(newMessage)
- } else {
- event.isCanceled = true
- }
- return
- }
- if (ChattingConfig.customFormatting) {
- val coloredPlayer = findRankColor(rank) + player + EnumChatFormatting.RESET.toString()
- event.message = ChatComponentText("$coloredPlayer: $content")
- }
- }
-
- private fun tokenize(message: String): MutableList<String> {
- val strippedMessage =
- Normalizer.normalize(message, Normalizer.Form.NFKC).replace(Regex("[^\\w\\s/]"), " ").lowercase().trim()
- val tokens = strippedMessage.split(Regex("\\s+")).toMutableList()
- if (tokens.size <= 2) {
- tokens.add("TINY_LENGTH")
- } else if (tokens.size <= 4) {
- tokens.add("SMALL_LENGTH")
- } else if (tokens.size <= 7) {
- tokens.add("MEDIUM_LENGTH")
- } else {
- tokens.add("LONG_LENGTH")
- }
- if (message.replace(Regex("[\\w\\s]"), "").length > 2) {
- tokens.add("SPECIAL_CHARS")
- } else if (message.replace(Regex("[\\w\\s]"), "").length > 0) {
- tokens.add("SPECIAL_CHAR")
- } else {
- tokens.add("LOW_SPECIAL_CHARS")
- }
- if (message.replace(Regex("[^A-Z]"), "").length >= message.length / 4) {
- tokens.add("HIGH_CAPS")
- } else {
- tokens.add("LOW_CAPS")
- }
- return tokens
- }
-
- private fun findSpamProbability(tokens: MutableList<String>): Double {
- val tokenProbs = mutableMapOf<String, Double>()
- for (token in tokens) {
- if (!spamInfoJson.has(token)) continue
- val spamInToken = spamInfoJson.get(token).asJsonObject.get("spam").asDouble
- val fineInToken = spamInfoJson.get(token).asJsonObject.get("fine").asDouble
- tokenProbs[token] = (
- (spamInToken / messageCountsJson.get("spam").asInt) /
- (fineInToken / messageCountsJson.get("fine").asInt +
- spamInToken / messageCountsJson.get("spam").asInt)
- )
- }
- val spamProbs = tokenProbs.values.toMutableList()
- val fineProbs = tokenProbs.values.map {
- 1 - it
- }.toMutableList()
- val spamProbability = spamProbs.reduce { a, b ->
- a * b
- }
- val fineProbability = fineProbs.reduce { a, b ->
- a * b
- }
- return spamProbability / (spamProbability + fineProbability)
- }
-
- private fun findRankColor(rank: String): String {
- println(rank)
- return when (rank) {
- "[VIP] ", "[VIP+] " -> EnumChatFormatting.GREEN.toString()
- "[MVP] ", "[MVP+] " -> EnumChatFormatting.AQUA.toString()
- "[MVP++] " -> EnumChatFormatting.GOLD.toString()
- else -> EnumChatFormatting.GRAY.toString()
- }
- }
-
- private fun getResourceAsText(path: String): String? = object {}.javaClass.getResource(path)?.readText()
- private val spamInfoJson: JsonObject
- private val messageCountsJson: JsonObject
-
- init {
- // Load the file spamInfo.json from resources/
- val spamInfo = getResourceAsText("/spamInfo.json")
- spamInfoJson = JsonParser().parse(spamInfo).asJsonObject
- messageCountsJson = JsonParser().parse(" { \"fine\": 668, \"spam\": 230 }").asJsonObject
- }
-}
-
-
-
-
diff --git a/src/main/kotlin/cc/woverflow/chatting/config/ChattingConfig.kt b/src/main/kotlin/cc/woverflow/chatting/config/ChattingConfig.kt
index bc3aa31..1a936c9 100644
--- a/src/main/kotlin/cc/woverflow/chatting/config/ChattingConfig.kt
+++ b/src/main/kotlin/cc/woverflow/chatting/config/ChattingConfig.kt
@@ -78,32 +78,6 @@ object ChattingConfig :
)
var informForAlternatives = true
- @Property(
- type = PropertyType.SLIDER,
- min = 0,
- max = 100,
- name = "Spam Threshold",
- description = "If Chatting detects a player message seems like spam, and the probability is above this threshold, it will hide it. Set to 0 to disable.",
- category = "Player Spam Blocker"
- )
- var spamThreshold = 95
-
- @Property(
- type = PropertyType.SWITCH,
- name = "Show Spam (with styling)",
- description = "Show messages Chatting detects as spam in gray, instead of hiding them.",
- category = "Player Spam Blocker"
- )
- var showSpamInGray = true
-
- @Property(
- type = PropertyType.SWITCH,
- name = "Custom Message Formatting",
- description = "Hide ranks, and show messages in public chat from no-ranks as white.",
- category = "Player Spam Blocker"
- )
- var customFormatting = false
-
/*/
@Property(
type = PropertyType.SWITCH,
diff --git a/src/main/resources/spamInfo.json b/src/main/resources/spamInfo.json
deleted file mode 100644
index 8f5d44d..0000000
--- a/src/main/resources/spamInfo.json
+++ /dev/null
@@ -1,6146 +0,0 @@
-{
- "0": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "1": {
- "fine": 5.668,
- "spam": 14.23
- },
- "2": {
- "fine": 9.668,
- "spam": 3.23
- },
- "3": {
- "fine": 4.668,
- "spam": 9.23
- },
- "4": {
- "fine": 0.668,
- "spam": 7.23
- },
- "5": {
- "fine": 3.668,
- "spam": 14.23
- },
- "6": {
- "fine": 3.668,
- "spam": 2.23
- },
- "7": {
- "fine": 4.668,
- "spam": 5.23
- },
- "8": {
- "fine": 0.668,
- "spam": 1.23
- },
- "9": {
- "fine": 2.668,
- "spam": 1.23
- },
- "10": {
- "fine": 1.6680000000000001,
- "spam": 2.23
- },
- "11": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "12": {
- "fine": 0.668,
- "spam": 2.23
- },
- "15": {
- "fine": 0.668,
- "spam": 2.23
- },
- "16": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "18": {
- "fine": 0.668,
- "spam": 1.23
- },
- "20": {
- "fine": 3.668,
- "spam": 0.23
- },
- "25": {
- "fine": 0.668,
- "spam": 1.23
- },
- "29": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "30": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "32": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "36": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "50": {
- "fine": 0.668,
- "spam": 1.23
- },
- "85": {
- "fine": 0.668,
- "spam": 1.23
- },
- "92": {
- "fine": 0.668,
- "spam": 1.23
- },
- "99": {
- "fine": 0.668,
- "spam": 1.23
- },
- "100": {
- "fine": 2.668,
- "spam": 1.23
- },
- "108": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "123": {
- "fine": 0.668,
- "spam": 1.23
- },
- "280": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "345": {
- "fine": 0.668,
- "spam": 1.23
- },
- "350": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "374": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "500": {
- "fine": 0.668,
- "spam": 3.23
- },
- "553": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "4078": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "8945": {
- "fine": 0.668,
- "spam": 1.23
- },
- "34598": {
- "fine": 0.668,
- "spam": 1.23
- },
- "172000": {
- "fine": 0.668,
- "spam": 1.23
- },
- "1999999": {
- "fine": 0.668,
- "spam": 1.23
- },
- "84758934": {
- "fine": 0.668,
- "spam": 1.23
- },
- "then": {
- "fine": 3.668,
- "spam": 1.23
- },
- "report": {
- "fine": 2.668,
- "spam": 0.23
- },
- "in": {
- "fine": 19.668,
- "spam": 16.23
- },
- "the": {
- "fine": 49.668,
- "spam": 9.23
- },
- "skyblockz": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "discord": {
- "fine": 1.6680000000000001,
- "spam": 2.23
- },
- "MEDIUM_LENGTH": {
- "fine": 137.668,
- "spam": 66.23
- },
- "LOW_SPECIAL_CHARS": {
- "fine": 531.668,
- "spam": 57.230000000000004
- },
- "LOW_CAPS": {
- "fine": 645.668,
- "spam": 175.23000000000002
- },
- "money": {
- "fine": 7.668,
- "spam": 9.23
- },
- "at": {
- "fine": 10.668,
- "spam": 19.23
- },
- "least": {
- "fine": 0.668,
- "spam": 1.23
- },
- "50m": {
- "fine": 0.668,
- "spam": 3.23
- },
- "SMALL_LENGTH": {
- "fine": 153.668,
- "spam": 18.23
- },
- "SPECIAL_CHAR": {
- "fine": 116.668,
- "spam": 77.23
- },
- "im": {
- "fine": 16.668,
- "spam": 6.23
- },
- "on": {
- "fine": 11.668,
- "spam": 46.230000000000004
- },
- "ironman": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "just": {
- "fine": 18.668,
- "spam": 6.23
- },
- "check": {
- "fine": 3.668,
- "spam": 1.23
- },
- "ah": {
- "fine": 5.668,
- "spam": 45.230000000000004
- },
- "": {
- "fine": 10.668,
- "spam": 0.23
- },
- "TINY_LENGTH": {
- "fine": 301.668,
- "spam": 1.23
- },
- "no": {
- "fine": 16.668,
- "spam": 11.23
- },
- "comprende": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "let": {
- "fine": 4.668,
- "spam": 0.23
- },
- "me": {
- "fine": 19.668,
- "spam": 64.23
- },
- "recipe": {
- "fine": 2.668,
- "spam": 0.23
- },
- "anyone": {
- "fine": 9.668,
- "spam": 12.23
- },
- "selling": {
- "fine": 2.668,
- "spam": 41.230000000000004
- },
- "a": {
- "fine": 35.668,
- "spam": 28.23
- },
- "god": {
- "fine": 2.668,
- "spam": 1.23
- },
- "pot": {
- "fine": 0.668,
- "spam": 1.23
- },
- "sorry": {
- "fine": 3.668,
- "spam": 0.23
- },
- "bro": {
- "fine": 4.668,
- "spam": 0.23
- },
- "nonist": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "i": {
- "fine": 76.668,
- "spam": 25.23
- },
- "added": {
- "fine": 2.668,
- "spam": 0.23
- },
- "some": {
- "fine": 6.668,
- "spam": 3.23
- },
- "more": {
- "fine": 7.668,
- "spam": 1.23
- },
- "debug": {
- "fine": 2.668,
- "spam": 0.23
- },
- "get": {
- "fine": 17.668,
- "spam": 15.23
- },
- "new": {
- "fine": 5.668,
- "spam": 2.23
- },
- "pick": {
- "fine": 3.668,
- "spam": 0.23
- },
- "how": {
- "fine": 16.668,
- "spam": 2.23
- },
- "much": {
- "fine": 8.668,
- "spam": 1.23
- },
- "aight": {
- "fine": 2.668,
- "spam": 0.23
- },
- "neu": {
- "fine": 2.668,
- "spam": 0.23
- },
- "has": {
- "fine": 4.668,
- "spam": 1.23
- },
- "tons": {
- "fine": 1.6680000000000001,
- "spam": 2.23
- },
- "of": {
- "fine": 18.668,
- "spam": 16.23
- },
- "qol": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "features": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "and": {
- "fine": 22.668,
- "spam": 21.23
- },
- "my": {
- "fine": 20.668,
- "spam": 55.230000000000004
- },
- "raider": {
- "fine": 2.668,
- "spam": 0.23
- },
- "axe": {
- "fine": 3.668,
- "spam": 1.23
- },
- "k": {
- "fine": 4.668,
- "spam": 1.23
- },
- "when": {
- "fine": 3.668,
- "spam": 0.23
- },
- "tried": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "to": {
- "fine": 40.668,
- "spam": 22.23
- },
- "apply": {
- "fine": 1.6680000000000001,
- "spam": 1.23
- },
- "it": {
- "fine": 33.668,
- "spam": 7.23
- },
- "HIGH_CAPS": {
- "fine": 23.668,
- "spam": 55.230000000000004
- },
- "minon": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "underpriced": {
- "fine": 0.668,
- "spam": 1.23
- },
- "lowest": {
- "fine": 0.668,
- "spam": 1.23
- },
- "bin": {
- "fine": 0.668,
- "spam": 3.23
- },
- "gemstone": {
- "fine": 0.668,
- "spam": 1.23
- },
- "container": {
- "fine": 0.668,
- "spam": 1.23
- },
- "/": {
- "fine": 2.668,
- "spam": 6.23
- },
- "1guana": {
- "fine": 0.668,
- "spam": 1.23
- },
- "easy": {
- "fine": 0.668,
- "spam": 3.23
- },
- "flip": {
- "fine": 3.668,
- "spam": 10.23
- },
- "LONG_LENGTH": {
- "fine": 77.668,
- "spam": 145.23000000000002
- },
- "SPECIAL_CHARS": {
- "fine": 21.668,
- "spam": 96.23
- },
- "cheap": {
- "fine": 0.668,
- "spam": 11.23
- },
- "bal": {
- "fine": 1.6680000000000001,
- "spam": 1.23
- },
- "pet": {
- "fine": 2.668,
- "spam": 1.23
- },
- "its": {
- "fine": 11.668,
- "spam": 1.23
- },
- "high": {
- "fine": 1.6680000000000001,
- "spam": 3.23
- },
- "level": {
- "fine": 0.668,
- "spam": 5.23
- },
- "too": {
- "fine": 6.668,
- "spam": 1.23
- },
- "do": {
- "fine": 23.668,
- "spam": 5.23
- },
- "you": {
- "fine": 47.668,
- "spam": 14.23
- },
- "support": {
- "fine": 0.668,
- "spam": 2.23
- },
- "lgtbq": {
- "fine": 0.668,
- "spam": 1.23
- },
- "vote": {
- "fine": 0.668,
- "spam": 5.23
- },
- "_____________": {
- "fine": 0.668,
- "spam": 1.23
- },
- "freshest": {
- "fine": 0.668,
- "spam": 1.23
- },
- "cuts": {
- "fine": 0.668,
- "spam": 1.23
- },
- "island": {
- "fine": 3.668,
- "spam": 8.23
- },
- "/visit": {
- "fine": 2.668,
- "spam": 27.23
- },
- "benedeqn": {
- "fine": 0.668,
- "spam": 1.23
- },
- "buying": {
- "fine": 1.6680000000000001,
- "spam": 21.23
- },
- "sorrow": {
- "fine": 0.668,
- "spam": 1.23
- },
- "leggings": {
- "fine": 0.668,
- "spam": 3.23
- },
- "for": {
- "fine": 22.668,
- "spam": 48.230000000000004
- },
- "m": {
- "fine": 6.668,
- "spam": 3.23
- },
- "/p": {
- "fine": 0.668,
- "spam": 32.230000000000004
- },
- "smithmonger": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "nobody": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "ive": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "been": {
- "fine": 2.668,
- "spam": 0.23
- },
- "looking": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "exotic": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "squid": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "leather": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "books": {
- "fine": 2.668,
- "spam": 2.23
- },
- "not": {
- "fine": 13.668,
- "spam": 2.23
- },
- "lol": {
- "fine": 19.668,
- "spam": 1.23
- },
- "needs": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "cookie": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "oh": {
- "fine": 9.668,
- "spam": 0.23
- },
- "that": {
- "fine": 17.668,
- "spam": 4.23
- },
- "wynncraf": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "havent": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "done": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "dungeons": {
- "fine": 2.668,
- "spam": 2.23
- },
- "hello": {
- "fine": 3.668,
- "spam": 0.23
- },
- "fellow": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "santa": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "join": {
- "fine": 2.668,
- "spam": 4.23
- },
- "fro6": {
- "fine": 0.668,
- "spam": 1.23
- },
- "kat": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "lost": {
- "fine": 1.6680000000000001,
- "spam": 1.23
- },
- "adventurer": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "does": {
- "fine": 5.668,
- "spam": 1.23
- },
- "make": {
- "fine": 8.668,
- "spam": 1.23
- },
- "people": {
- "fine": 3.668,
- "spam": 2.23
- },
- "notice": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "tho": {
- "fine": 4.668,
- "spam": 0.23
- },
- "hey": {
- "fine": 3.668,
- "spam": 0.23
- },
- "up": {
- "fine": 3.668,
- "spam": 0.23
- },
- "what": {
- "fine": 22.668,
- "spam": 2.23
- },
- "u": {
- "fine": 21.668,
- "spam": 5.23
- },
- "recommend": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "help": {
- "fine": 3.668,
- "spam": 2.23
- },
- "but": {
- "fine": 10.668,
- "spam": 1.23
- },
- "they": {
- "fine": 3.668,
- "spam": 0.23
- },
- "only": {
- "fine": 5.668,
- "spam": 6.23
- },
- "have": {
- "fine": 26.668,
- "spam": 8.23
- },
- "5k": {
- "fine": 2.668,
- "spam": 0.23
- },
- "durability": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "mine": {
- "fine": 6.668,
- "spam": 0.23
- },
- "prisma": {
- "fine": 0.668,
- "spam": 1.23
- },
- "pumps": {
- "fine": 0.668,
- "spam": 1.23
- },
- "/party": {
- "fine": 0.668,
- "spam": 2.23
- },
- "lowballing": {
- "fine": 0.668,
- "spam": 17.23
- },
- "160m": {
- "fine": 0.668,
- "spam": 1.23
- },
- "purse": {
- "fine": 0.668,
- "spam": 11.23
- },
- "can": {
- "fine": 25.668,
- "spam": 16.23
- },
- "30k": {
- "fine": 0.668,
- "spam": 1.23
- },
- "free": {
- "fine": 4.668,
- "spam": 5.23
- },
- "any": {
- "fine": 4.668,
- "spam": 4.23
- },
- "cobble": {
- "fine": 2.668,
- "spam": 0.23
- },
- "y": {
- "fine": 2.668,
- "spam": 0.23
- },
- "l": {
- "fine": 1.6680000000000001,
- "spam": 1.23
- },
- "ol": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "sometimes": {
- "fine": 2.668,
- "spam": 0.23
- },
- "arguing": {
- "fine": 3.668,
- "spam": 0.23
- },
- "is": {
- "fine": 34.668,
- "spam": 5.23
- },
- "fun": {
- "fine": 3.668,
- "spam": 0.23
- },
- "wuts": {
- "fine": 2.668,
- "spam": 0.23
- },
- "dat": {
- "fine": 2.668,
- "spam": 0.23
- },
- "wait": {
- "fine": 13.668,
- "spam": 0.23
- },
- "starlight": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "this": {
- "fine": 12.668,
- "spam": 4.23
- },
- "ok": {
- "fine": 10.668,
- "spam": 0.23
- },
- "think": {
- "fine": 3.668,
- "spam": 0.23
- },
- "reason": {
- "fine": 1.6680000000000001,
- "spam": 1.23
- },
- "bz": {
- "fine": 2.668,
- "spam": 0.23
- },
- "down": {
- "fine": 2.668,
- "spam": 0.23
- },
- "because": {
- "fine": 2.668,
- "spam": 0.23
- },
- "some1": {
- "fine": 1.6680000000000001,
- "spam": 1.23
- },
- "did": {
- "fine": 2.668,
- "spam": 0.23
- },
- "huge": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "buy": {
- "fine": 4.668,
- "spam": 27.23
- },
- "order": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "broke": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "inst": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "biding": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "boi": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "getting": {
- "fine": 3.668,
- "spam": 0.23
- },
- "gold": {
- "fine": 3.668,
- "spam": 1.23
- },
- "griffin": {
- "fine": 1.6680000000000001,
- "spam": 1.23
- },
- "upgrades": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "even": {
- "fine": 3.668,
- "spam": 0.23
- },
- "happened": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "be": {
- "fine": 7.668,
- "spam": 1.23
- },
- "sweatin": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "sugar": {
- "fine": 1.6680000000000001,
- "spam": 3.23
- },
- "rush": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "book": {
- "fine": 2.668,
- "spam": 0.23
- },
- "like": {
- "fine": 12.668,
- "spam": 2.23
- },
- "furfsky": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "reborn": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "active": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "texture": {
- "fine": 2.668,
- "spam": 0.23
- },
- "packs": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "alr": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "dilliondbomb": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "wc": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "ur": {
- "fine": 7.668,
- "spam": 4.23
- },
- "items": {
- "fine": 1.6680000000000001,
- "spam": 14.23
- },
- "100m": {
- "fine": 0.668,
- "spam": 5.23
- },
- "hoe/no": {
- "fine": 0.668,
- "spam": 1.23
- },
- "minions": {
- "fine": 6.668,
- "spam": 19.23
- },
- "tamasso": {
- "fine": 0.668,
- "spam": 1.23
- },
- "cheapest": {
- "fine": 0.668,
- "spam": 4.23
- },
- "barriers": {
- "fine": 0.668,
- "spam": 1.23
- },
- "tier": {
- "fine": 1.6680000000000001,
- "spam": 5.23
- },
- "xi": {
- "fine": 0.668,
- "spam": 2.23
- },
- "snow": {
- "fine": 3.668,
- "spam": 11.23
- },
- "minion": {
- "fine": 2.668,
- "spam": 11.23
- },
- "elartord": {
- "fine": 0.668,
- "spam": 1.23
- },
- "000": {
- "fine": 0.668,
- "spam": 4.23
- },
- "left": {
- "fine": 3.668,
- "spam": 3.23
- },
- "entry": {
- "fine": 0.668,
- "spam": 1.23
- },
- "giveaway": {
- "fine": 0.668,
- "spam": 1.23
- },
- "bl4ck": {
- "fine": 0.668,
- "spam": 1.23
- },
- "fr1day": {
- "fine": 0.668,
- "spam": 1.23
- },
- "fre3": {
- "fine": 0.668,
- "spam": 4.23
- },
- "c0ins": {
- "fine": 0.668,
- "spam": 2.23
- },
- "coinempires": {
- "fine": 0.668,
- "spam": 4.23
- },
- "com": {
- "fine": 1.6680000000000001,
- "spam": 18.23
- },
- "else": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "use": {
- "fine": 4.668,
- "spam": 1.23
- },
- "eyes": {
- "fine": 2.668,
- "spam": 1.23
- },
- "got": {
- "fine": 7.668,
- "spam": 2.23
- },
- "them": {
- "fine": 6.668,
- "spam": 0.23
- },
- "so": {
- "fine": 14.668,
- "spam": 4.23
- },
- "could": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "sword": {
- "fine": 4.668,
- "spam": 5.23
- },
- "9y": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "noice": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "plus": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "actually": {
- "fine": 3.668,
- "spam": 0.23
- },
- "productive": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "apparently": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "frags": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "protector": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "all": {
- "fine": 9.668,
- "spam": 4.23
- },
- "bought": {
- "fine": 2.668,
- "spam": 1.23
- },
- "costs": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "500m": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "insta": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "f6": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "comp": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "chat": {
- "fine": 3.668,
- "spam": 0.23
- },
- "p": {
- "fine": 1.6680000000000001,
- "spam": 9.23
- },
- "go": {
- "fine": 7.668,
- "spam": 11.23
- },
- "trade": {
- "fine": 4.668,
- "spam": 0.23
- },
- "one": {
- "fine": 11.668,
- "spam": 4.23
- },
- "qwe": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "duelin": {
- "fine": 1.6680000000000001,
- "spam": 0.23
- },
- "rn": {
- "fine": 7.668,
- "spam": 1.23
- },
- "wtf": {
- "fine": 3.668,
- "spam": 1.23
- },
- "thanks": {
- "fine": 3.668,
- "spam": 0.23
- },
- "helping": {
- "fine": 1.6680000000000001,
- "spam": 1.23
- },
- "everyone": {
- "fine": 3.668,
- "spam": 0.23
- },
- "are": {
- "fine": 19.668,
- "spam": 2.23
- },
- "sacks": {
- "fine": 2.668,
- "spam": 0.23
- },
- "around": {
- "fine": 1.6680000000000001,
- "spam": 1.23
- },
- "60k": {
- "fine": 2.668,
- "spam": 0.23
- },
- "yeah": {
- "fine": 7.668,
- "spam": 0.23
- },
- "off": {
- "fine": 2.668,
- "spam": 0.23
- },
- "another": {
- "fine": 2.668,
- "spam": 0.23