From ab305bac0cca3e8fbe2036a877ef28ce2b579731 Mon Sep 17 00:00:00 2001 From: kotolex Date: Thu, 28 Dec 2023 11:05:45 +0500 Subject: [PATCH] SPAM FIX MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - убрал из констант СПАМ то, что и так проверялось смешением алфавита или более общим паттерном - написал побольше тестов - нагенерил на основе тестов еще выриантов призыва в личку --- src/constants.py | 24 +++++++++++------------ tests/test_helpers.py | 44 ++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 53 insertions(+), 15 deletions(-) diff --git a/src/constants.py b/src/constants.py index 2fbe1cf..3e6606c 100644 --- a/src/constants.py +++ b/src/constants.py @@ -49,18 +49,18 @@ RULES = types.InlineKeyboardButton("🟡 Правила чата", url="https:// FAQ = types.InlineKeyboardButton("🔵 Частые вопросы", url="https://telegra.ph/faq-10-07-4") LIB = types.InlineKeyboardButton("📚 Книги", url="https://telegra.ph/what-to-read-10-06") -SPAM = {"me.sv/", "tg.sv/", "goo.by/", "go.sv/", "intim.video/", "uclck.ru/", 'раб0т', - '0плат', 'Жду в ЛС', 'новый способ заработка', 'криптовалют', 'цифровых валют', - 'Binance', 'ByBit', 'Помогу заработать', 'подробнее в лс', 'арбитраж', 'напиши в личку', - 'DEX бирж', 'пишите в ЛС', 'Писать в ЛИЧКУ!', 'любую девушку', 'Пишите в личку', - 'прибыль у вaс', 'обучaю быстро', 'в л.с.', 'вопросам в ЛС', 'Предлагаю новый вид заработка', - 'пишите мне в ЛС', 'Писать в ЛС', 'межбиржев', 'КУПЮРЫ', '💎', 'kрипт', 'биpж', 'apбитpaж', - 'в неделю выходит до', 'предложить заработок', 'голые фот', '🔞', 'интимные фот', '➡️', - 'заработка в крипте', 'Веду набор', 'Идёт набор', 'мне в ЛС', 'Доход от', 'Trading', - 'P2P', 'Идет набор', 'в лс', 'нaбop', 'комaндy', 'kpuпт', 'бupж', '💰', 'пишитe', '💸', - '$ в неделю', 'обучаю с нуля', 'доходы для всех', 'по трейдингу', 'фальшивые рубли', '‼️', - 'зароботку', 'Набuраю', 'цuфр', 'Обучу вас', 'прuб', 'остались курсы', 'Crypt', 'kр', 'рu', - 'в лc', "в личные сообще"} +SPAM = {"me.sv/", "tg.sv/", "goo.by/", "go.sv/", "intim.video/", "uclck.ru/", + '💎', '🔞', '➡️', '💰', '💸', '‼️', + 'раб0т', '0плат', 'новый способ заработка', 'криптовалют', 'цифровых валют', 'Binance', 'ByBit', + 'Помогу заработать', 'арбитраж', 'DEX бирж', 'любую девушку', 'прибыль у вaс', 'обучaю быстро', + 'Предлагаю новый вид заработка', 'межбиржев', 'КУПЮРЫ', 'биpж', 'apбитpaж', 'в неделю выходит до', + 'предложить заработок', 'голые фот', 'интимные фот', 'заработка в крипте', 'Веду набор', 'Идёт набор', + 'Доход от', 'Trading', 'P2P', 'Идет набор', '$ в неделю', 'обучаю с нуля', 'доходы для всех', + 'по трейдингу', 'фальшивые рубли', 'зароботку', 'Обучу вас', 'остались курсы', 'Crypt', + + 'в лc', "в личные сообще", 'напиши в личку', 'Писать в ЛИЧКУ!', 'Пишите в личку', 'в л.с.', 'в лс', + 'Писать в личные' + } NON_GRATA = {"дудар", "хауди", "dudar"} BAN_WORDS = {"GREEN"} diff --git a/tests/test_helpers.py b/tests/test_helpers.py index 15c4dce..5a68972 100644 --- a/tests/test_helpers.py +++ b/tests/test_helpers.py @@ -4,13 +4,35 @@ from src.constants import SPAM, BAN_WORDS, ADMIN_ID, RULES_TEXT from src.helpers import is_spam, is_mixed, is_ban_words_in_caption, is_in_not_allowed, is_nongrata, is_admin, \ fetch_rule, cleaned_text, remove_spaces, has_no_letters -CASES = ( +REAL_CASES = ( "Оформим резидeнтствo ОАЭ без предoплаты за 5000 дирхам. Пoдробнoсти в лc", "Всем привет Я в поисках людей в kpиптo кoмaнду У нас вы пройдете 6ecплaтноe обученue 1-3 дня Можно совмещать с основной paбoтoй", "Здравствуйте! Нужны 2 человека от 200 $/день. Можно без опыта Пишите в личные сообщения +", - "Здравствуйте!Нужны 2 человека от 200 $/день.Пишите в личные сообщение +" + "Здравствуйте!Нужны 2 человека от 200 $/день.Пишите в личные сообщение +", + + f"🙌Присоединяйтесь к нашей команде и освойте мир цифровой валюты совершенно бесплатно! Низкий порог входа " + f"позволяет каждому воплотить свои финансовые амбиции. У нас - не просто обучение, а возможность изменить свое " + f"финансовое будущее. Прокачайте свои навыки вместе с нами!Писать в личные✌️", ) +TEST_CASES = ('here it me.sv/122', "My site is tg.sv/home", "look here goo.by/home", "Go there go.sv/home", + "I am here intim.video/home", "Here ckick it uclck.ru/home", 'WOW💎', 'Attention 🔞', 'Look here ➡️', + 'Money for you💰', 'Some cash💸', 'Real money‼️', 'Много раб0т', '0плата гарантируется', + 'для вас новый способ заработка', 'в сфере криптовалют', 'в сфере цифровых валют', 'на бирже Binance', + 'на бирже ByBit', 'Помогу заработать денег', 'арбитраж вам нужен', 'DEX биржи', 'любую девушку можно', + 'прибыль у вaс в кармане', 'обучaю быстро и бесплатно', 'Предлагаю новый вид заработка', + 'межбиржевой круг', 'КУПЮРЫ как настоящие', 'kрипта форева', 'биpжа ждет', 'apбитpaж валют', + 'в неделю выходит до 100', 'хочу предложить заработок', 'голые фотки баб', 'интимные фото девчат', + 'заработка в крипте много не бывает', 'Веду набор в команде', 'Идёт набор ко мне', 'Доход от 100', + 'Trading это круто', 'P2P бойз', 'Идет набор куда то', 'нaбop номера', 'в комaндy', 'kpuпта есть', + 'бupжы рулят', 'пишитe всем', 'ноль $ в неделю', 'обучаю с нуля и единицы', 'доходы для всех парней', + 'по трейдингу пройдем', 'фальшивые рубли это зло', 'зароботку в нете', 'Набuраю номера', 'цuфры есть?', + 'Обучу вас плясать', 'прuбором владею', 'остались курсы по шитью', 'Cryptограф', 'kристалл', 'рuсовать', + 'в лc пиши', "в личные сообщения пиши", 'Жду в ЛС ребят', 'подробнее в лс напишу', 'напиши в личку друг', + 'пишите в ЛС парни', 'Писать в ЛИЧКУ! ура!', 'Пишите в личку админу', 'в л.с. кпсс', 'по вопросам в ЛС', + 'пишите мне в ЛС девчата', 'Писать в ЛС не нужно', 'мне в ЛС не пишите', 'в лс пишите', 'Писать в личные' + ) + class TestSpam(TestCase): def test_simple(self): @@ -19,7 +41,12 @@ class TestSpam(TestCase): self.assertTrue(is_spam(spam_word)) def test_case_first(self): - for text in CASES: + for text in REAL_CASES: + with self.subTest(f"check case({text})"): + self.assertTrue(is_spam(text)) + + def test_main_cases(self): + for text in TEST_CASES: with self.subTest(f"check case({text})"): self.assertTrue(is_spam(text)) @@ -44,6 +71,17 @@ class TestSpam(TestCase): self.assertFalse(is_mixed('print("привет")')) self.assertFalse(is_mixed("print('привет')")) self.assertFalse(is_mixed("text='слово'")) + self.assertTrue(is_mixed("kрипт")) + self.assertTrue(is_mixed("kpuпт")) + self.assertTrue(is_mixed('бupж')) + self.assertTrue(is_mixed('пишитe')) + self.assertTrue(is_mixed('нaбop')) + self.assertTrue(is_mixed('комaндy')) + self.assertTrue(is_mixed('Набuраю')) + self.assertTrue(is_mixed('цuфр')) + self.assertTrue(is_mixed('прuб')) + self.assertTrue(is_mixed('kр')) + self.assertTrue(is_mixed('рu')) class TestOthers(TestCase):