Sign inSign up

townley9288/tg-post-bot

By townley9288

•Updated 1 day ago

tg投稿机器人

Image
2

50K+

townley9288/tg-post-bot repository overview

⁠TG 投稿机器人 (TG Post Bot)

Telegram 频道投稿管理系统,支持 115/123/天翼云盘、ED2K、HDHive 资源解析与转存,自动识别 TMDB/豆瓣媒体信息,提供频道监控、资源订阅、资源聚合、媒体发现、Emby 看板、多频道联发、投稿统计和 WebUI 管理等功能。

Docker 镜像: townley9288/tg-post-bot:latest⁠

更新日志:CHANGELOG.md⁠ | 开发文档:DEVELOPMENT.md⁠

⁠功能特色

  • 链接解析 - 自动解析 115/123/天翼云盘、ED2K 等链接,提取文件名、大小和分享信息。
  • 秒传链接 - 123 网盘分享可自动生成秒传 JSON,方便导入 123 客户端。
  • HDHive 解锁 - 通过 OpenAPI + OAuth 授权解锁影巢资源,支持单条和多链接批量解锁,按 Telegram 用户绑定账号扣除免费次数或积分。
  • HDHive 搜索 - 通过 TMDB 匹配影片,再经授权服务器代理查询 HDHive 资源,支持网盘类型过滤。
  • 网盘多账号管理 - 支持 115/123 多账号卡片管理、115 扫码获取 Cookie、目标文件夹配置和自动转存。
  • 频道监控 - 监控 Telegram 公共/私有频道,匹配资源订阅关键词后自动解锁并转存,支持实时监听、补漏检查和全量收录。
  • 群组消息搜索 - /zs 命令搜索群组历史消息,基于 SQLite 本地缓存,支持分页、跳转原消息和 CSV 导出。
  • HDHive 自动签到 - 支持普通签到和赌狗签到,通过 OAuth 授权执行。
  • 媒体识别 - 支持 TMDB 搜索、豆瓣评分、MoviePilot 文件名识别和手动修正。
  • 卡片生成 - 生成 HTML 格式投稿卡片,支持海报、标题、规格、字幕、备注、频道等字段。
  • 自动备注 - 根据识别信息生成规范化备注,包括分辨率、来源、动态范围、音频、字幕、帧率等。
  • 智能判断 - 支持电视剧完结检测、多季资源识别、集数过滤和 Emby 已有集数跳过。
  • 多频道联发 - 支持主频道和综合频道同步发布,每个频道可单独控制是否同步。
  • 手动投稿 - /manual 可完全自定义标题、链接、备注、频道等投稿内容。
  • 统计功能 - 支持发布统计、分辨率/类型分布、投稿人排行和频道排行。
  • 自动备份 - 支持定时备份配置和数据文件,可自定义备份周期与保留份数。
  • WebUI 管理 - 提供频道配置、投稿记录、Emby 看板、频道监控、资源聚合、媒体发现、消息索引、网盘助手、实时日志和系统设置。
  • 资源聚合 - 聚合多个频道资源,支持搜索、筛选、订阅、转存、频道管理和 Telegraph 链接提取。
  • 版本比较 - 资源聚合页可对比投稿资源与 Emby 已有版本的大小、分辨率、动态范围、编码和发布组。
  • 媒体发现 - 整合 TMDB 发现、豆瓣榜单/片单和 Emby 入库标记。
  • PWA 支持 - 支持安装到桌面和移动端主屏幕。

⁠系统要求

  • Docker(推荐)或 Python 3.11+
  • Telegram Bot Token
  • TMDB API Key
  • 授权卡密 LICENSE_KEY
  • 可访问 Telegram、TMDB、HDHive 等服务的网络环境;国内网络通常需要代理

⁠快速开始

⁠镜像标签
  • latest - 最新稳定镜像
  • vX.Y.Z - 指定版本镜像,例如 townley9288/tg-post-bot:v2.0.10.10
⁠Docker 部署(推荐)
# 拉取镜像
docker pull townley9288/tg-post-bot:latest

# 运行容器
docker run -d \
  --name tg-post-bot \
  --restart unless-stopped \
  -p 9624:9624 \
  -v ./config:/app/config \
  -v ./logs:/app/logs \
  -v ./backups:/app/backups \
  -e TZ=Asia/Shanghai \
  -e LICENSE_KEY="<kid>_<secret>" \
  townley9288/tg-post-bot:latest

