Skip to content

qi-mooo/tg-dl-bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Telegram 下载机器人 (TG Download Bot)

一个功能强大的 Telegram 机器人,支持从 Telegram 频道和群组下载文件,具备完整的用户权限管理和下载任务控制功能。

✨ 主要功能

📥 文件下载

  • 支持通过 Telegram 链接下载相册和单个文件
  • 智能识别消息类型:相册使用批量下载,单文件直接下载
  • 支持直接发送文件给机器人进行保存
  • 多文件并发下载,可配置最大并发数
  • 实时下载进度显示和速度监控
  • 支持暂停、恢复、取消下载任务
  • 断点续传功能:自动检测已下载文件,支持部分下载续传
  • 智能文件检查:自动跳过已完整下载的文件
  • 强制重下载:提供强制重新下载选项

👥 用户权限管理

  • 多级权限系统:管理员、授权用户、未授权用户
  • 管理员可以添加/移除用户权限
  • 管理员可以提升/降级其他用户
  • 完整的用户列表管理功能

⚙️ 系统设置

  • 可配置最大并发下载数
  • 可调整进度刷新间隔
  • 文件分类存储功能:支持按文件类型自动分类(图片、视频、音频、文档、压缩包、代码、其他)
  • 智能路径处理:无法解析来源的文件自动保存到 /download/save 目录
  • 支持重置系统设置为默认值
  • 实时设置生效,无需重启

🔧 任务管理

  • 查看所有下载任务状态
  • 按用户或全局控制下载任务
  • 任务状态实时更新
  • 支持批量操作(暂停/恢复/取消所有任务)

🚀 快速开始

环境要求

  • Python 3.11+
  • Docker & Docker Compose(推荐)

配置说明

在使用前,你需要配置以下环境变量(已内置 TDESKTOP_API):

API_ID=你的_API_ID                    # Telegram API ID
API_HASH=你的_API_HASH                # Telegram API Hash  
BOT_TOKEN=你的_机器人_TOKEN           # 机器人 Token
USER_SESSION=/app/session/userbot.session  # 用户会话文件路径
DEFAULT_DOWNLOAD_DIR=/download        # 默认下载目录

使用 Docker Compose 部署(推荐)

  1. 克隆项目
git clone https://github.com/qi-mooo/tg-dl-bot
cd tg-download-bot
  1. 修改 docker-compose.yml 中的环境变量(已内置 TDESKTOP_API)
environment:
  - API_ID=你的_API_ID
  - API_HASH=你的_API_HASH  
  - BOT_TOKEN=你的_机器人_TOKEN
  1. 启动服务
docker-compose up -d
  1. 查看日志
docker-compose logs -f
  1. 登录 userbot

使用浏览器打开 ip:8000 端口

手动部署

  1. 安装依赖
pip install -r requirements.txt
  1. 设置环境变量
export API_ID=你的_API_ID
export API_HASH=你的_API_HASH
export BOT_TOKEN=你的_机器人_TOKEN
  1. 运行程序
python3 main.py
  1. 登录 userbot

使用浏览器打开 ip:8000 端口

📖 使用指南

基础命令

命令 功能 权限要求
/start 启动机器人 所有用户
/help 查看帮助信息 所有用户
/downloads 查看下载任务列表 授权用户
/pause [任务ID] 暂停下载任务 授权用户
/resume [任务ID] 恢复下载任务 授权用户
/cancel [任务ID] 取消下载任务 授权用户
/check <链接> 检查文件下载状态 授权用户

管理员命令

命令 功能 说明
/adminhelp 管理员帮助 显示详细管理命令
/adduser <用户ID> 添加授权用户 授权用户下载权限
/removeuser <用户ID> 移除用户权限 取消用户下载权限
/promote <用户ID> 提升为管理员 将用户提升为管理员
/demote <用户ID> 降级管理员 将管理员降级为普通用户
/listusers 查看用户列表 显示所有用户权限
/settings 查看系统设置 显示当前配置
/setmax <数量> 设置最大并发数 配置同时下载任务数
/setrefresh <秒数> 设置刷新间隔 配置进度更新频率
/classification <on/off> 文件分类开关 开启/关闭文件分类存储
/resetsettings 重置设置 恢复默认配置
/pauseall 暂停所有任务 暂停所有下载
/resumeall 恢复所有任务 恢复所有下载
/cancelall 取消所有任务 取消所有下载

