улучшенния в коде и исправление ошибок
This commit is contained in:
@@ -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:
|
||||
"""
|
||||
Получает общее количество удалённых сообщений.
|
||||
|
||||
Reference in New Issue
Block a user