Skip to content

Commit 6af5431

Browse files
committed
Fix check if the text of message is not null.
1 parent 8330084 commit 6af5431

File tree

3 files changed

+50
-6
lines changed

3 files changed

+50
-6
lines changed

src/main/kotlin/pro/dionea/service/SpamAnalysis.kt

+8-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ package pro.dionea.service
33
import com.vdurmont.emoji.EmojiParser
44
import org.springframework.stereotype.Service
55
import pro.dionea.dto.SpamReason
6-
import java.lang.StringBuilder
6+
import java.util.regex.Matcher
7+
import java.util.regex.Pattern
78

89
@Service
910
class SpamAnalysis(
@@ -12,6 +13,7 @@ class SpamAnalysis(
1213
val kvalueService: KValueService) {
1314

1415
companion object {
16+
val CONTACT_PATTERN = Pattern.compile("@\\w+")
1517
const val CONVERTED_LETTERS = 20
1618
}
1719

@@ -23,8 +25,11 @@ class SpamAnalysis(
2325
if (emojis.size >= 3) {
2426
return SpamReason(true, "Содержит более 3 эмоджи.")
2527
}
26-
val contactPattern = "@\\w+".toRegex()
27-
if (emojis.isNotEmpty() && contactPattern.containsMatchIn(text)) {
28+
val count = CONTACT_PATTERN.matcher(text).results().count()
29+
if (count > 1) {
30+
return SpamReason(true, "Содержит множественные контактные данные.")
31+
}
32+
if (emojis.isNotEmpty() && count > 0) {
2833
return SpamReason(true, "Содержит эмодзи и контактный логин.")
2934
}
3035
val lang = IdentifyLang(text).lang()

src/main/kotlin/pro/dionea/service/actions/TextMessageAction.kt

+1-3
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,7 @@ class TextMessageAction(val contactService: ContactService,
3838
}
3939
spamService.add(spam)
4040
val send = SendMessage(
41-
message.chatId.toString(), "Обнаружен спам:\n" +
42-
"${spamReason.text}\n" +
43-
"Сообщение будет удалено через 10 секунд."
41+
message.chatId.toString(), "Обнаружен спам"
4442
)
4543
send.replyToMessageId = message.messageId
4644
val infoMsg = remoteChat.execute(send)

src/test/kotlin/pro/dionea/SpamAnalysisTest.kt

+41
Original file line numberDiff line numberDiff line change
@@ -421,4 +421,45 @@ class SpamAnalysisTest {
421421
"@Nmw999"
422422
assertThat(SpamAnalysis(filterService, keyService, kvalueService).isSpam(text).spam).isTrue()
423423
}
424+
425+
@Test
426+
fun isSpam30() {
427+
val filterRepository = FilterFakeRepository()
428+
val filterService = FilterService(filterRepository)
429+
val keyRepository = KeyFakeRepository()
430+
val keyService = KeyService(keyRepository)
431+
val kvalueRepository = KValueFakeRepository()
432+
val kvalueService = KValueService(kvalueRepository)
433+
val filter = filterRepository.save(Filter(1))
434+
val keyJob = keyRepository.save(Key(1, filter))
435+
kvalueRepository.save(KValue(1, keyJob, "кайф"))
436+
val keyMessage = keyRepository.save(Key(2, filter))
437+
kvalueRepository.save(KValue(2, keyMessage, "бесплатно"))
438+
val text = "@Nmw999 пᴘоҕᴇй дᴇвʏωкʏ нᴀ нᴀличиᴇ интимок @Nmw999"
439+
assertThat(SpamAnalysis(filterService, keyService, kvalueService).isSpam(text).spam).isTrue()
440+
}
441+
442+
@Test
443+
fun isSpam31() {
444+
val filterRepository = FilterFakeRepository()
445+
val filterService = FilterService(filterRepository)
446+
val keyRepository = KeyFakeRepository()
447+
val keyService = KeyService(keyRepository)
448+
val kvalueRepository = KValueFakeRepository()
449+
val kvalueService = KValueService(kvalueRepository)
450+
val filter = filterRepository.save(Filter(1))
451+
val keyJob = keyRepository.save(Key(1, filter))
452+
kvalueRepository.save(KValue(1, keyJob, "кайф"))
453+
val keyMessage = keyRepository.save(Key(2, filter))
454+
kvalueRepository.save(KValue(2, keyMessage, "бесплатно"))
455+
val text = "\uD83C\uDDF7\uD83C\uDDFAТРЕБУЮТСЯ РЕБЯТА|МУЖЧИНЫ-ЖЕНЩИНЫ ДЛЯ РАБОТЫ ОНЛАЙН\n" +
456+
"возраст 18+❗\uFE0F (не продажи, не валюта)\n" +
457+
"\n" +
458+
"➤Оплата достойная\n" +
459+
"➤Можно как подработка (совмещение)\n" +
460+
"➤Без опыта\n" +
461+
"\n" +
462+
"По вопросам + Переходите сюда (https://telegra.ph/Kontakt-dlya-svyazi-08-08) !"
463+
assertThat(SpamAnalysis(filterService, keyService, kvalueService).isSpam(text).spam).isTrue()
464+
}
424465
}

0 commit comments

Comments
 (0)