自建 tg 转存服务记录

193 阅读2分钟

背景说明

入职一家专注于网盘服务的公司。近期,为了对标迅雷海外的某个产品,需要开发一个类似的 bot,用于实现文件的自动转存功能。


主要难点与注意事项

  1. 官方 API 的限制
    使用网盘官方 API 时存在下载大小限制,难以满足批量、大规模文件转存的实际需求。

  2. 自建 API 的特殊要求

    • 自建 API 需提前单独申请对应的 API hash(接口授权码),且每个接口的 hash 需独立维护和管理。
    • 自建 API 不支持通过 URL 直接访问文件,必须本地解析文件并通过接口处理。

搭建流程

1. 安装并启动 Telegram Bot API 服务

可通过 Docker 进行快速部署,示例命令如下:

docker run -d \
  -p 8081:8081 \
  --name telegram-bot-api \
  -e TELEGRAM_API_ID=xxxxxx \
  -e TELEGRAM_API_HASH=xxxxxx \
  -e TELEGRAM_LOCAL=1 \   # 等价于 --local,启用“无限下载”等特性
  -v telegram-bot-api-data:/var/lib/telegram-bot-api \
  aiogram/telegram-bot-api:latest

注意事项:

  • 服务只能监听 8081 端口(该端口为内部指定,暂不支持修改)。
  • 环境变量 TELEGRAM_LOCAL=1 可开启本地“无限下载”等特性,适合自建场景。

2. 文件权限问题及修复

问题点 1:内部服务默认仅能使用 8081 端口,端口受限于平台指定。

问题点 2:内部服务生成的数据文件,其权限和外部服务不一致,可能导致外部服务无法访问或读取这些文件。

解决方案:
需要通过定时任务(如 crontab 调用 shell 脚本)自动修复文件目录权限,确保外部服务能正常读取、写入相关数据。示例脚本如下:

#!/bin/bash
# fix-permissions.sh
# 用于修复 Telegram Bot API 数据目录的权限问题

DATA_DIR="/home/webserver/app/go_telegram_bot_starter/telegram-api-data"
echo "🔧 正在修复目录权限..."
sudo chown -R webserver:nemo "$DATA_DIR"
chmod -R 755 "$DATA_DIR"
echo "✅ 权限修复完成!"
ls -la "$DATA_DIR"

建议将此脚本设置为定时任务,确保每隔一定时间自动校正目录权限,避免权限不同步导致的文件访问失败。