@@ -7,42 +7,11 @@ from flask import Blueprint, request, jsonify, render_template, current_app
|
||||
|
||||
from admin.dashboard.blueprints.auth import login_required
|
||||
from utils.robot_cmd.robot_command import GroupBotManager, PermissionStatus
|
||||
from plugins.robot_menu.menu_render_tool import RobotMenuRenderTool
|
||||
|
||||
# 创建蓝图
|
||||
plugin_routes = Blueprint('plugin_routes', __name__)
|
||||
LOG = logger
|
||||
|
||||
# 后台命令索引页只复用“命令目录生成”能力,不需要图片渲染,
|
||||
# 因此这里固定使用轻量 text 配置创建一个工具实例即可。
|
||||
_command_catalog_tool = RobotMenuRenderTool(
|
||||
output_mode="text",
|
||||
image_fallback_to_text=True,
|
||||
image_render_timeout_seconds=30,
|
||||
image_render_retries=1,
|
||||
image_template_path="plugins/robot_menu/templates/menu_cards.html",
|
||||
log=LOG,
|
||||
)
|
||||
|
||||
|
||||
def _build_group_options(server) -> list:
|
||||
"""构建后台命令索引页的群组选项列表。"""
|
||||
group_ids = sorted(set(GroupBotManager.get_group_list() or []))
|
||||
options = []
|
||||
for group_id in group_ids:
|
||||
group_name = ""
|
||||
try:
|
||||
group_name = server.contact_manager.get_nickname(group_id) or ""
|
||||
except Exception:
|
||||
group_name = ""
|
||||
options.append(
|
||||
{
|
||||
"group_id": group_id,
|
||||
"group_name": str(group_name or group_id),
|
||||
}
|
||||
)
|
||||
return options
|
||||
|
||||
|
||||
# 机器人管理页面
|
||||
@plugin_routes.route('/plugins_manage')
|
||||
@@ -51,13 +20,6 @@ def robot_management():
|
||||
return render_template('plugins_manage.html')
|
||||
|
||||
|
||||
@plugin_routes.route('/command_catalog')
|
||||
@login_required
|
||||
def command_catalog_page():
|
||||
"""后台命令索引页面。"""
|
||||
return render_template('command_catalog.html')
|
||||
|
||||
|
||||
@plugin_routes.route('/api/plugins', methods=['GET'])
|
||||
@login_required
|
||||
def get_plugins():
|
||||
@@ -75,37 +37,6 @@ def get_plugins():
|
||||
return jsonify({"success": False, "message": f"获取插件列表失败: {str(e)}"})
|
||||
|
||||
|
||||
@plugin_routes.route('/api/plugins/command_catalog', methods=['GET'])
|
||||
@login_required
|
||||
def get_command_catalog():
|
||||
"""获取后台命令索引数据。"""
|
||||
try:
|
||||
server = current_app.dashboard_server
|
||||
group_id = str(request.args.get('group_id') or '').strip()
|
||||
|
||||
# 后台命令索引默认站在“管理员”视角,
|
||||
# 这样既能看到当前可用命令,也能看到未启用能力和管理指令。
|
||||
catalog = _command_catalog_tool.build_command_catalog_data(
|
||||
group_id=group_id,
|
||||
requester_id="dashboard_admin",
|
||||
force_admin=True,
|
||||
)
|
||||
data = {
|
||||
**catalog,
|
||||
"group_options": _build_group_options(server),
|
||||
"summary": {
|
||||
"available_manual_count": len(catalog.get("available_manual", []) or []),
|
||||
"available_auto_count": len(catalog.get("available_auto", []) or []),
|
||||
"unavailable_manual_count": len(catalog.get("unavailable_manual", []) or []),
|
||||
"admin_command_count": len(catalog.get("admin_commands", []) or []),
|
||||
},
|
||||
}
|
||||
return jsonify({"success": True, "data": data})
|
||||
except Exception as e:
|
||||
LOG.error(f"获取命令索引失败: {str(e)}", exc_info=True)
|
||||
return jsonify({"success": False, "message": f"获取命令索引失败: {str(e)}"})
|
||||
|
||||
|
||||
@plugin_routes.route('/api/plugins/group_status', methods=['GET'])
|
||||
@login_required
|
||||
def get_plugin_group_status():
|
||||
|
||||
Reference in New Issue
Block a user