如需在环境变量中预置 TMDB API Key,可额外添加:

  -e TMDB_API_KEY="your_tmdb_key"

设备绑定说明:容器首次启动会在 /app/config/install_id 生成本机安装 ID,并用它作为授权设备标识。请务必持久化 /app/config,否则删除并重建容器后设备 ID 可能变化。普通重启容器不会改变设备 ID。

⁠Docker Compose(推荐)
version: "3.8"

services:
  tg-post-bot:
    image: townley9288/tg-post-bot:latest
    container_name: tg-post-bot
    restart: unless-stopped
    ports:
      - "9624:9624"
    volumes:
      - ./config:/app/config
      - ./logs:/app/logs
      - ./backups:/app/backups
      # 可选:允许 WebUI「重启系统」按钮重启当前容器。
      # 注意:Docker Socket 具备宿主机 Docker 控制权限,公网部署不建议挂载。
      # - /var/run/docker.sock:/var/run/docker.sock
    environment:
      # 必填:时区
      - TZ=Asia/Shanghai

      # 必填:授权卡密
      - LICENSE_KEY=<kid>_<secret>

      # 可选:WebUI 端口,默认 9624
      # - WEBUI_PORT=9624

      # 可选:TMDB API Key,也可以在 WebUI 设置
      # - TMDB_API_KEY=your_tmdb_key

      # 可选:Bot Token,也可以在 WebUI 设置
      # - BOT_TOKEN=your_bot_token

      # 可选:HTTPS 反代场景启用 Secure Cookie;如果还要用局域网 HTTP 登录,不要开启
      # - WEBUI_COOKIE_SECURE=1
      # - WEBUI_HSTS=1

      # 可选:代理设置
      # - HTTP_PROXY=http://192.168.1.100:7890
      # - HTTPS_PROXY=http://192.168.1.100:7890
⁠首次配置
  1. 启动容器后访问 WebUI:http://localhost:9624
  2. 在设置页配置必填项:
    • Bot Token(从 @BotFather⁠ 获取)
    • 白名单用户 ID(你的 Telegram 用户 ID)
    • TMDB API Key(如果已通过环境变量配置可跳过)
    • 代理设置(按网络环境选择)
  3. 在 WebUI「频道管理」页面添加投稿频道,并将 Bot 添加为频道管理员。
  4. 按需配置:
    • 115/123 网盘账号
    • HDHive OAuth 授权账号和默认解锁账号
    • MoviePilot API
    • 每个频道是否同步到综合频道
    • 频道监控、资源订阅和目标转存目录
    • Emby 服务器地址和 API Token
    • 自动备份、自动签到和日志设置

⁠使用指南

⁠Bot 命令

基础命令:

  • /start - 显示欢迎消息和使用说明
  • /help - 同 /start
  • /version - 查看当前版本和更新日志

投稿与搜索:

  • 直接发送 115/123/天翼云盘、ED2K 链接 - 自动识别投稿
  • 直接发送 HDHive 链接 - 自动解锁并获取 115/123/ED2K/磁力或其他网盘链接;一条消息内多条资源链接会批量解锁
  • /manual - 手动填写完整投稿内容
  • /hdhive <关键词> - 搜索 HDHive 资源
  • /hdhive115 <关键词> - 只搜索 HDHive 中的 115 资源
  • /hdhive123 <关键词> - 只搜索 HDHive 中的 123 资源
  • /hdhive夸克、/hdhive阿里、/hdhive百度、/hdhive天翼、/hdhive189、/hdhive迅雷 - 按网盘类型过滤
  • /hdhive_bind - 普通用户绑定自己的 HDHive 账号
  • /fastlink 或 /fl - 手动生成 123 秒传链接
  • /search <关键词> 或 /s <关键词> - 搜索已发布资源
  • /zs <关键词> - 搜索群组历史消息(需要在已缓存群组内使用)
  • /ch_list - 查看已配置频道

管理员命令:

  • /stats - 查看发布统计
  • /sign115 - 手动触发 115 签到
  • /signhdhive - 手动触发 HDHive 签到
  • /clean115recent - 清理 115 网盘「最近接收」
  • /clean115rb - 清空 115 网盘回收站

频道管理:

  • 频道新增、编辑、删除统一在 WebUI「频道管理」页面操作。
  • Telegram 机器人不再提供 /ch_add 和 /ch_del。
  • /ch_list 仅用于查看已配置频道。
⁠标题格式指令

