
31.01.2026, 08:10
|
|
Постоянный
Регистрация: 06.11.2021
Сообщений: 397
С нами:
2378594
Репутация:
48
|
|
Сообщение от triazovkirill
Спасибо за уточнение, делал первую версию фреймворка так чтобы было много темплейтов, поэтому с ними не особо парился
Привет Кирюха, для тебя специально настрочил, коряво конечно, но работает:
Python:
Код:
import
re
{
"ban_words"
:
[
"чучмек*"
,
# чучмеки, чучмеку и т.д.
"гeю*"
,
# геюга к примеру
"негр*"
,
# негры, негритосики, негру и т.д.
]
}
# условно хранишь слова в json там где то
def
prepare_pattern
(
word
:
str
)
-
>
re
.
Pattern
:
word
=
word
.
lower
(
)
if
word
.
endswith
(
"*"
)
:
base
=
re
.
escape
(
word
[
:
-
1
]
)
pattern
=
rf'\b{base}[а-яёa-z]*\b'
else
:
pattern
=
rf'\b{re.escape(word)}\b'
return
re
.
compile
(
pattern
,
re
.
IGNORECASE
|
re
.
UNICODE
)
ban_patterns
=
[
prepare_pattern
(
w
)
for
w
in
ban_words
]
def
contains_banned
(
text
:
str
)
-
>
bool
:
return
any
(
pat
.
search
(
text
)
for
pat
in
ban_patterns
)
Ну или вот так, как у меня в боте было с автомодом, самый ахуенный:
Python:
Код:
import
re
BAN_WORDS
=
[
"чучмек*"
,
# чучмеки, чучмеку и т.д.
"гeю*"
,
# геюга к примеру
"негр*"
,
# негры, негритосики, негру и т.д.
]
PATTERNS
=
[
re
.
compile
(
rf'\b{re.escape(w[:-1] if w.endswith("*") else w)}'
rf'{"[а-яёa-z]*" if w.endswith("*") else ""}\b'
,
re
.
IGNORECASE
|
re
.
UNICODE
)
for
w
in
map
(
str
.
lower
,
BAN_WORDS
)
]
def
is_banned
(
text
:
str
)
-
>
bool
:
return
any
(
p
.
search
(
text
)
for
p
in
PATTERNS
)
|
|
|