diff --git a/__version__ b/__version__ index b8025e04..c9e6b295 100644 --- a/__version__ +++ b/__version__ @@ -1 +1 @@ -__version__: v0.2.3-f3e5c9e +__version__: v0.2.3-ba3a9f1 diff --git a/zhenxun/builtin_plugins/web_ui/api/tabs/dashboard/__init__.py b/zhenxun/builtin_plugins/web_ui/api/tabs/dashboard/__init__.py index fce48089..062d689a 100644 --- a/zhenxun/builtin_plugins/web_ui/api/tabs/dashboard/__init__.py +++ b/zhenxun/builtin_plugins/web_ui/api/tabs/dashboard/__init__.py @@ -110,17 +110,22 @@ async def _(bot_id: str | None = None) -> Result: dependencies=[authentication()], deprecated="获取聊天/调用记录的一个月数量", # type: ignore ) -async def _() -> Result: +async def _(bot_id: str | None = None) -> Result: now = datetime.now() filter_date = now - timedelta(days=30, hours=now.hour, minutes=now.minute) + chat_query = ChatHistory + call_query = Statistics + if bot_id: + chat_query = chat_query.filter(bot_id=bot_id) + call_query = call_query.filter(bot_id=bot_id) chat_date_list = ( - await ChatHistory.filter(create_time__gte=filter_date) + await chat_query.filter(create_time__gte=filter_date) .annotate(date=RawSQL("DATE(create_time)"), count=Count("id")) .group_by("date") .values("date", "count") ) call_date_list = ( - await Statistics.filter(create_time__gte=filter_date) + await call_query.filter(create_time__gte=filter_date) .annotate(date=RawSQL("DATE(create_time)"), count=Count("id")) .group_by("date") .values("date", "count") diff --git a/zhenxun/builtin_plugins/web_ui/api/tabs/dashboard/data_source.py b/zhenxun/builtin_plugins/web_ui/api/tabs/dashboard/data_source.py index 4c39fb64..be822c90 100644 --- a/zhenxun/builtin_plugins/web_ui/api/tabs/dashboard/data_source.py +++ b/zhenxun/builtin_plugins/web_ui/api/tabs/dashboard/data_source.py @@ -53,7 +53,8 @@ class BotManage: bot_info.group_count = len(group_list) bot_info.friend_count = len(friend_list) bot_info.day_call = await Statistics.filter( - create_time__gte=now - timedelta(hours=now.hour, minutes=now.minute) + create_time__gte=now - timedelta(hours=now.hour, minutes=now.minute), + bot_id=bot.self_id, ).count() bot_info.received_messages = await ChatHistory.filter( bot_id=bot_info.self_id, diff --git a/zhenxun/builtin_plugins/web_ui/api/tabs/main/__init__.py b/zhenxun/builtin_plugins/web_ui/api/tabs/main/__init__.py index 94cedc72..3ebf4445 100644 --- a/zhenxun/builtin_plugins/web_ui/api/tabs/main/__init__.py +++ b/zhenxun/builtin_plugins/web_ui/api/tabs/main/__init__.py @@ -11,11 +11,11 @@ from websockets.exceptions import ConnectionClosedOK, ConnectionClosedError from starlette.websockets import WebSocket, WebSocketState, WebSocketDisconnect from zhenxun.services.log import logger -from zhenxun.models.group_info import GroupInfo from zhenxun.models.statistics import Statistics from zhenxun.utils.platform import PlatformUtils from zhenxun.models.plugin_info import PluginInfo from zhenxun.models.chat_history import ChatHistory +from zhenxun.models.group_console import GroupConsole from ....base_model import Result from .data_source import bot_live @@ -236,17 +236,21 @@ async def _() -> Result: @router.get( "/get_active_group", dependencies=[authentication()], description="获取活跃群聊" ) -async def _(date_type: QueryDateType | None = None) -> Result: +async def _( + date_type: QueryDateType | None = None, bot_id: str | None = None +) -> Result: query = ChatHistory now = datetime.now() + if bot_id: + query = query.filter(bot_id=bot_id) if date_type == QueryDateType.DAY: - query = ChatHistory.filter(create_time__gte=now - timedelta(hours=now.hour)) + query = query.filter(create_time__gte=now - timedelta(hours=now.hour)) if date_type == QueryDateType.WEEK: - query = ChatHistory.filter(create_time__gte=now - timedelta(days=7)) + query = query.filter(create_time__gte=now - timedelta(days=7)) if date_type == QueryDateType.MONTH: - query = ChatHistory.filter(create_time__gte=now - timedelta(days=30)) + query = query.filter(create_time__gte=now - timedelta(days=30)) if date_type == QueryDateType.YEAR: - query = ChatHistory.filter(create_time__gte=now - timedelta(days=365)) + query = query.filter(create_time__gte=now - timedelta(days=365)) data_list = ( await query.annotate(count=Count("id")) .filter(group_id__not_isnull=True) @@ -257,7 +261,7 @@ async def _(date_type: QueryDateType | None = None) -> Result: ) id2name = {} if data_list: - if info_list := await GroupInfo.filter( + if info_list := await GroupConsole.filter( group_id__in=[x[0] for x in data_list] ).all(): for group_info in info_list: @@ -282,17 +286,21 @@ async def _(date_type: QueryDateType | None = None) -> Result: @router.get( "/get_hot_plugin", dependencies=[authentication()], description="获取热门插件" ) -async def _(date_type: QueryDateType | None = None) -> Result: +async def _( + date_type: QueryDateType | None = None, bot_id: str | None = None +) -> Result: query = Statistics now = datetime.now() + if bot_id: + query = query.filter(bot_id=bot_id) if date_type == QueryDateType.DAY: - query = Statistics.filter(create_time__gte=now - timedelta(hours=now.hour)) + query = query.filter(create_time__gte=now - timedelta(hours=now.hour)) if date_type == QueryDateType.WEEK: - query = Statistics.filter(create_time__gte=now - timedelta(days=7)) + query = query.filter(create_time__gte=now - timedelta(days=7)) if date_type == QueryDateType.MONTH: - query = Statistics.filter(create_time__gte=now - timedelta(days=30)) + query = query.filter(create_time__gte=now - timedelta(days=30)) if date_type == QueryDateType.YEAR: - query = Statistics.filter(create_time__gte=now - timedelta(days=365)) + query = query.filter(create_time__gte=now - timedelta(days=365)) data_list = ( await query.annotate(count=Count("id")) .group_by("plugin_name")