#!/bin/bash # Moltbot (原 ClawdBot) 一键安装与管理脚本 # 兼容 Debian / Ubuntu # 官方文档: https://docs.molt.bot # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[0;33m' BLUE='\033[0;34m' CYAN='\033[0;36m' PLAIN='\033[0m' # 配置文件路径 # Moltbot 依然使用 .clawdbot 目录以保持兼容性 CONFIG_DIR="${HOME}/.clawdbot" CONFIG_FILE="${CONFIG_DIR}/clawdbot.json" SERVICE_FILE="/etc/systemd/system/moltbot.service" check_root() { if [ $EUID -ne 0 ]; then echo -e "${RED}错误: 请使用 root 用户运行此脚本!${PLAIN}" exit 1 fi } check_sys() { if [ -f /etc/os-release ]; then . /etc/os-release if [[ "$ID" != "debian" && "$ID" != "ubuntu" ]]; then echo -e "${RED}错误: 本脚本仅支持 Debian 或 Ubuntu 系统!${PLAIN}" exit 1 fi else echo -e "${RED}错误: 无法检测系统版本!${PLAIN}" exit 1 fi } log_info() { echo -e "${GREEN}[INFO] $1${PLAIN}" } log_warn() { echo -e "${YELLOW}[WARN] $1${PLAIN}" } log_error() { echo -e "${RED}[ERROR] $1${PLAIN}" } # 安装 Node.js 22+ install_nodejs() { log_info "正在检查 Node.js 环境..." if command -v node >/dev/null 2>&1; then NODE_VERSION_FULL=$(node -v) NODE_MAJOR=$(echo "$NODE_VERSION_FULL" | cut -d'v' -f2 | cut -d'.' -f1) if [ "$NODE_MAJOR" -ge 22 ]; then log_info "Node.js 已安装且版本符合要求 (${NODE_VERSION_FULL}),无需重复安装。" return else log_warn "检测到旧版本 Node.js (${NODE_VERSION_FULL}),Moltbot 需要 Node.js 22+" read -p "是否升级 Node.js 到 22.x?(这将覆盖现有版本) [y/n]: " upgrade_node if [ "$upgrade_node" != "y" ]; then log_error "已取消 Node.js 升级。Moltbot 可能无法正常运行。" return fi fi fi log_info "正在安装Node.js" [ -d /etc/apt/sources.list.d ] || mkdir -p /etc/apt/sources.list.d apt-get install -y curl git curl -fsSL https://deb.nodesource.com/setup_22.x | bash - apt-get install -y nodejs if command -v node >/dev/null 2>&1; then NODE_VERSION=$(node -v) log_info "Node.js 安装成功: ${NODE_VERSION}" else log_error "Node.js 安装失败,请检查网络或系统源!" exit 1 fi } # 安装 Moltbot install_moltbot_core() { log_info "正在安装 Moltbot..." if command -v clawdbot >/dev/null 2>&1; then CURRENT_VERSION=$(clawdbot --version) log_warn "ClawdBot (Moltbot) 已安装 (版本: ${CURRENT_VERSION})" read -p "是否强制重新安装/更新?[y/n]: " force_install if [ "$force_install" != "y" ]; then log_info "跳过安装步骤。" return fi fi npm install -g clawdbot@latest if command -v clawdbot >/dev/null 2>&1; then VERSION=$(clawdbot --version) log_info "ClawdBot 安装成功,版本: ${VERSION}" else log_error "ClawdBot 安装失败,请检查 npm 权限或网络!" exit 1 fi } # 配置 Moltbot configure_moltbot() { if [ -f "${CONFIG_FILE}" ]; then log_warn "检测到已存在配置文件: ${CONFIG_FILE}" read -p "是否覆盖现有配置?[y/n]: " overwrite_config if [ "$overwrite_config" != "y" ]; then log_info "保留现有配置,跳过配置步骤。" return fi fi log_info "开始配置 Moltbot..." mkdir -p "${CONFIG_DIR}" echo -e "${CYAN}请选择 API 类型:${PLAIN}" echo "1. Anthropic 官方 API" echo "2. OpenAI 兼容 API (中转站/其他模型)" read -p "请输入选项 [1/2]: " api_choice read -p "请输入 Telegram Bot Token: " bot_token read -p "请输入您的 Telegram User ID (用于管理员白名单): " admin_id if [ "$api_choice" == "1" ]; then read -p "请输入 Anthropic API Key (sk-ant-...): " api_key cat > "${CONFIG_FILE}" < "${CONFIG_FILE}" < "${SERVICE_FILE}" <