介绍
一个简单的自动转存文件的telegram机器人,直接将消息转发给机器人,机器人自动提取文件,不限速下载消息中所有文件到本地,然后调用rclone上传文件到云端,完成后回复"xx文件下载完成+alist等列表程序访问该文件的地址"的消息(10分钟后删除该条回复的消息)。需借助自建的telegram bot api,官方api有文件大小限制.
Github项目地址:tg-auto-install-bot
文件保存路径与重命名
单文件消息:根目录下,按照video、document、audio、photo分类保存
多文件消息:media_group目录下,再创建一个以“标题+media_group_id”的子目录保存一条消息中的所有文件
文件重命名:
- 所有文件的文件名后缀前都会追加文件大小
- 若原有文件名全部为英文字符或不存在,截取消息标题前40个字符为文件名,若标题也不存在,使用分类名为文件名
由于很多tg文件其实不存在文件名称,或者全为英文乱码,故默认开启文件重命名
使用方法
用户将消息转发给机器人或发送文件给机器人,机器人自动、提取下载消息中的文件;
将机器人拉入群组,设置为管理员,机器人即可自动提取、下载所有新发布的或新转入群组的消息中的文件。
查看Bot状态: 发送/ping或者/start命令,若机器人正常工作,会回复"Pong! 🏓",2秒后会删除消息
工作流程图
安装&使用
安装python与rclone,安装以下python依赖
apt update
apt install rclone -y
apt install python3 python3-pip -y
pip3 install requests tqdm
本地托管自己的telegram bot api,采用docker或者编译
不推荐使用官方api,使用官方api上传文件不能超过50MB,下载文件不能超过20MB
(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自己官方申请;注意使用docker情况下,跨盘符可能存在硬链接问题.
(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,/home/tg-local-api目录是telegram-bot-api程序运行过程中保存相关文件的目录,对于缓存到本机的文件,一般24h自动删除:
/path/to/telegram-bot-api --local --api-id=<> --api-hash=<> --dir /home/tg-local-api
后台运行:
nohup /path/to/telegram-bot-api --local --api-id=<> --api-hash=<> --dir /home/tg-local-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 = "" # 替换为您的Telegram Bot的令牌
download_path = "/home/tgmedia" # 下载文件的本地保存路径,若开启rclone上传,即文件中转地址
enable_upload = True # 是否开启rclone上传,根据需要设置为True或False,rclone上传默认为"move",即rclone上传后会删除本地文件
remote_path = "盘符:路径" # rclone上传文件的远程路径
api_base_url = "http://127.0.0.1:8081/bot" # 实际的Telegram Bot Api请求地址
logging_file = "/tmp/tg-auto-install-bot.log" # 日志记录文件
allowed_user_ids = [aaa,bbb,-ccc] # 允许的用户或者群组ID列表,多个用英文逗号隔开
cleanup_interval = 3600 # 定义清理旧数据的时间间隔(以秒为单位)
remote_url = "https://xxx.com/odrive" ## alist等列表程序,远程云盘对应remote_path的目录
运行脚本:
python3 /path/to/tg-auto-install-bot.py
后台运行:
nohup python3 /path/to/tg-auto-install-bot.py &
Comments | 1 条评论
博主 no.1
有点疑惑,能帮忙解答吗,谢谢