fix: remove blank-enter dependency from simadmin menu
This commit is contained in:
@@ -136,7 +136,11 @@ q. 退出配置管理
|
||||
|
||||
### 添加实例流程
|
||||
|
||||
可从主菜单选择 `2. 添加实例`,也可在列表页输入 `a`:
|
||||
可从主菜单选择 `2. 添加实例`,也可在列表页输入 `a`。
|
||||
|
||||
交互优化说明:很多聊天端/Autman `sender.listen()` 不能捕获“空回车”,所以插件不再要求直接回车。需要默认值时输入 `d` / `default` / `默认` / `跳过`;需要留空或清空 token 时输入 `clear` / `清空`。
|
||||
|
||||
示例:
|
||||
|
||||
```text
|
||||
sim配置
|
||||
@@ -146,19 +150,25 @@ a
|
||||
主卡
|
||||
请输入 SimAdmin 地址,例如:http://192.168.68.1:3000
|
||||
http://192.168.68.1:3000
|
||||
请输入超时时间秒数,直接回车默认 10
|
||||
10
|
||||
请输入 token,可直接回车留空
|
||||
|
||||
是否启用?输入 1/是 启用,0/否 禁用;直接回车默认启用
|
||||
1
|
||||
确认添加?
|
||||
请输入超时时间秒数
|
||||
输入 d/default/默认 使用默认值:10
|
||||
d
|
||||
请输入 token
|
||||
输入 d/default/默认 使用默认值:留空
|
||||
输入 clear/清空 表示留空
|
||||
clear
|
||||
是否启用?输入 1/是 启用,0/否 禁用
|
||||
输入 d/default/默认 使用默认值:启用
|
||||
d
|
||||
确认添加?输入 yes/y/确认,输入 n/no/取消 放弃
|
||||
yes
|
||||
```
|
||||
|
||||
### 编辑实例流程
|
||||
|
||||
可从主菜单选择 `3. 编辑实例`,也可在列表页输入 `e 1`,或输入实例编号后选择 `2. 编辑实例`。编辑二级菜单:
|
||||
可从主菜单选择 `3. 编辑实例`,也可在列表页输入 `e 1`,或输入实例编号后选择 `2. 编辑实例`。编辑 token 时:输入 `d` 保持当前 token,输入 `clear` 清空 token。
|
||||
|
||||
编辑二级菜单:
|
||||
|
||||
```text
|
||||
编辑【主卡】
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
#[priority: 999]
|
||||
#[platform: qq,qb,wx,wb,tg,tb,fs,we,web,wxmp]
|
||||
#[open_source: true]
|
||||
#[version: 1.2.3]
|
||||
#[version: 1.2.4]
|
||||
#[public: false]
|
||||
#[price: 0]
|
||||
#[description: 管理员专用:兼容多个 SimAdmin 实例,支持多级菜单配置管理、状态查询和短信发送。配置桶 otto/simadmin_instances。]
|
||||
@@ -65,9 +65,6 @@ def listen_text(sender, prompt, allow_empty=False, default=None):
|
||||
# Autman listen 超时/无效输入在不少实机环境返回字符串 error,而不是 None。
|
||||
if value.lower() == "error":
|
||||
raise SimAdminError("等待输入超时或监听失败,已退出")
|
||||
# allow_empty=True 的场景允许直接回车/空消息走默认值。
|
||||
if value == "" and default is not None:
|
||||
return default
|
||||
if value == "" and not allow_empty:
|
||||
raise SimAdminError("输入不能为空,已退出")
|
||||
if value.lower() in ("q", "quit", "exit", "退出", "取消"):
|
||||
@@ -75,8 +72,23 @@ def listen_text(sender, prompt, allow_empty=False, default=None):
|
||||
return value
|
||||
|
||||
|
||||
def confirm(sender, prompt="确认执行?输入 yes 确认,其他取消"):
|
||||
value = listen_text(sender, prompt, allow_empty=True)
|
||||
def listen_with_default(sender, prompt, default_value, default_label=None, allow_clear=False):
|
||||
"""Autman/聊天端不能发送空回车,用显式指令代替默认/跳过/清空。"""
|
||||
label = default_label if default_label is not None else str(default_value)
|
||||
tips = [prompt, "输入 d/default/默认 使用默认值:%s" % label]
|
||||
if allow_clear:
|
||||
tips.append("输入 clear/清空 表示留空")
|
||||
value = listen_text(sender, "\n".join(tips), allow_empty=False)
|
||||
lower = value.lower()
|
||||
if lower in ("d", "default", "默认", "跳过", "skip", "s"):
|
||||
return default_value
|
||||
if allow_clear and lower in ("clear", "清空", "空", "none", "null", "无"):
|
||||
return ""
|
||||
return value
|
||||
|
||||
|
||||
def confirm(sender, prompt="确认执行?输入 yes/y/确认,输入 n/no/取消 放弃"):
|
||||
value = listen_text(sender, prompt, allow_empty=False)
|
||||
return value.lower() in ("yes", "y", "确认", "是")
|
||||
|
||||
|
||||
@@ -438,9 +450,9 @@ def menu_add(sender):
|
||||
if any(x["name"] == name for x in instances):
|
||||
raise SimAdminError("实例名称已存在: " + name)
|
||||
base_url = listen_text(sender, "请输入 SimAdmin 地址,例如:http://192.168.68.1:3000")
|
||||
timeout = listen_text(sender, "请输入超时时间秒数,直接回车默认 10", allow_empty=True, default=str(DEFAULT_TIMEOUT))
|
||||
token = listen_text(sender, "请输入 token,可直接回车留空", allow_empty=True, default="")
|
||||
enabled_text = listen_text(sender, "是否启用?输入 1/是 启用,0/否 禁用;直接回车默认启用", allow_empty=True, default="1")
|
||||
timeout = listen_with_default(sender, "请输入超时时间秒数", str(DEFAULT_TIMEOUT), str(DEFAULT_TIMEOUT))
|
||||
token = listen_with_default(sender, "请输入 token", "", "留空", allow_clear=True)
|
||||
enabled_text = listen_with_default(sender, "是否启用?输入 1/是 启用,0/否 禁用", "1", "启用")
|
||||
item = normalize_instance({
|
||||
"name": name,
|
||||
"base_url": base_url,
|
||||
@@ -498,7 +510,7 @@ def menu_edit(sender, idx=None):
|
||||
elif choice == "3":
|
||||
item["timeout"] = normalize_instance({**item, "timeout": listen_text(sender, "请输入 timeout 秒数 3-60")})["timeout"]
|
||||
elif choice == "4":
|
||||
item["token"] = listen_text(sender, "请输入新 token;直接回车清空", allow_empty=True, default="")
|
||||
item["token"] = listen_with_default(sender, "请输入新 token", item.get("token", ""), "保持当前(%s)" % (mask_secret(item.get("token")) or "未设置"), allow_clear=True)
|
||||
elif choice == "5":
|
||||
item["enabled"] = not item.get("enabled")
|
||||
reply(sender, "已切换为:" + ("启用" if item["enabled"] else "禁用"))
|
||||
|
||||
+22
-10
@@ -11,7 +11,7 @@
|
||||
#[priority: 999]
|
||||
#[platform: qq,qb,wx,wb,tg,tb,fs,we,web,wxmp]
|
||||
#[open_source: true]
|
||||
#[version: 1.2.3]
|
||||
#[version: 1.2.4]
|
||||
#[public: false]
|
||||
#[price: 0]
|
||||
#[description: 管理员专用:兼容多个 SimAdmin 实例,支持多级菜单配置管理、状态查询和短信发送。配置桶 otto/simadmin_instances。]
|
||||
@@ -65,9 +65,6 @@ def listen_text(sender, prompt, allow_empty=False, default=None):
|
||||
# Autman listen 超时/无效输入在不少实机环境返回字符串 error,而不是 None。
|
||||
if value.lower() == "error":
|
||||
raise SimAdminError("等待输入超时或监听失败,已退出")
|
||||
# allow_empty=True 的场景允许直接回车/空消息走默认值。
|
||||
if value == "" and default is not None:
|
||||
return default
|
||||
if value == "" and not allow_empty:
|
||||
raise SimAdminError("输入不能为空,已退出")
|
||||
if value.lower() in ("q", "quit", "exit", "退出", "取消"):
|
||||
@@ -75,8 +72,23 @@ def listen_text(sender, prompt, allow_empty=False, default=None):
|
||||
return value
|
||||
|
||||
|
||||
def confirm(sender, prompt="确认执行?输入 yes 确认,其他取消"):
|
||||
value = listen_text(sender, prompt, allow_empty=True)
|
||||
def listen_with_default(sender, prompt, default_value, default_label=None, allow_clear=False):
|
||||
"""Autman/聊天端不能发送空回车,用显式指令代替默认/跳过/清空。"""
|
||||
label = default_label if default_label is not None else str(default_value)
|
||||
tips = [prompt, "输入 d/default/默认 使用默认值:%s" % label]
|
||||
if allow_clear:
|
||||
tips.append("输入 clear/清空 表示留空")
|
||||
value = listen_text(sender, "\n".join(tips), allow_empty=False)
|
||||
lower = value.lower()
|
||||
if lower in ("d", "default", "默认", "跳过", "skip", "s"):
|
||||
return default_value
|
||||
if allow_clear and lower in ("clear", "清空", "空", "none", "null", "无"):
|
||||
return ""
|
||||
return value
|
||||
|
||||
|
||||
def confirm(sender, prompt="确认执行?输入 yes/y/确认,输入 n/no/取消 放弃"):
|
||||
value = listen_text(sender, prompt, allow_empty=False)
|
||||
return value.lower() in ("yes", "y", "确认", "是")
|
||||
|
||||
|
||||
@@ -438,9 +450,9 @@ def menu_add(sender):
|
||||
if any(x["name"] == name for x in instances):
|
||||
raise SimAdminError("实例名称已存在: " + name)
|
||||
base_url = listen_text(sender, "请输入 SimAdmin 地址,例如:http://192.168.68.1:3000")
|
||||
timeout = listen_text(sender, "请输入超时时间秒数,直接回车默认 10", allow_empty=True, default=str(DEFAULT_TIMEOUT))
|
||||
token = listen_text(sender, "请输入 token,可直接回车留空", allow_empty=True, default="")
|
||||
enabled_text = listen_text(sender, "是否启用?输入 1/是 启用,0/否 禁用;直接回车默认启用", allow_empty=True, default="1")
|
||||
timeout = listen_with_default(sender, "请输入超时时间秒数", str(DEFAULT_TIMEOUT), str(DEFAULT_TIMEOUT))
|
||||
token = listen_with_default(sender, "请输入 token", "", "留空", allow_clear=True)
|
||||
enabled_text = listen_with_default(sender, "是否启用?输入 1/是 启用,0/否 禁用", "1", "启用")
|
||||
item = normalize_instance({
|
||||
"name": name,
|
||||
"base_url": base_url,
|
||||
@@ -498,7 +510,7 @@ def menu_edit(sender, idx=None):
|
||||
elif choice == "3":
|
||||
item["timeout"] = normalize_instance({**item, "timeout": listen_text(sender, "请输入 timeout 秒数 3-60")})["timeout"]
|
||||
elif choice == "4":
|
||||
item["token"] = listen_text(sender, "请输入新 token;直接回车清空", allow_empty=True, default="")
|
||||
item["token"] = listen_with_default(sender, "请输入新 token", item.get("token", ""), "保持当前(%s)" % (mask_secret(item.get("token")) or "未设置"), allow_clear=True)
|
||||
elif choice == "5":
|
||||
item["enabled"] = not item.get("enabled")
|
||||
reply(sender, "已切换为:" + ("启用" if item["enabled"] else "禁用"))
|
||||
|
||||
Reference in New Issue
Block a user