diff --git a/plugins/simadmin/simadmin_multi.py b/plugins/simadmin/simadmin_multi.py index 1c2fe41..229b10e 100644 --- a/plugins/simadmin/simadmin_multi.py +++ b/plugins/simadmin/simadmin_multi.py @@ -12,7 +12,7 @@ #[priority: 999] #[platform: qq,qb,wx,wb,tg,tb,fs,we,web,wxmp] #[open_source: true] -#[version: 1.3.2] +#[version: 1.3.3] #[public: false] #[price: 0] #[description: 管理员专用:兼容多个 SimAdmin 实例,支持多级菜单配置管理、状态查询和短信发送。配置桶 otto/simadmin_instances。] @@ -36,6 +36,7 @@ import re import sys import traceback import urllib.error +import urllib.parse import urllib.request import middleware @@ -216,12 +217,20 @@ def save_instances(instances): middleware.bucketSet(BUCKET, CONFIG_KEY, json.dumps(normalized, ensure_ascii=False, indent=2)) +def display_host(url): + try: + parsed = urllib.parse.urlparse(str(url or "")) + return parsed.hostname or str(url or "-") + except Exception: + return str(url or "-") + + def instance_brief(item, idx=None): prefix = "" if idx is None else "%s. " % idx state = "启用" if item.get("enabled") else "禁用" token = mask_secret(item.get("token")) or "未设置" - return "%s%s [%s]\n %s timeout=%ss token=%s" % ( - prefix, item["name"], state, item["base_url"], item["timeout"], token + return "%s%s [%s]\n 主机:%s timeout=%ss token=%s" % ( + prefix, item["name"], state, display_host(item.get("base_url")), item["timeout"], token ) @@ -586,7 +595,12 @@ def menu_restart_all(sender, action_name=None): def handle_status(sender, message): instances = load_instances() parts = message.split(None, 1) - selected = find_instances(instances, parts[1].strip() if len(parts) > 1 else "") + target = parts[1].strip() if len(parts) > 1 else "" + selected = find_instances(instances, target) + if target in ("", "全部", "all", "ALL", "*") and len(selected) > 1: + for item in selected: + reply(sender, format_instance_status(item)) + return reply(sender, "\n\n".join(format_instance_status(x) for x in selected)) diff --git a/py/simadmin_multi.py b/py/simadmin_multi.py index 1c2fe41..229b10e 100644 --- a/py/simadmin_multi.py +++ b/py/simadmin_multi.py @@ -12,7 +12,7 @@ #[priority: 999] #[platform: qq,qb,wx,wb,tg,tb,fs,we,web,wxmp] #[open_source: true] -#[version: 1.3.2] +#[version: 1.3.3] #[public: false] #[price: 0] #[description: 管理员专用:兼容多个 SimAdmin 实例,支持多级菜单配置管理、状态查询和短信发送。配置桶 otto/simadmin_instances。] @@ -36,6 +36,7 @@ import re import sys import traceback import urllib.error +import urllib.parse import urllib.request import middleware @@ -216,12 +217,20 @@ def save_instances(instances): middleware.bucketSet(BUCKET, CONFIG_KEY, json.dumps(normalized, ensure_ascii=False, indent=2)) +def display_host(url): + try: + parsed = urllib.parse.urlparse(str(url or "")) + return parsed.hostname or str(url or "-") + except Exception: + return str(url or "-") + + def instance_brief(item, idx=None): prefix = "" if idx is None else "%s. " % idx state = "启用" if item.get("enabled") else "禁用" token = mask_secret(item.get("token")) or "未设置" - return "%s%s [%s]\n %s timeout=%ss token=%s" % ( - prefix, item["name"], state, item["base_url"], item["timeout"], token + return "%s%s [%s]\n 主机:%s timeout=%ss token=%s" % ( + prefix, item["name"], state, display_host(item.get("base_url")), item["timeout"], token ) @@ -586,7 +595,12 @@ def menu_restart_all(sender, action_name=None): def handle_status(sender, message): instances = load_instances() parts = message.split(None, 1) - selected = find_instances(instances, parts[1].strip() if len(parts) > 1 else "") + target = parts[1].strip() if len(parts) > 1 else "" + selected = find_instances(instances, target) + if target in ("", "全部", "all", "ALL", "*") and len(selected) > 1: + for item in selected: + reply(sender, format_instance_status(item)) + return reply(sender, "\n\n".join(format_instance_status(x) for x in selected))