BUGFIX2: fix is_mixed

- чтобы не срабатывало на питон-код с русскими словами
This commit is contained in:
kotolex
2023-12-25 08:02:23 +05:00
parent 708223003a
commit 7f27a641dd
3 changed files with 11 additions and 3 deletions
+2 -1
View File
@@ -36,9 +36,10 @@ ALLOWED_WORDS = [
"jetbrains",
]
RUS = """ёйцукенгшщзхъфывапролджэячсмитьбю.Ё!"№;%:?ЙЦУКЕНГШЩЗХЪ/ФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,"""
ONLY_RUS_LETTERS = "ёйцукенгшщзхъфывапролджэячсмитьбю"
ONLY_ENG_LETTERS = string.ascii_lowercase
SYMBOLS = """`[];',./~!@#$%^{}|:"<>?«»-+*/№=()&"""
RUS = """ёйцукенгшщзхъфывапролджэячсмитьбю.Ё!"№;%:?ЙЦУКЕНГШЩЗХЪ/ФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,"""
ENG = """`qwertyuiop[]asdfghjkl;'zxcvbnm,./~!@#$%^&QWERTYUIOP{}|ASDFGHJKL:"ZXCVBNM<>?"""
RUS_ENG_TABLE = str.maketrans(RUS, ENG)
ENG_RUS_TABLE = str.maketrans(ENG, RUS)
+5 -2
View File
@@ -6,7 +6,7 @@ from urllib.request import urlopen
from telebot import types
from .constants import SPAM, BAN_WORDS, NON_GRATA, ADMIN_ID, ONLY_RUS_LETTERS, ONLY_ENG_LETTERS, RULES_TEXT
from .constants import SPAM, BAN_WORDS, NON_GRATA, ADMIN_ID, ONLY_RUS_LETTERS, ONLY_ENG_LETTERS, RULES_TEXT, SYMBOLS
def is_url_reachable(url: str) -> bool:
@@ -30,8 +30,11 @@ def is_mixed(text: str) -> bool:
Разбивает текст на слова и проверяет на смешанный алфавит, спамеры используют его. Слово допускается только
полностью на русском или русский + знаки пунктуации
"""
for word in text.split():
cleaned_text = ''.join(letter if letter not in SYMBOLS else ' ' for letter in text)
for word in cleaned_text.split():
word = word.strip().lower()
if not word:
continue
if any(e in ONLY_RUS_LETTERS for e in word) and any(e in ONLY_ENG_LETTERS for e in word):
return True
return False
+4
View File
@@ -38,6 +38,10 @@ class TestSpam(TestCase):
«Я пуп земли», – твердит гордец надменно,
Забыв, что он – песчинка во вселенной."""
self.assertFalse(is_mixed(text))
self.assertFalse(is_mixed('print("привет")'))
self.assertFalse(is_mixed("print('привет')"))
self.assertFalse(is_mixed("text='слово'"))
class TestOthers(TestCase):