Добавлены новые методы для получения статистики постов пользователей, информации о последних постах и количестве банов. Обновлены запросы в репозиториях для сортировки пользователей по дате бана. Исправлены вызовы функций форматирования сообщений для администраторов. Обновлены тесты для проверки новых функциональностей.
This commit is contained in:
@@ -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]:
|
||||
|
||||
Reference in New Issue
Block a user