新增后台命令索引页面与群命令视图

This commit is contained in:
liuwei
2026-04-30 17:51:45 +08:00
parent 5feee880ed
commit 9a52eb33bf
5 changed files with 562 additions and 5 deletions

View File

@@ -297,7 +297,7 @@ class RobotMenuRenderTool:
"status_label": str(normalized_snapshot.get("status_label") or "").strip(),
}
def _collect_command_catalog(self, group_id: str, requester_id: str) -> dict:
def _collect_command_catalog(self, group_id: str, requester_id: str, force_admin: Optional[bool] = None) -> dict:
"""采集当前群和当前身份视角下的命令清单。
输出结构分三层:
@@ -307,7 +307,10 @@ class RobotMenuRenderTool:
"""
plugin_manager = self._get_plugin_manager()
snapshots = plugin_manager.get_plugin_snapshots()
is_admin = bool(GroupBotManager.is_admin_for_group(requester_id, group_id)) if group_id else bool(GroupBotManager.is_admin(requester_id))
if force_admin is None:
is_admin = bool(GroupBotManager.is_admin_for_group(requester_id, group_id)) if group_id else bool(GroupBotManager.is_admin(requester_id))
else:
is_admin = bool(force_admin)
available_manual = []
available_auto = []
@@ -356,9 +359,13 @@ class RobotMenuRenderTool:
"generated_at": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),
}
def build_command_catalog_data(self, group_id: str, requester_id: str, force_admin: Optional[bool] = None) -> dict:
"""对外暴露统一的命令目录结构,供机器人菜单和后台页面共同复用。"""
return self._collect_command_catalog(group_id, requester_id, force_admin=force_admin)
def build_command_catalog_text(self, group_id: str, requester_id: str) -> str:
"""构建适合直接发送给用户的文本版命令清单。"""
catalog = self._collect_command_catalog(group_id, requester_id)
catalog = self.build_command_catalog_data(group_id, requester_id)
lines = [
"📚 当前群指令清单",
f"群ID{catalog['group_id'] or '私聊'}",
@@ -411,7 +418,7 @@ class RobotMenuRenderTool:
def build_command_catalog_markdown(self, group_id: str, requester_id: str) -> str:
"""构建适合图片渲染的 Markdown 版指令清单。"""
catalog = self._collect_command_catalog(group_id, requester_id)
catalog = self.build_command_catalog_data(group_id, requester_id)
lines = [
"# 机器人指令清单",
"",