From 5f92efa658b1ad64454bb937baf7fba701e29bf4 Mon Sep 17 00:00:00 2001 From: HibiKier <45528451+HibiKier@users.noreply.github.com> Date: Mon, 7 Oct 2024 15:37:55 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20webui=20=E6=B7=BB=E5=8A=A0bot?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E5=8F=82=E6=95=B0=20(#1686)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 🐛 webui 添加bot详情参数 * chore(version): Update version to v0.2.3-ba3a9f1 --------- Co-authored-by: HibiKier --- __version__ | 2 +- .../web_ui/api/tabs/dashboard/__init__.py | 11 +++++-- .../web_ui/api/tabs/dashboard/data_source.py | 3 +- .../web_ui/api/tabs/main/__init__.py | 32 ++++++++++++------- 4 files changed, 31 insertions(+), 17 deletions(-) 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")