在 Telegram 中,由于官方 API 的限制,上传大视频(超过 50MB)往往是个头疼的问题。大佬的Telegram-Bili-Feed-Helper 项目通过部署本地 Bot API 服务器,完美解决了大视频解析和发送的问题,同时支持 B 站动态、直播和音频的全方位解析。本文将记录如何利用 Docker Compose 快速部署这一工具。

一、 核心组件与原理

本项目由四个核心容器组成,共同协作完成任务:

  • Main Bot: 机器人的“大脑”,负责解析 B 站链接。
  • Redis: 负责处理解析结果和任务锁的快速缓存。
  • PostgreSQL: 存储媒体文件的 File ID,避免重复下载。
  • Telegram-Bot-API: 本地运行的 Telegram API 服务,用于绕过文件大小上传限制。

二、 部署前的准备工作

1. Telegram 凭证

2. 服务器环境:已安装 Docker 和 Docker Compose。

三、 配置文件编写

在服务器上创建一个目录(如 bili-bot),并准备以下两个核心文件。

1. docker-compose.yml

该文件定义了服务之间的连接关系。注意主程序依赖于数据库和 API 中转站。

version: '3.8'
services:
  redis:
    image: redis:latest
    env_file: [stack.env]
    volumes: [redis-data:/data]
    restart: always
    networks: [internal_network]

  postgres:
    image: postgres:18
    env_file: [stack.env]
    volumes: [postgresql-data:/var/lib/postgresql]
    restart: always
    networks: [internal_network]

  telegram-bot-api:
    image: aiogram/telegram-bot-api:latest
    env_file: [stack.env]
    volumes: [telegram-bot-api-data:/var/lib/telegram-bot-api]
    restart: always
    networks: [internal_network]

  telegram-bili-feed-helper:
    image: ghcr.io/simonsmh/telegram-bili-feed-helper:master
    depends_on: [redis, postgres, telegram-bot-api]
    env_file: [stack.env]
    volumes: [telegram-bot-api-data:/var/lib/telegram-bot-api]
    restart: always
    networks: [internal_network]

volumes:
  redis-data:
  postgresql-data:
  telegram-bot-api-data:

networks:
  internal_network:
    driver: bridge

2. stack.env (环境变量)

这是配置的核心,所有的密钥和连接信息都在这里。

# Telegram 基础配置
TOKEN=你的机器人Token
TELEGRAM_API_ID=你的API_ID
TELEGRAM_API_HASH=你的API_HASH

# 本地模式配置 (用于处理大文件)
LOCAL_MODE=1
TELEGRAM_LOCAL=1
API_BASE_URL=http://telegram-bot-api:8081/bot
API_BASE_FILE_URL=http://telegram-bot-api:8081/file/bot
LOCAL_TEMP_FILE_PATH=/var/lib/telegram-bot-api

# 数据库连接
REDIS_URL=redis://redis:6379
DATABASE_URL=postgres://bilifeedbot:bilifeedbot@postgres:5432/bilifeedbot
POSTGRES_DB=bilifeedbot
POSTGRES_USER=bilifeedbot
POSTGRES_PASSWORD=bilifeedbot

#### BEGIN: Bilibili Cookie
# 注意:要把等号后面的内容换成你实际获取到的那一串字符
SESSDATA=你获取的SESSDATA值
BILI_JCT=你获取的bili_jct值
BUVID3=你获取的buvid3值
BUVID4=你获取的buvid4值
DEDEUSERID=你获取的DedeUserID值
# AC_TIME_VALUE 通常不需要,可以保持注释或留空
#### END: Bilibili Cookie

四、 启动与日常维护

  1. 启动服务
    在目录下运行 docker compose up -d 即可一键启动所有容器。
  2. 查看日志
    如果机器人没有响应,使用命令 docker compose logs -f telegram-bili-feed-helper 排查报错。
  3. 功能验证
    私聊机器人发送视频链接,它应能自动下载、合并 DASH 流并发送高清视频。

五、 进阶提示:权限控制

为了防止机器人被滥用,建议在代码中添加针对 message.from_user.id 的白名单判断,或通过 @BotFather 关闭机器人的隐私模式(Privacy Mode),使其仅在特定群组中工作。