@tencent-connect/openclaw-qqbot 1.5.6 → 1.5.7

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.
@@ -0,0 +1,204 @@
1
+ #!/bin/bash
2
+
3
+ # qqbot 通过 npm 包升级
4
+ #
5
+ # 用法:
6
+ # upgrade-via-npm.sh # 升级到 latest(默认)
7
+ # upgrade-via-npm.sh --version <version> # 升级到指定版本
8
+ # upgrade-via-npm.sh --self-version # 升级到当前仓库 package.json 版本
9
+
10
+ set -eo pipefail
11
+
12
+ PKG_NAME="@tencent-connect/openclaw-qqbot"
13
+ INSTALL_SRC=""
14
+ APPID=""
15
+ SECRET=""
16
+ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
17
+ PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
18
+
19
+ LOCAL_VERSION="$(node -e "
20
+ try {
21
+ const fs = require('fs');
22
+ const path = require('path');
23
+ const p = path.join('$PROJECT_DIR', 'package.json');
24
+ const v = JSON.parse(fs.readFileSync(p, 'utf8')).version;
25
+ if (v) process.stdout.write(String(v));
26
+ } catch {}
27
+ " 2>/dev/null || true)"
28
+
29
+ print_usage() {
30
+ echo "用法:"
31
+ echo " upgrade-via-npm.sh # 升级到 latest(默认)"
32
+ echo " upgrade-via-npm.sh --version <版本号> # 升级到指定版本"
33
+ echo " upgrade-via-npm.sh --appid <appid> --secret <secret> # 配置通道并启动"
34
+ if [ -n "$LOCAL_VERSION" ]; then
35
+ echo " upgrade-via-npm.sh --self-version # 升级到当前仓库版本($LOCAL_VERSION)"
36
+ else
37
+ echo " upgrade-via-npm.sh --self-version # 升级到当前仓库版本"
38
+ fi
39
+ echo ""
40
+ echo "也可以通过环境变量设置:"
41
+ echo " QQBOT_APPID QQ机器人 appid"
42
+ echo " QQBOT_SECRET QQ机器人 secret"
43
+ }
44
+
45
+ while [[ $# -gt 0 ]]; do
46
+ case "$1" in
47
+ --tag)
48
+ [ -z "$2" ] && echo "❌ --tag 需要参数" && exit 1
49
+ INSTALL_SRC="${PKG_NAME}@$2"
50
+ shift 2
51
+ ;;
52
+ --version)
53
+ [ -z "$2" ] && echo "❌ --version 需要参数" && exit 1
54
+ INSTALL_SRC="${PKG_NAME}@$2"
55
+ shift 2
56
+ ;;
57
+ --self-version)
58
+ [ -z "$LOCAL_VERSION" ] && echo "❌ 无法从 package.json 读取版本" && exit 1
59
+ INSTALL_SRC="${PKG_NAME}@${LOCAL_VERSION}"
60
+ shift 1
61
+ ;;
62
+ --appid)
63
+ [ -z "$2" ] && echo "❌ --appid 需要参数" && exit 1
64
+ APPID="$2"
65
+ shift 2
66
+ ;;
67
+ --secret)
68
+ [ -z "$2" ] && echo "❌ --secret 需要参数" && exit 1
69
+ SECRET="$2"
70
+ shift 2
71
+ ;;
72
+ -h|--help)
73
+ print_usage
74
+ exit 0
75
+ ;;
76
+ *) echo "未知选项: $1"; print_usage; exit 1 ;;
77
+ esac
78
+ done
79
+ INSTALL_SRC="${INSTALL_SRC:-${PKG_NAME}@latest}"
80
+
81
+ # 使用命令行参数或环境变量
82
+ APPID="${APPID:-$QQBOT_APPID}"
83
+ SECRET="${SECRET:-$QQBOT_SECRET}"
84
+
85
+ # 检测 CLI
86
+ CMD=""
87
+ for name in openclaw clawdbot moltbot; do
88
+ command -v "$name" &>/dev/null && CMD="$name" && break
89
+ done
90
+ [ -z "$CMD" ] && echo "❌ 未找到 openclaw / clawdbot / moltbot" && exit 1
91
+
92
+ APP_CONFIG="$HOME/.$CMD/$CMD.json"
93
+ EXTENSIONS_DIR="$HOME/.$CMD/extensions"
94
+
95
+ echo "==========================================="
96
+ echo " qqbot npm 升级: $INSTALL_SRC"
97
+ echo "==========================================="
98
+ echo ""
99
+
100
+ # [1/4] 备份并临时移除通道配置(避免 plugins install 因 unknown channel 拒绝执行)
101
+ echo "[1/4] 备份通道配置..."
102
+ if [ -f "$APP_CONFIG" ]; then
103
+ node -e "
104
+ const fs = require('fs');
105
+ const cfg = JSON.parse(fs.readFileSync('$APP_CONFIG', 'utf8'));
106
+ const keys = ['qqbot', 'openclaw-qqbot', 'openclaw-qq'];
107
+ let saved = null;
108
+ for (const key of keys) {
109
+ const ch = cfg.channels && cfg.channels[key];
110
+ if (ch) { saved = ch; delete cfg.channels[key]; break; }
111
+ }
112
+ // 清理 plugins.entries 中的旧记录(避免 stale config entry 告警)
113
+ if (cfg.plugins && cfg.plugins.entries) {
114
+ delete cfg.plugins.entries['openclaw-qqbot'];
115
+ }
116
+ if (saved) {
117
+ fs.writeFileSync('$APP_CONFIG.qqbot-backup.json', JSON.stringify(saved, null, 2));
118
+ fs.writeFileSync('$APP_CONFIG', JSON.stringify(cfg, null, 4) + '\n');
119
+ console.log(' ✅ 已备份并临时移除 channels.qqbot');
120
+ } else {
121
+ console.log(' ℹ️ 无已有通道配置');
122
+ }
123
+ " 2>/dev/null || echo " ⚠️ 备份失败"
124
+ else
125
+ echo " ℹ️ 无配置文件"
126
+ fi
127
+
128
+ # [2/4] 清理旧插件目录
129
+ echo ""
130
+ echo "[2/4] 清理旧插件..."
131
+ for old_plugin in openclaw-qqbot qqbot openclaw-qq @sliverp/qqbot @tencent-connect/qqbot @tencent-connect/openclaw-qq @tencent-connect/openclaw-qqbot; do
132
+ $CMD plugins uninstall "$old_plugin" 2>/dev/null && echo " 已卸载: $old_plugin" || true
133
+ done
134
+ for dir_name in openclaw-qqbot qqbot openclaw-qq; do
135
+ if [ -d "$EXTENSIONS_DIR/$dir_name" ]; then
136
+ rm -rf "$EXTENSIONS_DIR/$dir_name"
137
+ echo " 已清理残留目录: $dir_name"
138
+ fi
139
+ done
140
+
141
+ # [3/4] 安装新版本
142
+ echo ""
143
+ echo "[3/4] 安装新版本..."
144
+ $CMD plugins install "$INSTALL_SRC" 2>&1
145
+
146
+ # 恢复通道配置
147
+ BACKUP_FILE="$APP_CONFIG.qqbot-backup.json"
148
+ if [ -f "$BACKUP_FILE" ] && [ -f "$APP_CONFIG" ]; then
149
+ node -e "
150
+ const fs = require('fs');
151
+ const cfg = JSON.parse(fs.readFileSync('$APP_CONFIG', 'utf8'));
152
+ const saved = JSON.parse(fs.readFileSync('$BACKUP_FILE', 'utf8'));
153
+ cfg.channels = cfg.channels || {};
154
+ cfg.channels.qqbot = saved;
155
+ fs.writeFileSync('$APP_CONFIG', JSON.stringify(cfg, null, 4) + '\n');
156
+ fs.unlinkSync('$BACKUP_FILE');
157
+ console.log(' ✅ 通道配置已恢复');
158
+ " 2>/dev/null || echo " ⚠️ 通道配置恢复失败,请手动检查: $APP_CONFIG"
159
+ fi
160
+
161
+ # 配置通道(如果提供了 appid 和 secret)
162
+ if [ -n "$APPID" ] && [ -n "$SECRET" ]; then
163
+ echo ""
164
+ echo "配置机器人通道..."
165
+ DESIRED_TOKEN="${APPID}:${SECRET}"
166
+
167
+ # 读取当前配置中的 token
168
+ CURRENT_TOKEN=""
169
+ if [ -f "$APP_CONFIG" ]; then
170
+ CURRENT_TOKEN=$(node -e "
171
+ const cfg = JSON.parse(require('fs').readFileSync('$APP_CONFIG', 'utf8'));
172
+ const keys = ['qqbot', 'openclaw-qqbot', 'openclaw-qq'];
173
+ for (const key of keys) {
174
+ const ch = cfg.channels && cfg.channels[key];
175
+ if (!ch) continue;
176
+ if (ch.token) { process.stdout.write(ch.token); process.exit(0); }
177
+ if (ch.appId && ch.clientSecret) { process.stdout.write(ch.appId + ':' + ch.clientSecret); process.exit(0); }
178
+ }
179
+ " 2>/dev/null || true)
180
+ fi
181
+
182
+ if [ "$CURRENT_TOKEN" = "$DESIRED_TOKEN" ]; then
183
+ echo " ✅ 当前配置已是目标值,跳过写入"
184
+ elif $CMD channels add --channel qqbot --token "$DESIRED_TOKEN" 2>&1; then
185
+ echo " ✅ 机器人通道配置成功"
186
+ else
187
+ echo " ⚠️ 通道配置失败,请手动执行: $CMD channels add --channel qqbot --token \"$DESIRED_TOKEN\""
188
+ fi
189
+ fi
190
+
191
+ # [4/4] 重启网关
192
+ echo ""
193
+ echo "[4/4] 重启网关..."
194
+ $CMD gateway restart 2>&1 || true
195
+
196
+ echo ""
197
+ echo "==========================================="
198
+ echo " ✅ 升级完成"
199
+ echo "==========================================="
200
+ echo ""
201
+ echo "常用命令:"
202
+ echo " $CMD logs --follow # 跟踪日志"
203
+ echo " $CMD gateway restart # 重启服务"
204
+ echo " $CMD plugins list # 查看插件列表"
@@ -1,6 +1,6 @@
1
1
  #!/bin/bash
2
2
 
3
- # QQBot 一键更新并启动脚本
3
+ # qqbot 一键更新并启动脚本
4
4
  # 版本: 2.0 (增强错误处理版)
5
5
  #
6
6
  # 主要改进:
@@ -44,20 +44,20 @@ while [[ $# -gt 0 ]]; do
44
44
  echo "用法: $0 [选项]"
45
45
  echo ""
46
46
  echo "选项:"
47
- echo " --appid <appid> QQ机器人 AppID"
48
- echo " --secret <secret> QQ机器人 Secret"
49
- echo " --markdown <yes|no> 是否启用 Markdown 消息格式(默认: no)"
47
+ echo " --appid <appid> QQ机器人 appid"
48
+ echo " --secret <secret> QQ机器人 secret"
49
+ echo " --markdown <yes|no> 是否启用 markdown 消息格式(默认: no)"
50
50
  echo " -h, --help 显示帮助信息"
51
51
  echo ""
52
52
  echo "也可以通过环境变量设置:"
53
- echo " QQBOT_APPID QQ机器人 AppID"
54
- echo " QQBOT_SECRET QQ机器人 Secret"
55
- echo " QQBOT_TOKEN QQ机器人 Token (AppID:Secret)"
56
- echo " QQBOT_MARKDOWN 是否启用 Markdown(yes/no)"
53
+ echo " QQBOT_APPID QQ机器人 appid"
54
+ echo " QQBOT_SECRET QQ机器人 secret"
55
+ echo " QQBOT_TOKEN QQ机器人 token (appid:secret)"
56
+ echo " QQBOT_MARKDOWN 是否启用 markdown(yes/no)"
57
57
  echo ""
58
58
  echo "不带参数时,将使用已有配置直接启动。"
59
59
  echo ""
60
- echo "⚠️ 注意: 启用 Markdown 需要在 QQ 开放平台申请 Markdown 消息权限"
60
+ echo "⚠️ 注意: 启用 markdown 需要在 QQ 开放平台申请 markdown 消息权限"
61
61
  exit 0
62
62
  ;;
63
63
  *)
@@ -74,7 +74,7 @@ SECRET="${SECRET:-$QQBOT_SECRET}"
74
74
  MARKDOWN="${MARKDOWN:-$QQBOT_MARKDOWN}"
75
75
 
76
76
  echo "========================================="
77
- echo " QQBot 一键更新启动脚本"
77
+ echo " qqbot 一键更新启动脚本"
78
78
  echo "========================================="
79
79
 
80
80
  # 1. 备份已有 qqbot 通道配置,防止升级过程丢失
@@ -134,19 +134,34 @@ fi
134
134
  # 2. 移除老版本
135
135
  echo ""
136
136
  echo "[2/6] 移除老版本..."
137
- if [ -f "$PROJ_DIR/scripts/upgrade.sh" ]; then
138
- bash "$PROJ_DIR/scripts/upgrade.sh"
137
+ if [ -f "$PROJ_DIR/scripts/cleanup-legacy-plugins.sh" ]; then
138
+ bash "$PROJ_DIR/scripts/cleanup-legacy-plugins.sh"
139
139
  else
140
- echo "警告: upgrade.sh 不存在,跳过移除步骤"
140
+ echo "警告: cleanup-legacy-plugins.sh 不存在,跳过移除步骤"
141
141
  fi
142
142
 
143
143
  # 3. 安装当前版本
144
144
  echo ""
145
- echo "[3/6] 安装当前版本..."
145
+ echo "[3/6] 安装当前版本(源码安装)..."
146
146
 
147
147
  echo "检查当前目录: $(pwd)"
148
148
  echo "检查openclaw版本: $(openclaw --version 2>/dev/null || echo 'openclaw not found')"
149
149
 
150
+ LOCAL_PACKAGE_VERSION=$(node -e "
151
+ try {
152
+ const fs = require('fs');
153
+ const path = require('path');
154
+ const p = path.join('$PROJ_DIR', 'package.json');
155
+ const v = JSON.parse(fs.readFileSync(p, 'utf8')).version;
156
+ if (v) process.stdout.write(String(v));
157
+ } catch {}
158
+ " 2>/dev/null || true)
159
+ if [ -n "$LOCAL_PACKAGE_VERSION" ]; then
160
+ echo "即将安装本地源码版本: $LOCAL_PACKAGE_VERSION"
161
+ else
162
+ echo "即将安装本地源码版本: unknown(未读取到 package.json version)"
163
+ fi
164
+
150
165
  # 记录更新前的 qqbot 插件版本
151
166
  OLD_QQBOT_VERSION=$(node -e '
152
167
  try {
@@ -165,6 +180,7 @@ OLD_QQBOT_VERSION=$(node -e '
165
180
  ' 2>/dev/null || echo "not_installed")
166
181
 
167
182
  echo "开始安装插件..."
183
+ echo "安装来源: 当前仓库源码(openclaw plugins install .)"
168
184
  INSTALL_LOG="/tmp/openclaw-install-$(date +%s).log"
169
185
 
170
186
  echo "安装日志文件: $INSTALL_LOG"
@@ -281,13 +297,13 @@ done
281
297
  DESIRED_QQBOT_TOKEN=""
282
298
  if [ -n "$APPID" ] && [ -n "$SECRET" ]; then
283
299
  DESIRED_QQBOT_TOKEN="${APPID}:${SECRET}"
284
- echo "使用提供的 AppIDSecret 配置..."
300
+ echo "使用提供的 appidsecret 配置..."
285
301
  elif [ -n "$QQBOT_TOKEN" ]; then
286
302
  DESIRED_QQBOT_TOKEN="$QQBOT_TOKEN"
287
303
  echo "使用环境变量 QQBOT_TOKEN 配置..."
288
304
  elif [ -n "$SAVED_QQBOT_TOKEN" ]; then
289
305
  DESIRED_QQBOT_TOKEN="$SAVED_QQBOT_TOKEN"
290
- echo "未提供 AppID/Secret,使用备份 token 恢复配置..."
306
+ echo "未提供 appid/secret,使用备份 token 恢复配置..."
291
307
  fi
292
308
 
293
309
  if [ -n "$DESIRED_QQBOT_TOKEN" ]; then
@@ -318,33 +334,33 @@ else
318
334
  echo ""
319
335
  echo "❌ 未检测到 qqbot 通道配置!"
320
336
  echo ""
321
- echo "首次运行请提供 AppIDAppSecret:"
337
+ echo "首次运行请提供 appidappsecret:"
322
338
  echo ""
323
- echo " bash $0 --appid <你的AppID> --secret <你的AppSecret>"
339
+ echo " bash $0 --appid <你的appid> --secret <你的appsecret>"
324
340
  echo ""
325
341
  echo "也可以通过环境变量:"
326
342
  echo ""
327
- echo " QQBOT_APPID=<AppID> QQBOT_SECRET=<AppSecret> bash $0"
343
+ echo " QQBOT_APPID=<appid> QQBOT_SECRET=<appsecret> bash $0"
328
344
  echo ""
329
- echo "AppIDAppSecret 可在 QQ 开放平台 (https://q.qq.com) 获取。"
345
+ echo "appidappsecret 可在 QQ 开放平台 (https://q.qq.com) 获取。"
330
346
  exit 1
331
347
  else
332
348
  echo "使用已有配置"
333
349
  fi
334
350
  fi
335
351
 
336
- # 5. 配置 Markdown 选项(仅在明确指定时才配置)
352
+ # 5. 配置 markdown 选项(仅在明确指定时才配置)
337
353
  echo ""
338
- echo "[5/6] 配置 Markdown 选项..."
354
+ echo "[5/6] 配置 markdown 选项..."
339
355
 
340
356
  if [ -n "$MARKDOWN" ]; then
341
357
  # 设置 markdown 配置
342
358
  if [ "$MARKDOWN" = "yes" ] || [ "$MARKDOWN" = "y" ] || [ "$MARKDOWN" = "true" ]; then
343
359
  MARKDOWN_VALUE="true"
344
- echo "启用 Markdown 消息格式..."
360
+ echo "启用 markdown 消息格式..."
345
361
  else
346
362
  MARKDOWN_VALUE="false"
347
- echo "禁用 Markdown 消息格式(使用纯文本)..."
363
+ echo "禁用 markdown 消息格式(使用纯文本)..."
348
364
  fi
349
365
 
350
366
  CURRENT_MARKDOWN_VALUE=$(node -e "
@@ -367,9 +383,9 @@ if [ -n "$MARKDOWN" ]; then
367
383
  " 2>/dev/null || true)
368
384
 
369
385
  if [ "$CURRENT_MARKDOWN_VALUE" = "$MARKDOWN_VALUE" ]; then
370
- echo "✅ Markdown 配置已是目标值,跳过写入(避免配置覆盖提示)"
386
+ echo "✅ markdown 配置已是目标值,跳过写入(避免配置覆盖提示)"
371
387
  elif openclaw config set channels.qqbot.markdownSupport "$MARKDOWN_VALUE" 2>&1; then
372
- echo "✅ Markdown配置成功"
388
+ echo "✅ markdown配置成功"
373
389
  _config_changed=1
374
390
  else
375
391
  echo "⚠️ openclaw config set 失败,尝试直接编辑配置文件..."
@@ -384,14 +400,14 @@ if [ -n "$MARKDOWN" ]; then
384
400
  cfg.channels.qqbot.markdownSupport = target;
385
401
  fs.writeFileSync('$OPENCLAW_CONFIG', JSON.stringify(cfg, null, 4) + '\n');
386
402
  " 2>&1; then
387
- echo "✅ Markdown配置成功(直接编辑配置文件)"
403
+ echo "✅ markdown配置成功(直接编辑配置文件)"
388
404
  _config_changed=1
389
405
  else
390
- echo "⚠️ Markdown配置设置失败,不影响后续运行"
406
+ echo "⚠️ markdown配置设置失败,不影响后续运行"
391
407
  fi
392
408
  fi
393
409
  else
394
- echo "未指定 Markdown 选项,使用已有配置"
410
+ echo "未指定 markdown 选项,使用已有配置"
395
411
  fi
396
412
 
397
413
  # 6. 启动 openclaw
@@ -404,26 +420,26 @@ if ! command -v openclaw &> /dev/null; then
404
420
  echo "❌ 错误: openclaw 命令未找到!"
405
421
  echo ""
406
422
  echo "可能的原因:"
407
- echo "1. OpenClaw未安装或安装失败"
423
+ echo "1. openclaw未安装或安装失败"
408
424
  echo "2. PATH环境变量未包含openclaw路径"
409
425
  echo "3. 需要重新登录或重启终端"
410
426
  echo ""
411
427
  exit 1
412
428
  fi
413
429
 
414
- echo "OpenClaw版本: $(openclaw --version 2>/dev/null || echo '未知')"
430
+ echo "openclaw版本: $(openclaw --version 2>/dev/null || echo '未知')"
415
431
 
416
432
  # 显示 qqbot 插件更新信息
417
433
  NEW_QQBOT_VERSION="${NEW_QQBOT_VERSION:-unknown}"
418
434
  if [ "$OLD_QQBOT_VERSION" = "$NEW_QQBOT_VERSION" ]; then
419
- echo "QQBot 插件版本: $NEW_QQBOT_VERSION (未变化)"
435
+ echo "qqbot 插件版本: $NEW_QQBOT_VERSION (未变化)"
420
436
  elif [ "$OLD_QQBOT_VERSION" = "not_installed" ]; then
421
- echo "QQBot 插件版本: $NEW_QQBOT_VERSION (新安装)"
437
+ echo "qqbot 插件版本: $NEW_QQBOT_VERSION (新安装)"
422
438
  else
423
- echo "QQBot 插件版本: $OLD_QQBOT_VERSION -> $NEW_QQBOT_VERSION"
439
+ echo "qqbot 插件版本: $OLD_QQBOT_VERSION -> $NEW_QQBOT_VERSION"
424
440
  fi
425
441
  echo ""
426
- read -t 120 -p "是否后台重启 OpenClaw 网关服务?[Y/n] " start_choice || start_choice="y"
442
+ read -t 120 -p "是否后台重启 openclaw 网关服务?[Y/n] " start_choice || start_choice="y"
427
443
  start_choice="${start_choice:-y}"
428
444
  start_choice=$(printf '%s' "$start_choice" | tr '[:upper:]' '[:lower:]')
429
445
 
@@ -432,14 +448,14 @@ case "$start_choice" in
432
448
  echo ""
433
449
  # 不论配置是否变更,都显式 restart 一次,确保插件正确加载
434
450
  # (plugins install 触发的自动重启链已在第 3 步等待完成)
435
- echo "正在后台重启 OpenClaw 网关服务..."
451
+ echo "正在后台重启 openclaw 网关服务..."
436
452
  if ! openclaw gateway restart 2>&1; then
437
453
  echo ""
438
454
  echo "⚠️ 后台重启失败,可能服务未安装"
439
455
  echo "尝试: openclaw gateway install && openclaw gateway start"
440
456
  fi
441
457
  echo ""
442
- echo "✅ OpenClaw 网关已在后台重启"
458
+ echo "✅ openclaw 网关已在后台重启"
443
459
  echo ""
444
460
  # 等待 gateway 端口就绪(插件安装+自动重启可能需要 30-60 秒)
445
461
  echo "等待 gateway 就绪(插件安装中,可能需要 30-60 秒)..."
@@ -462,8 +478,8 @@ case "$start_choice" in
462
478
  else
463
479
  echo "✅ Gateway 端口已就绪"
464
480
  echo ""
465
- # 检查 QQBot WS 是否连接成功(最多等 30 秒)
466
- echo "检查 QQBot 插件连接状态..."
481
+ # 检查 qqbot WS 是否连接成功(最多等 30 秒)
482
+ echo "检查 qqbot 插件连接状态..."
467
483
  _LOG_FILE="/tmp/openclaw/openclaw-$(date +%Y-%m-%d).log"
468
484
  _qqbot_ready=0
469
485
  for _j in $(seq 1 15); do
@@ -473,17 +489,17 @@ case "$start_choice" in
473
489
  _qqbot_ready=1
474
490
  break
475
491
  fi
476
- printf "\r 等待 QQBot WS 连接... (%d/15)" "$_j"
492
+ printf "\r 等待 qqbot WS 连接... (%d/15)" "$_j"
477
493
  sleep 2
478
494
  done
479
495
  echo ""
480
496
 
481
497
  if [ "$_qqbot_ready" -eq 0 ]; then
482
- echo "⚠️ QQBot 插件可能未正确加载,尝试再次重启..."
498
+ echo "⚠️ qqbot 插件可能未正确加载,尝试再次重启..."
483
499
  openclaw gateway restart 2>&1 || true
484
500
  sleep 10
485
501
  else
486
- echo "✅ QQBot 插件已连接"
502
+ echo "✅ qqbot 插件已连接"
487
503
  fi
488
504
  echo ""
489
505
  echo "正在跟踪日志输出(按 Ctrl+C 停止查看,不影响后台服务)..."
@@ -513,12 +529,12 @@ case "$start_choice" in
513
529
  *)
514
530
  echo "无效选择,按默认值 y 执行后台重启"
515
531
  echo ""
516
- echo "正在后台重启 OpenClaw 网关服务..."
532
+ echo "正在后台重启 openclaw 网关服务..."
517
533
  if ! openclaw gateway restart 2>&1; then
518
534
  echo "⚠️ 后台重启失败,可能服务未安装"
519
535
  echo "尝试: openclaw gateway install && openclaw gateway start"
520
536
  fi
521
- echo "✅ OpenClaw 网关已在后台重启"
537
+ echo "✅ openclaw 网关已在后台重启"
522
538
  ;;
523
539
  esac
524
540