From adee05290d28179657a27fef1dbd113e491b43fb Mon Sep 17 00:00:00 2001 From: liuwei Date: Mon, 20 Apr 2026 12:00:16 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8F=9C=E5=8D=95=E6=94=B9=E4=B8=BA=E5=B0=8F?= =?UTF-8?q?=E5=8D=A1=E7=89=87=E5=BD=A2=E6=80=81=E5=B9=B6=E5=9C=A8=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=8D=A1=E7=89=87=E5=B1=95=E7=A4=BA=E5=BC=80=E5=90=AF?= =?UTF-8?q?=E5=85=B3=E9=97=AD=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/robot_menu/menu_render_tool.py | 70 ++++++++++++++++++++++---- 1 file changed, 59 insertions(+), 11 deletions(-) diff --git a/plugins/robot_menu/menu_render_tool.py b/plugins/robot_menu/menu_render_tool.py index f8203c1..368f5db 100644 --- a/plugins/robot_menu/menu_render_tool.py +++ b/plugins/robot_menu/menu_render_tool.py @@ -10,7 +10,7 @@ from loguru import logger as default_logger from utils.markdown_to_image import convert_md_str_to_image, html_to_image from utils.revoke.message_auto_revoke import MessageAutoRevoke -from utils.robot_cmd.robot_command import Feature +from utils.robot_cmd.robot_command import Feature, GroupBotManager, PermissionStatus from wechat_ipad import WechatAPIClient @@ -118,7 +118,7 @@ class RobotMenuRenderTool: return result def build_feature_status_markdown(self, group_id: str) -> str: - """构建紧凑菜单 Markdown(强调“怎么用”,不展示启停状态/管理命令)。""" + """构建紧凑菜单 Markdown(强调“怎么用”,并显示开启/关闭状态)。""" user_features = self._iter_user_command_features() lines = [ "# 机器人功能菜单", @@ -133,7 +133,10 @@ class RobotMenuRenderTool: "## 功能与指令", ] for feature in user_features: + status = GroupBotManager.get_group_permission(group_id, feature) + status_text = "开启" if status == PermissionStatus.ENABLED else "关闭" lines.extend(self._build_feature_usage_lines(feature)) + lines.append(f" 状态:{status_text}") lines.append("") return "\n".join(lines) @@ -161,6 +164,10 @@ class RobotMenuRenderTool: for feature in user_features: title, _ = self._split_feature_description(feature.description) command_examples = self._get_feature_command_examples(feature) + status = GroupBotManager.get_group_permission(group_id, feature) + is_enabled = status == PermissionStatus.ENABLED + status_text = "开启" if is_enabled else "关闭" + status_class = "status-on" if is_enabled else "status-off" # 为纵向卡片增加轻量色彩分组,提升视觉节奏感,避免纯白卡片过于单调。 try: tone_idx = int(feature.value) % 4 @@ -175,6 +182,7 @@ class RobotMenuRenderTool:

{html.escape(title)}

功能键:{html.escape(feature.name)}

+ {status_text}

{command_examples}

@@ -279,19 +287,37 @@ class RobotMenuRenderTool: .feature-card.tone-3 {{ border-left-color: #ef4444; }} .feature-top {{ display: flex; align-items: center; gap: 8px; }} .feature-index {{ - min-width: 26px; - text-align: center; - font-weight: 700; + min-width: 26px; + text-align: center; + font-weight: 700; color: #0f5fb7; background: var(--brand-soft); border: 1px solid #cfe1fb; border-radius: 6px; - padding: 2px 4px; - font-size: 10px; + padding: 2px 4px; + font-size: 10px; }} .feature-meta {{ flex: 1; }} .feature-meta h3 {{ margin: 0 0 1px 0; font-size: 12px; }} .feature-key {{ margin: 0; font-size: 10px; color: var(--muted); }} + .status-badge {{ + font-size: 10px; + font-weight: 700; + padding: 2px 8px; + border-radius: 999px; + border: 1px solid transparent; + white-space: nowrap; + }} + .status-on {{ + color: #0f7a4f; + background: #e9f9f1; + border-color: #bde8d2; + }} + .status-off {{ + color: #9f2f2f; + background: #feefef; + border-color: #f3c7c7; + }} .feature-body {{ margin-top: 5px; padding: 5px 7px; @@ -322,10 +348,32 @@ class RobotMenuRenderTool:

快速上手

-
    -
  • 菜单:查看可用功能和指令
  • -
  • 以下仅保留可直接输入的用户指令(共 {len(user_features)} 项)
  • -
+
+
+
+
A
+
+

查看菜单

+

菜单

+
+
+
+

发送一次即可查看全部功能卡片

+
+
+
+
+
B
+
+

展示范围

+

用户直接可用指令

+
+
+
+

当前共 {len(user_features)} 项

+
+
+

功能与指令