发送链接时,可以在标题或文本中使用特殊格式:

  • {{tmdb-12345}} - 指定 TMDB ID
  • 没有指定 ID 时,系统会通过 MoviePilot / meta_parser / TMDB 搜索自动识别
  • 识别错误时,可在投稿预览卡片中手动更改媒体信息
⁠HDHive(影巢)功能
⁠1. 资源搜索

按关键词搜索影视资源:

  • 命令:/hdhive <关键词>
  • 通过 TMDB 搜索匹配影片,再经授权服务器代理查询 HDHive 资源
  • 双层选择:先选影片,再选具体资源,然后解锁获取链接
  • 支持返回搜索结果重新选择
  • 支持显示资源类型、标题年份、资源数量、分辨率、来源、大小、字幕、备注、上传者和积分

网盘过滤:

  • /hdhive115、/hdhive123、/hdhive夸克 等命令会按网盘类型过滤结果
  • 解锁、免费次数和积分按 Telegram 消息发送者绑定的 HDHive 账号扣除
  • 部署者可在 WebUI 设置默认解锁账号,供频道监控和管理员自动转存使用
⁠2. 链接解锁

资源站链接解析工具:

  • 通过授权服务器代理解锁 HDHive 资源,获取 115/123 分享链接、ED2K、磁力或其他网盘链接
  • 支持一条消息内多条 HDHive 资源链接批量解锁,成功链接会合并返回,整季资源会附带完整链接文本附件
  • 获取的链接可用于转存到自己的网盘
  • 普通用户通过 /hdhive_bind 绑定自己的影巢账号
  • 管理员和频道监控可使用部署者配置的默认 HDHive 授权账号
  • 系统会识别免费资源,免费资源无需积分
  • 支持带图片的消息,转发自频道的海报消息也能识别链接

配置说明:

  • 在 WebUI 设置页可以添加多个 HDHive OAuth 授权账号
  • 每个账号可配置自动签到、赌狗签到和默认解锁身份
  • 个人 API Key 已停用,影巢功能统一使用 OAuth 授权
⁠3. 115 网盘自动转存(管理员功能)

功能说明:

  • 管理员私聊解析 HDHive 后,可自动将 115 分享链接转存到指定文件夹
  • 支持配置多个目标文件夹
  • 单文件夹可直接转存,多文件夹会弹出选择按钮
  • 实时显示转存状态(成功/失败)
  • 普通用户正常返回 115 链接,不触发管理员自动转存

WebUI 配置:

  1. 填写 115 网盘 Cookie 或通过扫码登录获取 Cookie
  2. 点击「验证 Cookie」获取账号信息和文件夹列表
  3. 选择一个或多个目标文件夹
  4. 开启「启用自动转存」开关
  5. 保存设置

使用场景:

  • 管理员在私聊中解析 HDHive 链接
  • Bot 自动提取 115 分享链接并转存到配置的文件夹
  • 转存成功后显示目标文件夹和分享链接
  • 已有有效 Cookie 时不会重复登录
⁠4. 频道监控(自动解锁转存)

功能说明:

  • 监控 Telegram 公共/私有频道的新消息
  • 匹配资源订阅关键词后自动解锁 HDHive 链接并转存到 115 网盘
  • 支持全量收录:无需关键词,监控频道内所有 HDHive / 115 / ED2K 资源都会被处理
  • 支持从 Telegraph 页面提取 ED2K 和资源链接
  • 支持编辑消息重新匹配,并跳过重复链接
  • 自动提取视频规格、集数、分辨率、来源、编码、HDR、音频等信息并通知管理员

WebUI 配置(频道监控页面):

  1. 频道管理:添加要监控的公共频道(@channel_name)或私有频道
  2. 资源订阅:配置关注的影视关键词,支持关键词、正则和模糊匹配
  3. 转存设置:选择 115 目标文件夹和解锁积分上限
  4. 轮询间隔:建议 3 到 10 分钟,过短可能触发 Telegram 限流
  5. 全量收录:开启后跳过关键词匹配,处理频道内所有支持资源

私有频道支持:

  • 在 my.telegram.org⁠ 获取 API ID 和 API Hash
  • 在 WebUI「TG API 配置」中填写并完成登录验证
  • 支持验证码和两步验证
  • 登录后可监听账号已加入的私有频道和群组
⁠5. HDHive 自动签到

功能说明:

  • 支持普通签到和赌狗签到
  • 可在 WebUI 定时任务中配置自动执行
  • 通过 HDHive OAuth 授权执行
  • 可手动使用 /signhdhive 触发
