Добавление работы с конфликтными частями и исправление вайтлиста
This commit is contained in:
@@ -44,6 +44,7 @@ class BanWordsManager:
|
||||
"""Инициализирует базу данных и загружает кэш"""
|
||||
await self.db.init()
|
||||
await self.init_default_bot_settings() # ← добавлено
|
||||
await self.init_default_words()
|
||||
await self.refresh_cache()
|
||||
logger.info("BanWordsManager инициализирован", log_type="DATABASE")
|
||||
|
||||
@@ -452,12 +453,13 @@ class BanWordsManager:
|
||||
admins = await self.repo.get_admins()
|
||||
|
||||
return {
|
||||
'substring': banwords.get(BanWordType.SUBSTRING, set()),
|
||||
'word': banwords.get(BanWordType.WORD, set()),
|
||||
'lemma': banwords.get(BanWordType.LEMMA, set()),
|
||||
'part': banwords.get(BanWordType.PART, set()),
|
||||
'conflict_substring': banwords.get(BanWordType.CONFLICT_SUBSTRING, set()),
|
||||
'conflict_word': banwords.get(BanWordType.CONFLICT_WORD, set()),
|
||||
'conflict_lemma': banwords.get(BanWordType.CONFLICT_LEMMA, set()),
|
||||
'temp_substring': temp_banwords.get(BanWordType.SUBSTRING, set()),
|
||||
'conflict_part': banwords.get(BanWordType.CONFLICT_PART, set()),
|
||||
'temp_word': temp_banwords.get(BanWordType.WORD, set()),
|
||||
'temp_lemma': temp_banwords.get(BanWordType.LEMMA, set()),
|
||||
'whitelist': whitelist,
|
||||
'admins': admins
|
||||
@@ -516,6 +518,50 @@ class BanWordsManager:
|
||||
)
|
||||
return []
|
||||
|
||||
async def init_default_words(self) -> None:
|
||||
"""
|
||||
Добавляет базовые банворды и whitelist при первом запуске.
|
||||
Ничего не перезаписывает, если уже существует.
|
||||
"""
|
||||
try:
|
||||
from configs import settings
|
||||
|
||||
# --- Базовые слова ---
|
||||
default_word = {"http", "t.me/"}
|
||||
default_part = {"bot"}
|
||||
default_lemma = {"скам", "мошенник"}
|
||||
|
||||
# Проверяем уже существующие
|
||||
existing = await self.repo.get_all_banwords()
|
||||
|
||||
# word
|
||||
for word in default_word:
|
||||
if word not in existing.get(BanWordType.WORD, set()):
|
||||
await self.repo.add_banword(word, BanWordType.WORD)
|
||||
|
||||
# PART
|
||||
for word in default_part:
|
||||
if word not in existing.get(BanWordType.PART, set()):
|
||||
await self.repo.add_banword(word, BanWordType.PART)
|
||||
|
||||
# LEMMA
|
||||
for word in default_lemma:
|
||||
if word not in existing.get(BanWordType.LEMMA, set()):
|
||||
await self.repo.add_banword(word, BanWordType.LEMMA)
|
||||
|
||||
# --- Добавляем username бота в whitelist ---
|
||||
bot_username = settings.BOT_USERNAME
|
||||
|
||||
if bot_username:
|
||||
whitelist = await self.repo.get_whitelist()
|
||||
if bot_username.lower() not in whitelist:
|
||||
await self.repo.add_whitelist(bot_username.lower())
|
||||
|
||||
logger.info("Базовые слова и whitelist инициализированы", log_type="DATABASE")
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Ошибка инициализации базовых слов: {e}", log_type="DATABASE")
|
||||
|
||||
async def cleanup_expired_temp_words(self) -> int:
|
||||
"""
|
||||
Удаляет истёкшие временные банворды.
|
||||
|
||||
Reference in New Issue
Block a user