@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
|
@@ -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:
|
|
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。**
|