From 35cb5ec1d6d7bc207d15cc2d25c53f17ea693ea9 Mon Sep 17 00:00:00 2001 From: yuehuali Date: Fri, 30 Jan 2026 22:40:59 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E6=94=AF=E6=8C=81=E5=85=BC?= =?UTF-8?q?=E5=AE=B9=20openclaw=20=E5=AE=89=E8=A3=85=E7=8E=AF=E5=A2=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/upgrade.sh | 134 ++++++++++++++++++++++++++++++--------------- 1 file changed, 89 insertions(+), 45 deletions(-) diff --git a/scripts/upgrade.sh b/scripts/upgrade.sh index 39feff8..452f7ad 100755 --- a/scripts/upgrade.sh +++ b/scripts/upgrade.sh @@ -1,62 +1,106 @@ #!/bin/bash # QQBot 插件升级脚本 # 用于清理旧版本插件并重新安装 +# 兼容 clawdbot 和 openclaw 两种安装 set -e -CLAWDBOT_DIR="$HOME/.clawdbot" -CONFIG_FILE="$CLAWDBOT_DIR/clawdbot.json" -EXTENSION_DIR="$CLAWDBOT_DIR/extensions/qqbot" - echo "=== QQBot 插件升级脚本 ===" -# 1. 删除旧的扩展目录 -if [ -d "$EXTENSION_DIR" ]; then - echo "删除旧版本插件: $EXTENSION_DIR" - rm -rf "$EXTENSION_DIR" -else - echo "未找到旧版本插件目录,跳过删除" +# 检测使用的是 clawdbot 还是 openclaw +detect_installation() { + if [ -d "$HOME/.clawdbot" ]; then + echo "clawdbot" + elif [ -d "$HOME/.openclaw" ]; then + echo "openclaw" + else + echo "" + fi +} + +# 清理指定目录的函数 +cleanup_installation() { + local APP_NAME="$1" + local APP_DIR="$HOME/.$APP_NAME" + local CONFIG_FILE="$APP_DIR/$APP_NAME.json" + local EXTENSION_DIR="$APP_DIR/extensions/qqbot" + + echo "" + echo ">>> 处理 $APP_NAME 安装..." + + # 1. 删除旧的扩展目录 + if [ -d "$EXTENSION_DIR" ]; then + echo "删除旧版本插件: $EXTENSION_DIR" + rm -rf "$EXTENSION_DIR" + else + echo "未找到旧版本插件目录,跳过删除" + fi + + # 2. 清理配置文件中的 qqbot 相关字段 + if [ -f "$CONFIG_FILE" ]; then + echo "清理配置文件中的 qqbot 字段..." + + # 使用 node 处理 JSON(比 jq 更可靠处理复杂结构) + node -e " + const fs = require('fs'); + const config = JSON.parse(fs.readFileSync('$CONFIG_FILE', 'utf8')); + + // 删除 channels.qqbot + if (config.channels && config.channels.qqbot) { + delete config.channels.qqbot; + console.log(' - 已删除 channels.qqbot'); + } + + // 删除 plugins.entries.qqbot + if (config.plugins && config.plugins.entries && config.plugins.entries.qqbot) { + delete config.plugins.entries.qqbot; + console.log(' - 已删除 plugins.entries.qqbot'); + } + + // 删除 plugins.installs.qqbot + if (config.plugins && config.plugins.installs && config.plugins.installs.qqbot) { + delete config.plugins.installs.qqbot; + console.log(' - 已删除 plugins.installs.qqbot'); + } + + fs.writeFileSync('$CONFIG_FILE', JSON.stringify(config, null, 2)); + console.log('配置文件已更新'); + " + else + echo "未找到配置文件: $CONFIG_FILE" + fi +} + +# 检测并处理所有可能的安装 +FOUND_INSTALLATION="" + +# 检查 clawdbot +if [ -d "$HOME/.clawdbot" ]; then + cleanup_installation "clawdbot" + FOUND_INSTALLATION="clawdbot" fi -# 2. 清理配置文件中的 qqbot 相关字段 -if [ -f "$CONFIG_FILE" ]; then - echo "清理配置文件中的 qqbot 字段..." - - # 使用 node 处理 JSON(比 jq 更可靠处理复杂结构) - node -e " - const fs = require('fs'); - const config = JSON.parse(fs.readFileSync('$CONFIG_FILE', 'utf8')); - - // 删除 channels.qqbot - if (config.channels && config.channels.qqbot) { - delete config.channels.qqbot; - console.log(' - 已删除 channels.qqbot'); - } - - // 删除 plugins.entries.qqbot - if (config.plugins && config.plugins.entries && config.plugins.entries.qqbot) { - delete config.plugins.entries.qqbot; - console.log(' - 已删除 plugins.entries.qqbot'); - } - - // 删除 plugins.installs.qqbot - if (config.plugins && config.plugins.installs && config.plugins.installs.qqbot) { - delete config.plugins.installs.qqbot; - console.log(' - 已删除 plugins.installs.qqbot'); - } - - fs.writeFileSync('$CONFIG_FILE', JSON.stringify(config, null, 2)); - console.log('配置文件已更新'); - " -else - echo "未找到配置文件: $CONFIG_FILE" +# 检查 openclaw +if [ -d "$HOME/.openclaw" ]; then + cleanup_installation "openclaw" + FOUND_INSTALLATION="openclaw" fi +# 如果都没找到 +if [ -z "$FOUND_INSTALLATION" ]; then + echo "未找到 clawdbot 或 openclaw 安装目录" + echo "请确认已安装 clawdbot 或 openclaw" + exit 1 +fi + +# 使用检测到的安装类型作为命令 +CMD="$FOUND_INSTALLATION" + echo "" echo "=== 清理完成 ===" echo "" echo "接下来请执行以下命令重新安装插件:" echo " cd /path/to/qqbot" -echo " clawdbot plugins install ." -echo " clawdbot channels add --channel qqbot --token \"AppID:AppSecret\"" -echo " clawdbot gateway restart" +echo " $CMD plugins install ." +echo " $CMD channels add --channel qqbot --token \"AppID:AppSecret\"" +echo " $CMD gateway restart"