@leoqlin/openclaw-qqbot 1.6.13 → 1.6.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leoqlin/openclaw-qqbot",
3
- "version": "1.6.13",
3
+ "version": "1.6.15",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -103,6 +103,18 @@ cleanup_config_snapshot() {
103
103
  [ -n "$CONFIG_SNAPSHOT_FILE" ] && rm -f "$CONFIG_SNAPSHOT_FILE" 2>/dev/null || true
104
104
  }
105
105
 
106
+ # _PREV_RELOAD_MODE: 安装前读取的原始值
107
+ # 非空 → config set 恢复;空(配置中本无此项)→ config unset 删除我们写入的值
108
+ _PREV_RELOAD_MODE=""
109
+ restore_reload_mode() {
110
+ if [ -n "$_PREV_RELOAD_MODE" ]; then
111
+ openclaw config set gateway.reload.mode "$_PREV_RELOAD_MODE" 2>/dev/null || true
112
+ else
113
+ openclaw config unset gateway.reload.mode 2>/dev/null || true
114
+ fi
115
+ _PREV_RELOAD_MODE="" # 防止重复执行
116
+ }
117
+
106
118
  rollback_plugin_dir() {
107
119
  local reason="${1:-未知原因}"
108
120
  if [ -n "$BACKUP_DIR" ] && [ -d "$BACKUP_DIR/$PLUGIN_ID" ]; then
@@ -317,6 +329,7 @@ cleanup_on_exit() {
317
329
 
318
330
  [ -n "$TEMP_CONFIG_FILE" ] && rm -f "$TEMP_CONFIG_FILE" 2>/dev/null || true
319
331
  [ -n "$BACKUP_DIR" ] && rm -rf "$BACKUP_DIR" 2>/dev/null || true
332
+ restore_reload_mode
320
333
  cleanup_config_snapshot
321
334
  cleanup_pack
322
335
  find "${EXTENSIONS_DIR:-/dev/null}" -maxdepth 1 -name ".openclaw-install-stage-*" -exec rm -rf {} + 2>/dev/null || true
@@ -470,13 +483,21 @@ verify_builtin_disabled() {
470
483
  # ============================================================================
471
484
  echo ""
472
485
 
486
+ # 快照提前到所有写操作前(包括 [前置] 的 disable_builtin_plugins)
487
+ snapshot_config
488
+
489
+ # hybrid 模式下写 openclaw.json 会触发 gateway restart,导致脚本被 cgroup kill
490
+ # 在整个安装窗口内切换为 hot(只热更新,不重启),退出前从变量恢复原值
491
+ # 原值为空说明用户从未手动设置过,退出时 unset 删掉我们写入的值
492
+ _PREV_RELOAD_MODE="$(node -e "try{const c=JSON.parse(require('fs').readFileSync('$CONFIG_FILE','utf8'));process.stdout.write(c?.gateway?.reload?.mode||'')}catch{}" 2>/dev/null || true)"
493
+ openclaw config set gateway.reload.mode hot 2>/dev/null || true
494
+
473
495
  # 默认禁用内置冲突插件(openclaw ≥2026.3.31 内置了 qqbot 插件,与我们的 openclaw-qqbot 冲突)
474
496
  echo "[前置] 检查并禁用内置冲突插件..."
475
497
  disable_builtin_plugins
476
498
  echo ""
477
499
 
478
500
  echo "[1/4] 安装/升级插件..."
479
- snapshot_config
480
501
  setup_temp_config
481
502
 
482
503
  # 清理历史遗留 ID 的配置记录(qqbot/openclaw-qq 是旧版本使用的 ID,
@@ -773,6 +794,8 @@ fi
773
794
  # ============================================================================
774
795
  echo ""
775
796
 
797
+ restore_reload_mode
798
+
776
799
  # startup-marker 防重复通知
777
800
  if [ -n "$NEW_VERSION" ] && [ "$NEW_VERSION" != "unknown" ]; then
778
801
  MARKER_DIR="$OPENCLAW_HOME/qqbot/data"; mkdir -p "$MARKER_DIR"
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: qqbot-upgrade
3
- description: 通过官方脚本将 openclaw-qqbot 插件升级到最新 npm 版本。当用户要求更新 QQ 机器人插件、升级 qqbot 扩展或同步官方最新版时使用。
3
+ description: 检查 openclaw-qqbot 插件是否有新版本,告知用户版本信息,经用户确认后再通过官方脚本升级。当用户询问 QQ 机器人插件是否有更新、要求升级 qqbot 扩展或同步官方最新版时使用。
4
4
  metadata: {"openclaw":{"emoji":"⬆️","requires":{"config":["channels.qqbot"]}}}
5
5
  ---
6
6
 
@@ -8,15 +8,43 @@ metadata: {"openclaw":{"emoji":"⬆️","requires":{"config":["channels.qqbot"]}
8
8
 
9
9
  ## 何时使用
10
10
 
11
- 用户表达以下意图时,应在**本机终端**执行升级命令(不要只口头说明「去官网升级」):
11
+ 用户表达以下意图时触发此技能:
12
12
 
13
+ - 询问 `openclaw-qqbot` 或 QQBot 插件**是否有新版本**
13
14
  - 更新 / 升级 `openclaw-qqbot` 或 QQBot 插件
14
15
  - 拉取官方最新 npm 包
15
16
  - 执行与「upgrade-via-npm」相关的操作
16
17
 
17
18
  ---
18
19
 
19
- ## 标准命令
20
+ ## 执行流程(必须严格按顺序)
21
+
22
+ ### 第 1 步:查询版本信息
23
+
24
+ 先分别获取**本地已安装版本**和 **npm 远端最新版本**,在终端执行:
25
+
26
+ ```bash
27
+ # 本地版本(在扩展目录读取 package.json)
28
+ LOCAL_VER=$(node -e "console.log(require('~/.openclaw/extensions/openclaw-qqbot/package.json').version)" 2>/dev/null || echo "未知")
29
+
30
+ # 远端最新版本
31
+ REMOTE_VER=$(npm view @leoqlin/openclaw-qqbot version 2>/dev/null || echo "查询失败")
32
+
33
+ echo "本地版本: $LOCAL_VER"
34
+ echo "远端最新: $REMOTE_VER"
35
+ ```
36
+
37
+ ### 第 2 步:向用户报告并等待确认
38
+
39
+ 将查询结果**清晰地告知用户**,例如:
40
+
41
+ > 当前本地版本:x.y.z,npm 最新版本:a.b.c。
42
+
43
+ - 若版本相同,告知用户「已是最新版本,无需升级」,**流程结束**。
44
+ - 若有新版本,**必须先告知用户升级预计耗时及影响,再询问是否升级**,例如:「发现新版本 a.b.c(当前 x.y.z)。升级预计需要 5–10 分钟,升级过程中无法回复消息,请耐心等待。是否要升级?」
45
+ - ⚠️ **禁止跳过此步骤直接执行升级命令。必须等用户明确回复确认(如「好」「是」「升级」「确认」等肯定表达)后,才进入第 3 步。**
46
+
47
+ ### 第 3 步:执行升级(仅在用户确认后)
20
48
 
21
49
  在 **bash** 环境中执行(需已安装 `curl`,且能访问 GitHub):
22
50
 
@@ -47,3 +75,5 @@ curl -fsSL https://raw.githubusercontent.com/leol1024/openclaw-qqbot/feat/stream
47
75
  ## 执行后
48
76
 
49
77
  根据脚本退出码与终端输出向用户简要汇报:成功则说明已按官方流程升级;失败则摘录关键错误并提示检查网络、Node/npm 与权限。
78
+
79
+ - ⚠️ **升级脚本已包含自动重启 gateway 的步骤,升级成功后不要再提示用户手动重启 gateway。**