forked from Muzifs/LGBot
исправление работы списков слов
добавление сброса счётчиков нарушений
This commit is contained in:
@@ -56,7 +56,7 @@ def get_mute_duration(violations_count: int) -> int:
|
||||
|
||||
return MUTE_LEVELS[level_index]
|
||||
|
||||
async def apply_mute(bot: AsyncTeleBot, message: Message, user_id: int, duration: int, violations_count: int):
|
||||
async def apply_mute(bot: AsyncTeleBot, message: Message, user_id: int, duration: int, violations_count: int, bad_words_found: list = None):
|
||||
"""
|
||||
Применяет мут к пользователю.
|
||||
|
||||
@@ -66,6 +66,7 @@ async def apply_mute(bot: AsyncTeleBot, message: Message, user_id: int, duration
|
||||
user_id: ID пользователя
|
||||
duration: Длительность мута в секундах (None для перманентного)
|
||||
violations_count: Количество нарушений
|
||||
bad_words_found: Список найденных плохих слов
|
||||
"""
|
||||
try:
|
||||
# Устанавливаем ограничения (только чтение)
|
||||
@@ -97,6 +98,14 @@ async def apply_mute(bot: AsyncTeleBot, message: Message, user_id: int, duration
|
||||
except Exception as e:
|
||||
logger.warning(f"Не удалось удалить сообщение: {e}")
|
||||
|
||||
# Формируем информацию о найденных словах
|
||||
words_info = ""
|
||||
if bad_words_found:
|
||||
words_list = ", ".join([f"«{word}»" for word in bad_words_found])
|
||||
words_info = f"Найдено слов: {words_list}"
|
||||
else:
|
||||
words_info = "Использование нецензурной лексики"
|
||||
|
||||
# Формируем сообщение о муте
|
||||
if duration is None:
|
||||
time_display = "навсегда"
|
||||
@@ -127,7 +136,7 @@ async def apply_mute(bot: AsyncTeleBot, message: Message, user_id: int, duration
|
||||
action="АВТОМУТ",
|
||||
user_id=user_id,
|
||||
admin_id=None, # Автоматическое действие
|
||||
reason=f"Использование нецензурной лексики (нарушение #{violations_count})",
|
||||
reason=f"{words_info} (нарушение #{violations_count})",
|
||||
duration=time_display,
|
||||
)
|
||||
|
||||
@@ -160,6 +169,9 @@ async def check_message_for_profanity(bot: AsyncTeleBot, message: Message):
|
||||
if not contains_bad_word(message.text):
|
||||
return
|
||||
|
||||
# Получаем список найденных плохих слов
|
||||
bad_words_found = get_bad_words_from_text(message.text)
|
||||
|
||||
# Получаем ID пользователя и чата
|
||||
user_id = message.from_user.id
|
||||
chat_id = message.chat.id
|
||||
@@ -184,7 +196,7 @@ async def check_message_for_profanity(bot: AsyncTeleBot, message: Message):
|
||||
mute_duration = get_mute_duration(violations_count)
|
||||
|
||||
# Применяем мут
|
||||
await apply_mute(bot, message, user_id, mute_duration, violations_count)
|
||||
await apply_mute(bot, message, user_id, mute_duration, violations_count, bad_words_found)
|
||||
|
||||
def register_handlers(bot: AsyncTeleBot):
|
||||
"""
|
||||
|
Reference in New Issue
Block a user