From 59c3daf182afa481c3d25ce7968e3e2249a61da8 Mon Sep 17 00:00:00 2001 From: Daniel Tischner Date: Mon, 28 Jul 2025 08:40:17 +0200 Subject: [PATCH 1/2] (Added scam message) (#1286) config changes have been applied to the bot already, no need to take care during deployment --- application/config.json.template | 3 ++- .../tjbot/features/moderation/scam/ScamDetectorTest.java | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/application/config.json.template b/application/config.json.template index 0c0989ba96..d1ec6559f3 100644 --- a/application/config.json.template +++ b/application/config.json.template @@ -47,7 +47,8 @@ "freenitro", "^earn$", "^earning", - ".exe$" + ".exe$", + "mrbeast" ], "hostWhitelist": [ "discord.com", diff --git a/application/src/test/java/org/togetherjava/tjbot/features/moderation/scam/ScamDetectorTest.java b/application/src/test/java/org/togetherjava/tjbot/features/moderation/scam/ScamDetectorTest.java index 609e4beeb4..9046aeb279 100644 --- a/application/src/test/java/org/togetherjava/tjbot/features/moderation/scam/ScamDetectorTest.java +++ b/application/src/test/java/org/togetherjava/tjbot/features/moderation/scam/ScamDetectorTest.java @@ -37,7 +37,7 @@ void setUp() { when(scamConfig.getSuspiciousKeywords()).thenReturn(Set.of("nitro", "boob", "sexy", "sexi", "esex", "steam", "gift", "onlyfans", "bitcoin", "btc", "promo", "trader", "trading", "whatsapp", "crypto", "^claim", "teen", "adobe", "hack", "steamcommunity", - "freenitro", "^earn$", "^earning", ".exe$")); + "freenitro", "^earn$", "^earning", ".exe$", "mrbeast")); when(scamConfig.getHostWhitelist()).thenReturn(Set.of("discord.com", "discord.media", "discordapp.com", "discordapp.net", "discordstatus.com", "thehackernews.com", "gradle.org", "help.gradle.org", "youtube.com", "www.youtube.com")); @@ -400,7 +400,8 @@ B2CWorkflow Builder (React Flow) Ready to unlock your earning potential in the digital market? you can start earning $100,000 and even more as a beginner from the digital market, DM me for expert guidance or contact me directly on telegram and start building your financial future. Telegram username @JohnSmith123""", - "Grab it before it's deleted (available for Windows and macOS): https://www.reddit.com/r/TVBaFreeHub/comments/12345t/ninaatradercrackedfullpowertradingfreefor123/"); + "Grab it before it's deleted (available for Windows and macOS): https://www.reddit.com/r/TVBaFreeHub/comments/12345t/ninaatradercrackedfullpowertradingfreefor123/", + "Bro, claim 0.1 BTC now! Use promo code \"mrbeast\" at expmcoins.com screen @everyone"); } private static List provideRealFalsePositiveMessages() { From 7b5dbb1c24208e2c99f994675849ad820ba7f4c3 Mon Sep 17 00:00:00 2001 From: Daniel Tischner Date: Tue, 29 Jul 2025 09:08:49 +0200 Subject: [PATCH 2/2] Fixed ScamDetector ignoring untrusted users and firing against trusted (#1287) --- .../tjbot/features/moderation/scam/ScamDetector.java | 2 +- .../tjbot/features/moderation/scam/ScamDetectorTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/features/moderation/scam/ScamDetector.java b/application/src/main/java/org/togetherjava/tjbot/features/moderation/scam/ScamDetector.java index 3240530f50..4898316d19 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/moderation/scam/ScamDetector.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/moderation/scam/ScamDetector.java @@ -53,7 +53,7 @@ public ScamDetector(Config config) { public boolean isScam(Message message) { Member author = message.getMember(); boolean isTrustedUser = author != null - && author.getRoles().stream().map(Role::getName).noneMatch(hasTrustedRole); + && author.getRoles().stream().map(Role::getName).anyMatch(hasTrustedRole); if (isTrustedUser) { return false; } diff --git a/application/src/test/java/org/togetherjava/tjbot/features/moderation/scam/ScamDetectorTest.java b/application/src/test/java/org/togetherjava/tjbot/features/moderation/scam/ScamDetectorTest.java index 9046aeb279..f197cc7708 100644 --- a/application/src/test/java/org/togetherjava/tjbot/features/moderation/scam/ScamDetectorTest.java +++ b/application/src/test/java/org/togetherjava/tjbot/features/moderation/scam/ScamDetectorTest.java @@ -223,7 +223,7 @@ void ignoreTrustedUser() { boolean isScamResult = scamDetector.isScam(message); // THEN flags it as harmless - assertTrue(isScamResult); + assertFalse(isScamResult); } private static Message createMessageMock(String content, List attachments) {