支持的链接格式

  • https://t.me/channel/123 - 公开频道链接
  • https://t.me/c/123456/789 - 私有频道链接

下载行为说明

  • 相册消息:自动识别并批量下载相册中的所有文件
  • 单个文件:直接下载单个媒体文件(图片、视频、文档等)
  • 文本消息:如果不包含媒体文件,会提示无法下载

文件分类存储

支持的文件类型分类:

  • 🖼️ 图片:jpg, png, gif, webp 等
  • 🎬 视频:mp4, avi, mkv, mov 等
  • 🎵 音频:mp3, wav, flac, aac 等
  • 📄 文档:pdf, doc, ppt, txt 等
  • 📦 压缩包:zip, rar, 7z, tar 等
  • 💻 代码:py, js, html, css 等
  • 📋 其他:不属于以上类型的文件

存储路径规则:

  • 有来源信息/download/[频道名]/[文件类型]/[文件名](开启分类时)
  • 无来源信息/download/save/[文件类型]/[文件名](开启分类时)
  • 关闭分类:直接存储到频道目录或 save 目录

使用示例

  1. 下载文件

    • 直接发送 Telegram 链接给机器人
    • 或者直接发送文件给机器人
  2. 管理用户权限

    /adduser 123456789     # 添加用户权限
    /promote 123456789     # 提升为管理员
    /listusers            # 查看所有用户
    
  3. 管理下载任务

    /downloads            # 查看任务列表
    /pause task_1_123     # 暂停指定任务
    /resume               # 恢复所有任务
    
  4. ** 文件分类管理**

    /classification on    # 开启文件分类
    /classification off   # 关闭文件分类
    /settings            # 查看当前分类状态
    
  5. ** 断点续传和文件检查**

    /check https://t.me/channel/123  # 检查文件下载状态
    # 发送链接时自动检查并提供续传选项
    # 支持强制重新下载所有文件
    

🏗️ 技术架构

核心技术栈

  • aiogram: Telegram Bot API 框架
  • telethon: Telegram 客户端库,用于文件下载
  • FastAPI: Web 框架,提供管理界面
  • SQLite: 轻量级数据库,存储配置和用户信息
  • asyncio: 异步编程,支持并发下载

项目结构

├── main.py              # 主程序文件
├── requirements.txt     # Python 依赖
├── Dockerfile          # Docker 镜像构建
├── docker-compose.yml  # Docker Compose 配置
├── session/            # Telegram 会话文件
├── download/           # 下载文件存储目录
└── sql/               # SQLite 数据库文件

核心模块

  1. 权限管理系统

    • 多级用户权限控制
    • 数据库持久化存储
    • 安全的权限验证机制
  2. 下载管理器

    • 并发下载控制
    • 任务状态管理
    • 进度监控和速度统计
  3. 命令处理系统

    • 统一的命令验证
    • 错误处理和用户反馈
    • 权限检查和参数验证

🔧 配置选项

环境变量

变量名 默认值 说明
API_ID 611335 Telegram API ID
API_HASH d524b414d21f4d37f08684c1df41ac9c Telegram API Hash
BOT_TOKEN - 机器人 Token(必填)
USER_SESSION /app/session/userbot.session 用户会话文件路径
DEFAULT_DOWNLOAD_DIR /download 默认下载目录

系统设置

  • 最大并发下载数: 默认 3,可通过 /setmax 命令调整
  • 进度刷新间隔: 默认 1 秒,可通过 /setrefresh 命令调整
  • 文件分类存储: 默认关闭,可通过 /classification 命令开启/关闭

🐳 Docker 部署

端口映射

  • 容器端口: 8000

数据持久化

volumes:
  - ./session:/app/session    # Telegram 会话文件
  - ./download:/download      # 下载文件存储
  - ./sql:/app/sql           # 数据库文件

🤝 贡献指南

欢迎提交 Issue 和 Pull Request!

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情

⚠️ 免责声明

本工具仅供学习和研究使用,请遵守相关法律法规和 Telegram 服务条款。使用本工具下载内容时,请确保你有合法的下载权限。

📞 支持

如果你在使用过程中遇到问题,可以:

  1. 查看 Issues 页面寻找解决方案
  2. 提交新的 Issue 描述问题
  3. 参考项目文档和代码注释

⭐ 如果这个项目对你有帮助,请给个 Star 支持一下!

About

一个 telegram 下载 bot,支持 album 消息,支持自动下载,支持按频道/群组分类

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors