#!/usr/bin/env bash tg_code_block() { local text="${1-}" text="$(printf '%s' "$text" | sed -e 's/\\/\\\\/g' -e 's/`/\\`/g')" printf '```text\n%s\n```' "$text" } tg_send_message() { local message="${1-}" local response api if [[ -z "${TG_BOT_TOKEN:-}" || -z "${TG_USER_ID:-}" ]]; then log "INFO" "未配置Telegram通知,跳过发送" return 0 fi api="https://api.telegram.org/bot${TG_BOT_TOKEN}/sendMessage" response="$(curl -sS -X POST "$api" \ --data-urlencode "chat_id=${TG_USER_ID}" \ --data-urlencode "parse_mode=MarkdownV2" \ --data-urlencode "disable_web_page_preview=true" \ --data-urlencode "text=${message}" 2>&1 || true)" if echo "$response" | grep -q '"ok":true'; then log "INFO" "Telegram通知发送成功" else log "WARN" "Telegram通知发送失败: $response" fi } tg_read_user_excludes() { local file="${1-}" local out="" rule [[ -f "$file" ]] || { printf '无' return 0 } while IFS= read -r rule; do [[ -n "$rule" ]] || continue [[ "$rule" =~ ^[[:space:]]*# ]] && continue out+="${rule}"$'\n' done < "$file" if [[ -z "$out" ]]; then printf '无' else printf '%s' "${out%$'\n'}" fi } tg_backup_success() { local label="$1" current_date="$2" backup_dirs="$3" user_excludes="$4" backup_size="$5" archive_name="$6" location="$7" pack_time="$8" upload_time="$9" speed="${10}" local archive_info message archive_info=$( cat <