mirror of
https://github.com/wolfydw/backup_OBS.git
synced 2026-05-08 06:37:02 +08:00
Add Telegram fallback API support
This commit is contained in:
@@ -22,6 +22,7 @@ cp exclude.user.list.example exclude.user.list
|
||||
- `LABEL`:机器或业务标识
|
||||
- `BACKUP_DIRS`:要备份的目录,使用多行格式,每行一个目录
|
||||
- `TG_BOT_TOKEN` / `TG_USER_ID`:Telegram 通知配置,可留空
|
||||
- `TG_API_BASE_FALLBACK`:可选,自建 Telegram API 地址;官方失败时自动回退
|
||||
|
||||
`BACKUP_DIRS` 示例:
|
||||
|
||||
@@ -104,6 +105,7 @@ cd /root/backup_OBS
|
||||
- 安装脚本不会覆盖已有的 `env.conf` 和 `exclude.user.list`
|
||||
- `install.sh` 和后续脚本都只使用仓库根目录下的 `./obsutil`
|
||||
- `obsutil` 安装完成后,首次仍需手动执行 `./obsutil config -interactive`
|
||||
- Telegram 通知默认优先走官方 `https://api.telegram.org`,失败后才会尝试 `TG_API_BASE_FALLBACK`
|
||||
|
||||
如果你想手动安装或更新仓库根目录下的 `./obsutil`,可以直接执行:
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ OBS_BACKUP_DIR="backup/${LABEL}" # 备份存放目录
|
||||
# Telegram 通知配置
|
||||
TG_BOT_TOKEN="" # 留空表示不启用
|
||||
TG_USER_ID="" # 留空表示不启用
|
||||
TG_API_BASE_FALLBACK="" # 可选:官方失败时使用的自建Telegram API地址
|
||||
|
||||
# 备份目录,使用多行格式;每行一个目录
|
||||
BACKUP_DIRS=$(cat <<'EOF'
|
||||
|
||||
+28
-6
@@ -13,25 +13,47 @@ tg_code_block() {
|
||||
|
||||
tg_send_message() {
|
||||
local message="${1-}"
|
||||
local response api
|
||||
local response primary_api fallback_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" \
|
||||
primary_api="https://api.telegram.org/bot${TG_BOT_TOKEN}/sendMessage"
|
||||
response="$(curl -sS -X POST "$primary_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"
|
||||
log "INFO" "Telegram通知发送成功(official)"
|
||||
return 0
|
||||
fi
|
||||
|
||||
log "WARN" "Telegram官方API发送失败: $response"
|
||||
|
||||
if [[ -z "${TG_API_BASE_FALLBACK:-}" ]]; then
|
||||
log "WARN" "未配置Telegram备用API,通知发送失败"
|
||||
return 1
|
||||
fi
|
||||
|
||||
fallback_api="${TG_API_BASE_FALLBACK%/}/bot${TG_BOT_TOKEN}/sendMessage"
|
||||
response="$(curl -sS -X POST "$fallback_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通知发送成功(fallback)"
|
||||
return 0
|
||||
fi
|
||||
|
||||
log "WARN" "Telegram备用API发送失败: $response"
|
||||
log "WARN" "Telegram通知发送失败"
|
||||
return 1
|
||||
}
|
||||
|
||||
tg_read_user_excludes() {
|
||||
|
||||
Reference in New Issue
Block a user