⁠群组解析功能
  • 投稿功能仍限私聊使用,确保发布流程安全
  • 解析功能可在白名单群组中使用,方便团队协作
  • 可在 WebUI 设置页配置允许解析的群组 ID
  • Bot 需要加入群组,并按需设置为管理员

配置方法:

  1. 在 WebUI 开启「允许群组解析」开关
  2. 添加群组 ID(每行一个,支持备注)
    -1001234567890#资源分享群
    -1002356329542#团队协作群
    
  3. 将 Bot 拉入群组

使用场景:

  • 资源分享群:成员发送链接,Bot 自动解析
  • 团队协作:多人共同收集资源
  • 避免频繁私聊 Bot,提升处理效率
⁠123 网盘秒传链接

一键保存 123 网盘资源到自己的网盘:

  • 发布 123 网盘链接到频道时,可自动附带秒传链接消息
  • 秒传链接以 .json 文件形式发送,支持多文件分享
  • 用户下载 JSON 文件后,在 123 客户端导入即可快速保存
  • 无需手动转存,不消耗额外网盘空间配额
  • 支持视频和字幕文件,自动递归扫描文件夹

手动生成秒传链接:

  • 使用 /fastlink <123网盘链接> 或 /fl <链接>
  • 也可以直接回复包含 123 链接的消息

123 网盘支持域名:

123912.com / 123865.com / 123684.com / 123pan.com

⁠WebUI 功能

访问 http://localhost:9624 可以使用以下页面:

  • 仪表盘 - 投稿统计、分辨率分布、类型分布、每日发布趋势
  • 频道管理 - 添加、编辑、删除频道配置,控制频道同步开关
  • 投稿记录 - 查看所有投稿记录,支持搜索、卡片/列表视图切换
  • Emby 看板 - 查看 Emby 服务器信息、实时会话、媒体库、用户统计和用户管理
  • 网盘助手 - 115/123 多账号管理、115 扫码获取 Cookie、文件夹配置
  • 频道监控 - 公共/私有频道配置、Telethon 登录、资源订阅、处理记录
  • 资源聚合 - 多频道资源浏览、搜索筛选、订阅、手动转存、频道管理
  • 媒体发现 - TMDB/豆瓣发现、多维筛选、榜单、片单 URL 导入、Emby 入库标记
  • 消息索引 - /zs 群组管理、消息统计、手动同步、我的群组/频道列表
  • 实时日志 - 查看 Bot 运行日志,支持按类别、级别和关键词过滤
  • 系统设置 - Bot 配置、白名单、代理、备份、MoviePilot、HDHive 多账号等
⁠数据备份功能

自动备份配置:

  • 在 WebUI 设置页配置自动备份
  • 支持按 cron 或固定周期执行
  • 可设置保留备份份数并自动清理旧备份
  • 备份文件默认保存到 /app/backups

备份文件通常包括:

  • posts.json - 投稿记录
  • channels.json - 频道配置
  • settings.json - 系统设置
  • known_users.json - 已知用户
  • auth.json - 授权信息
  • user_prefs.json - 用户偏好
  • monitor_session.session - Telethon 登录态
  • monitor_records.json - 频道监控处理记录
  • monitor_processed_ids.json - 已处理消息 ID
  • tmdb_bindings.json - 资源聚合 TMDB 绑定关系
  • resource_search_cache.json - 资源聚合频道缓存

手动备份:

  • WebUI 设置页点击「立即备份」
  • 备份文件保存到 backups/ 目录
  • 文件名格式通常为 backup_YYYY-MM-DD_HH-MM-SS.zip

备份恢复:

  1. 停止容器
  2. 将备份文件解压到对应目录
  3. 重新启动容器

⁠配置说明

⁠环境变量
变量说明默认值
LICENSE_KEY授权卡密,用于启动校验和 HDHive 容器账号 OAuth 授权必填
TMDB_API_KEYTMDB API Key,用于 TMDB 搜索、刮削和季集数判断;也可在 WebUI 配置可选
BOT_TOKENTelegram Bot Token可在 WebUI 配置
CHANNEL_ID默认发布频道 ID可选
WEBUI_HOSTWebUI 监听地址0.0.0.0
WEBUI_PORTWebUI 端口9624
WEBUI_COOKIE_SECURE设为 1 后仅允许浏览器通过 HTTPS 发送 WebUI 登录 Cookie0
WEBUI_COOKIE_SAMESITEWebUI Cookie SameSite 策略Strict
WEBUI_HSTS设为 1 后返回 HSTS 头,仅建议全程 HTTPS 访问时开启0
DOCKER_SOCKETWebUI 重启容器使用的 Docker Socket 路径;需额外挂载 Socket/var/run/docker.sock
SELF_CONTAINER_ID无法自动识别当前容器 ID 时手动指定可选
HTTP_PROXY / HTTPS_PROXY代理地址可选
NO_PROXY不走代理的地址列表可选
TZ容器时区Asia/Shanghai
⁠TMDB 配置
  1. 访问 tmdb.org⁠
  2. 注册账号
  3. 在设置中的 API 页面生成 API Key (v3)
  4. 填入环境变量或 WebUI 设置页
