介绍
一个简单的自动转存文件的telegram机器人,直接将消息转发给机器人,机器人自动提取文件,不限速下载消息中所有文件到本地,然后调用rclone上传文件到云端,完成后回复"xx文件下载完成+alist等列表程序访问该文件的地址"的消息(10分钟后删除该条回复的消息)。需借助自建的telegram bot api,官方api有文件大小限制.
Github项目地址:tg-auto-install-bot
2025年11月更新:修复了telegram-bot-api大文件下载时间长导致request请求超时的bug;添加了调用yt-dlp下载油管、b站等视频的功能;优化了脚本逻辑。
文件保存路径与重命名
单文件消息:根目录下,按照video、document、audio、photo分类保存
多文件消息:media_group目录下,再创建一个以“标题+media_group_id”的子目录保存一条消息中的所有文件
文件重命名:
- 所有文件的文件名后缀前都会追加文件大小
- 若原有文件名全部为英文字符或不存在,截取消息标题前40个字符为文件名,若标题也不存在,使用分类名为文件名
由于很多tg文件其实不存在文件名称,或者全为英文乱码,故强制开启文件重命名
使用方法
用户将消息转发给机器人或发送文件给机器人,机器人自动、提取下载消息中的文件
将机器人拉入群组,设置为管理员,机器人即可自动提取、下载所有新发布的或新转入群组的消息中的文件
查看Bot状态: 发送/ping或者/start命令,若机器人正常工作,会回复"Pong! 🏓",2秒后会删除消息
利用yt-dlp下载视频:发送/ytdlp
工作流程图

安装&使用
安装python与rclone,安装以下python依赖
apt update
apt install rclone -y
apt install python3 python3-pip -y
pip3 install requests
如需要ytdlp功能,安装yt-dlp与ffmpeg
bash <(curl -L -s https://raw.githubusercontent.com/ershiyi21/myprogram/main/yt/yt_install.sh)
apt install ffmpeg -y
本地托管自己的telegram bot api,采用docker或者编译
不推荐使用官方api,使用官方api上传文件不能超过50MB,下载文件不能超过20MB,而且本脚本未对官方api适配,强制自建api,且api自建机器与脚本运行机器需相同
(1) docker
docker run -d -p 8081:8081 \
--name=telegram-bot-api --restart=always \
-v /var/lib/telegram-bot-api:/var/lib/telegram-bot-api \
-e TELEGRAM_API_ID=<> \
-e TELEGRAM_API_HASH=<> \
-e TELEGRAM_LOCAL=TRUE \
aiogram/telegram-bot-api:latest
docker目前无arm镜像,甲骨文arm等机器请自编译官方可执行程序【2024.08.29更新,x86与arm均有docker镜像了】;为了保持docker内“telegram-bot-api程序运行过程中保存相关文件的目录”与宿主机器内映射目录路径一样 ,"-v /var/lib/telegram-bot-api:/var/lib/telegram-bot-api "不能修改; TELEGRAM_API_ID与TELEGRAM_API_ID自己官方申请;注意,download_path与/var/lib/telegram-bot-api跨盘符会存在硬链接失败问题,导致脚本失效.
(2) 编译
借助github项目:Telegram Bot API编译可执行文件,针对不同系统,官方有详细步骤介绍
例如debian10+系统:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install make git zlib1g-dev libssl-dev gperf cmake clang-10 libc++-dev libc++abi-dev
git clone --recursive https://github.com/tdlib/telegram-bot-api.git
cd telegram-bot-api
rm -rf build
mkdir build
cd build
CXXFLAGS="-stdlib=libc++" CC=/usr/bin/clang-10 CXX=/usr/bin/clang++-10 cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=.. ..
cmake --build . --target install
cd ../..
ls -l telegram-bot-api/bin/telegram-bot-api*
编译好后得到telegram-bot-api可执行文件,赋予运行权限:
chmod +x /path/to/telegram-bot-api
运行可执行文件telegram-bot-api,/var/lib/telegram-bot-api目录是telegram-bot-api程序运行过程中保存相关文件的目录,对于缓存到本机的文件,一般24h自动删除,如需要个人删除,直接删除/var/lib/telegram-bot-api文件夹,并且重启telegram-bot-api服务:
/path/to/telegram-bot-api --local --api-id=<> --api-hash=<> --dir /var/lib/telegram-bot-api
后台运行:
nohup /path/to/telegram-bot-api --local --api-id=<> --api-hash=<> --dir /var/lib/telegram-bot-api &
运行tg-auto-install-bot.py脚本
下载脚本到本地:
wget https://raw.githubusercontent.com/ershiyi21/myprogram/main/tg-auto-install-bot/tg-auto-install-bot.py
修改的变量,具体见脚本
bot_token = "11111:aaaaa" # 替换为您的Telegram Bot的令牌
download_path = "/tmp/tgmedia/" # 可不修改,文件硬链接位置,rclone上传时的文件中转地址,注意须与telegram-bot-api的文件下载位置【一般/var/lib/telegram-bot-api】位于同一硬盘,不然硬链接会失败
remote_path = "/media/qunhui/share/tg-down" # rclone上传文件的远程路径,默认为rclone move,上传完成会删除本地文件 eg. /media/tg转存 onedrive:/
api_base_url = "http://127.0.0.1:8081/bot" # 不需要修改,实际的Telegram Bot Api请求地址
logging_file = "/tmp/tg-auto-install-bot.log" # 不需要修改,日志记录文件,实时查看日志最后100行,tail -f -n 100 /tmp/tg-auto-install-bot.log
allowed_user_ids = [1111, 2222,-3333,-4444] # 允许的用户或者群组ID列表,多个用英文逗号隔开
cleanup_interval = 3600 # 不需要修改,定义清理旧数据的时间间隔(以秒为单位),不需要修改
remote_url = "http://url/....path=%2Ftg%E4%B8%8B%E8%BD%BD" ## alist等列表程序,远程云盘对应remote_path的目录
max_retries=100 # telegram-bot-api远端请求次数,每一次为30s,超过次数则该文件下载失败
retry_delay=5 # telegram-bot-api远端请求间隔时间,搭配max_retries使用,如下载失败,调高max_retries即可
运行脚本:
python3 /path/to/tg-auto-install-bot.py
后台运行:
nohup python3 /path/to/tg-auto-install-bot.py &


Comments | 1 条评论
有点疑惑,能帮忙解答吗,谢谢