Добавлены новые методы для получения статистики постов пользователей, информации о последних постах и количестве банов. Обновлены запросы в репозиториях для сортировки пользователей по дате бана. Исправлены вызовы функций форматирования сообщений для администраторов. Обновлены тесты для проверки новых функциональностей.

This commit is contained in:
2026-02-28 21:30:08 +03:00
parent e2a6944ed8
commit 694cf1c106
18 changed files with 1296 additions and 144 deletions

View File

@@ -279,6 +279,34 @@ class AsyncBotDB:
"""Получает тексты отклоненных постов для обучения RAG."""
return await self.factory.posts.get_declined_posts_texts(limit)
async def get_user_posts_stats(self, user_id: int) -> Tuple[int, int, int]:
"""
Получает статистику постов пользователя.
Returns:
Tuple (approved_count, declined_count, suggest_count)
"""
return await self.factory.posts.get_user_posts_stats(user_id)
async def get_last_post_by_author(self, user_id: int) -> Optional[str]:
"""Получает текст последнего поста пользователя."""
return await self.factory.posts.get_last_post_by_author(user_id)
async def get_user_ban_count(self, user_id: int) -> int:
"""Получает количество банов пользователя за все время."""
return await self.factory.blacklist_history.get_ban_count(user_id)
async def get_last_ban_info(
self, user_id: int
) -> Optional[Tuple[int, str, Optional[int]]]:
"""
Получает информацию о последнем бане пользователя.
Returns:
Tuple (date_ban, reason, date_unban) или None
"""
return await self.factory.blacklist_history.get_last_ban_info(user_id)
# Методы для работы с черным списком
async def set_user_blacklist(
self,
@@ -361,7 +389,8 @@ class AsyncBotDB:
"""Возвращает список пользователей в черном списке с учетом смещения и ограничения."""
users = await self.factory.blacklist.get_all_users(offset, limit)
return [
(user.user_id, user.message_for_user, user.date_to_unban) for user in users
(user.user_id, user.message_for_user, user.date_to_unban, user.created_at)
for user in users
]
async def get_blacklist_users_by_id(self, user_id: int) -> Optional[tuple]: