forked from Muzifs/LGBot
Исправления критикал проблем
This commit is contained in:
@@ -116,15 +116,37 @@ def contains_bad_word(text: str) -> bool:
|
||||
bad_words = get_bad_words()
|
||||
exceptions = get_exceptions()
|
||||
|
||||
# Проверяем исключения
|
||||
for exception in exceptions:
|
||||
if exception in text_lower:
|
||||
text_lower = text_lower.replace(exception, '')
|
||||
|
||||
# Проверяем бранные слова
|
||||
for bad_word in bad_words:
|
||||
if bad_word in text_lower:
|
||||
return True
|
||||
# Проверяем, не является ли это слово частью исключения
|
||||
# Ищем все вхождения плохого слова
|
||||
start = 0
|
||||
while True:
|
||||
pos = text_lower.find(bad_word, start)
|
||||
if pos == -1:
|
||||
break
|
||||
|
||||
# Проверяем, входит ли это вхождение в какое-либо исключение
|
||||
is_exception = False
|
||||
for exception in exceptions:
|
||||
# Проверяем, находится ли плохое слово внутри слова-исключения
|
||||
# и содержится ли это слово-исключение в тексте в этой позиции
|
||||
if bad_word in exception:
|
||||
# Ищем позицию исключения, которое могло бы содержать это плохое слово
|
||||
exc_start = text_lower.find(exception, max(0, pos - len(exception)))
|
||||
if exc_start != -1:
|
||||
exc_end = exc_start + len(exception)
|
||||
# Если плохое слово находится внутри исключения
|
||||
if exc_start <= pos < exc_end:
|
||||
is_exception = True
|
||||
break
|
||||
|
||||
# Если это не исключение, значит найдено плохое слово
|
||||
if not is_exception:
|
||||
return True
|
||||
|
||||
start = pos + 1
|
||||
|
||||
return False
|
||||
|
||||
@@ -148,14 +170,37 @@ def get_bad_words_from_text(text: str) -> list:
|
||||
bad_words = get_bad_words()
|
||||
exceptions = get_exceptions()
|
||||
|
||||
# Проверяем исключения
|
||||
for exception in exceptions:
|
||||
if exception in text_lower:
|
||||
text_lower = text_lower.replace(exception, '')
|
||||
|
||||
# Ищем бранные слова
|
||||
for bad_word in bad_words:
|
||||
if bad_word in text_lower:
|
||||
found_words.append(bad_word)
|
||||
# Проверяем, не является ли это слово частью исключения
|
||||
start = 0
|
||||
word_is_valid = False
|
||||
while True:
|
||||
pos = text_lower.find(bad_word, start)
|
||||
if pos == -1:
|
||||
break
|
||||
|
||||
# Проверяем, входит ли это вхождение в какое-либо исключение
|
||||
is_exception = False
|
||||
for exception in exceptions:
|
||||
if bad_word in exception:
|
||||
exc_start = text_lower.find(exception, max(0, pos - len(exception)))
|
||||
if exc_start != -1:
|
||||
exc_end = exc_start + len(exception)
|
||||
if exc_start <= pos < exc_end:
|
||||
is_exception = True
|
||||
break
|
||||
|
||||
# Если найдено хотя бы одно вхождение, которое не является исключением
|
||||
if not is_exception:
|
||||
word_is_valid = True
|
||||
break
|
||||
|
||||
start = pos + 1
|
||||
|
||||
# Добавляем слово только если оно действительно найдено (не в исключении)
|
||||
if word_is_valid:
|
||||
found_words.append(bad_word)
|
||||
|
||||
return found_words
|
Reference in New Issue
Block a user