улучшенния в коде и исправление ошибок

This commit is contained in:
2026-02-17 11:47:40 +07:00
parent 1951a3c30c
commit 3adb131742
7 changed files with 460 additions and 21 deletions

View File

@@ -520,6 +520,65 @@ class BanWordsManager:
)
return []
async def cleanup_expired_temp_words(self) -> int:
"""
Удаляет истёкшие временные банворды.
Returns:
int: Количество удалённых слов
"""
async with self.session_maker() as session:
try:
now = datetime.now(timezone.utc)
# Ищем истёкшие временные слова
query = select(TempBanWord).where(
TempBanWord.expires_at < now
)
result = await session.execute(query)
expired_words = result.scalars().all()
if not expired_words:
return 0
# Собираем информацию для логирования
expired_info = []
for word in expired_words:
expired_info.append({
'word': word.word,
'type': word.word_type.value,
'expires_at': word.expires_at
})
await session.delete(word)
# Сохраняем изменения
await session.commit()
# Обновляем кеш
await self._reload_cache()
# Логируем подробности
logger.info(
f"Удалено {len(expired_words)} истёкших временных банвордов",
log_type="DATABASE"
)
for info in expired_info:
logger.debug(
f" └─ {info['type']}: '{info['word']}' (истёк: {info['expires_at']})",
log_type="DATABASE"
)
return len(expired_words)
except Exception as e:
logger.error(
f"Ошибка удаления истёкших временных слов: {e}",
log_type="DATABASE"
)
await session.rollback()
return 0
async def get_total_spam_count(self) -> int:
"""
Получает общее количество удалённых сообщений.