一个telegram文件自动转存机器人

介绍

 

一个简单的自动转存文件的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依赖

 

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等机器请自编译官方可执行程序;"-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 &

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注

×
订阅图标按钮