⁠Telegram Bot 配置
  1. 与 @BotFather⁠ 对话创建机器人
  2. 获取 Bot Token
  3. 在 WebUI 设置页填入 Token
  4. 将 Bot 添加为频道管理员
  5. 如果需要监听私有频道,另需配置 Telegram API ID / API Hash,并通过 Telethon 登录

⁠常见问题

⁠Q: Bot 无响应?

A: 检查 Bot Token 是否正确、容器是否在运行、网络是否能访问 Telegram。国内网络环境通常需要配置代理。

⁠Q: TMDB 搜索失败?

A: 检查 TMDB API Key 是否有效,以及网络是否能访问 TMDB。也可以在 WebUI 日志中查看详细错误。

⁠Q: 115/123 网盘链接解析失败?

A: 确认链接格式正确、链接未过期。123 网盘支持从 URL 或文本中自动提取密码。

⁠Q: WebUI 无法访问?

A: 检查容器是否启动、端口 9624 是否映射、反向代理是否配置正确,以及浏览器是否访问了正确地址。

A: 这是正常现象。Secure Cookie 只会在 HTTPS 请求中发送。如果你还需要通过 http://局域网IP:9624 访问 WebUI,不要开启 WEBUI_COOKIE_SECURE=1;只有全程 HTTPS 访问时再开启。

⁠Q: WebUI 的「重启系统」按钮提示未挂载 Docker Socket?

A: 这个功能需要额外挂载 /var/run/docker.sock:/var/run/docker.sock。Docker Socket 具备宿主机 Docker 控制权限,只建议在可信内网环境使用。

⁠Q: 如何配置代理?

A: 可在 WebUI 设置页填写代理 URL,例如 http://127.0.0.1:7890,也可以通过 HTTP_PROXY / HTTPS_PROXY 环境变量配置。

⁠Q: 如何启用数据备份?

A: 在 WebUI 设置页的自动备份配置中设置备份周期、保留份数和备份路径,也可以手动点击「立即备份」。

⁠Q: 豆瓣发现页提示风控或 429 错误?

A: 豆瓣风控较严格。项目已尽量使用移动端接口和缓存机制;如果仍触发限制,可以稍后重试,或配置代理更换出口 IP。

⁠Q: iOS PWA 顶栏和系统状态栏重叠?

A: 如果之前已经添加到主屏幕,请从主屏幕移除后重新添加。iOS 会在添加到主屏幕时缓存部分 PWA meta 配置。

⁠Q: ED2K 链接从 HDHive 解锁后被送到 123 网盘?

A: 这是旧版本的路由误判问题。升级到当前版本后,ED2K / magnet 会正确送到 115 离线下载。

⁠Q: Telegram 左下角命令菜单还显示旧命令?

A: 重启容器后 Bot 会重新设置命令菜单。Telegram 客户端可能会缓存一段时间,必要时可重新打开会话或等待缓存刷新。

⁠依赖项

主要依赖:

  • pyTelegramBotAPI - Telegram Bot API
  • Telethon - Telegram User API,用于私有频道监听、实时监听和群组消息索引
  • Flask - WebUI 后端
  • httpx / requests - HTTP 客户端
  • APScheduler - 定时任务
  • beautifulsoup4 - HTML 解析
  • p115client - 115 网盘相关能力
  • Pillow - 图片处理

详见 requirements.txt⁠。

⁠文档

⁠许可证

MIT License

⁠贡献

欢迎提交 Issue 和 Pull Request。提交前建议先阅读 DEVELOPMENT.md⁠,并尽量附上复现步骤、日志和测试结果。

⁠联系方式


当前版本请查看 VERSION⁠ 文件或使用 /version 命令。

Tag summary

Content type

Image

Digest

sha256:25b044ffd…

Size

96.1 MB

Last updated

1 day ago

docker pull townley9288/tg-post-bot