type
status
date
slug
summary
tags
category
icon
password
Property
Nov 23, 2023 01:28 PM
前言:
起因是我需要实现转发telegrame文件就能将文件下载并上传到onedrive的功能,于是我在github上面找了很久,也找到了一些相关的项目,但是哪些项目都有一个共同特点——年久失修,项目的主要功能基本上还是能够使用的,但是存在很多bug或者不稳定等情况,于是我只能换其他项目,终于在最后我我通过几个目前在积极更新的项目,实现了这一功能,在这里简单分享一下,有需求的朋友也可以按照我的方法试试。
项目框架:
需要用到的项目:
aria2bot(aria2控制机器人)
TG-FileStreamBot(TG文件直链生成机器人)
docker-aria2-pro(aria2和rclone整合体)
操作流程:
- 首先将文件转发给直链生成的bot,获取直链。
- 然后将得到的直链发给aria2控制机器人进行下载。
- aria2下载后,通过集成的rclone将文件进行上传。
部署教程:
动手能力强的朋友应该是不用看我下面的部署教程了,可以直接去看项目下面的说明,就能完成部署,教程属于保姆级,比较啰嗦。
选购国外VPS
请务必注意,直链生成(TG-FileStreamBot)那个项目很吃性能,请务必选用一个高性能机器给这个项目,如果你是之前我推荐的哪个Rn的机器,那么我建议每次只下载1个项目,否则性能可能不够用!!
小广告:UPVPS 这家VPS有时候会给很不错的福利,大家可以进群自己蹲一下,除了售后比较慢,其他都挺好的,我之前就蹲到个4核4G,80G硬盘1G口的机器,10年500出头,很值!最近在做618促销,圣何塞买一年送一年,买两年送三年,有需要的可以看看。
Docker安装
- ubuntu
- debian
- centos
输入
docker ps -a
查看docker 运行是否正常,下面就是不正常的情况,遇到不正常的情况,就得百度排错了,不过我一般直接重装。可以尝试
systemctl restart docker
这样docker就已经成功运行了
安装git
部署docker-aria2-pro
复制下面的命令
你需要将设置秘钥改成你的aria2的秘钥,也就是链接你aria2的密码。
改好后粘贴到SSH
这样就完成了aria2的部署。
部署aria2bot
克隆aria2bot项目:
cd /root && git clone https://github.com/jw-star/aria2bot/
编辑配置文件
在root文件夹下面有一个aria2bot的文件夹
进去,编辑docker-compose.yml这个文件
对这里的内容进行修改
确保数据无误后Ctrl+s保存
然后cd到aria2bot文件夹下面
cd /root/aria2bot
更新镜像
docker compose pull
删除容器(如果容器存在)(首次安装不需要执行这条命令)
docker rm -f arbot
后台启动
docker compose up -d
查看日志
docker logs -f arbot
然后去telegrame给你创建的bot发送
/start
然后发送
/menu
如图则表示初步正常。
部署TG-FileStreamBot
请注意,这里还需要一个TG机器人,请再去BotFather创建一个新的bot,不要两个项目共用一个Bot,经过测试,共用会导致奇怪的Bug!
克隆存储库
cd /root
git clone https://github.com/EverythingSuckz/TG-FileStreamBot
cd TG-FileStreamBot
构建 docker 镜像
docker build . -t stream-bot
修改.env文件
我们到/root/TG-FileStreamBot/下创建一个.env的文件
此时,修改
.env
文件。下面有对变量的详细说明,可以按需增加删除,强制变量必须保留并且要设置正确!强制变量
在运行机器人之前,您需要设置以下强制更改:
API_ID
:这是您的 Telegram 帐号的 API ID,可以从 my.telegram.org 获得。
API_HASH
:这是您的 Telegram 帐号的 API 哈希,也可以从 my.telegram.org 获得。
BOT_TOKEN
:这是Telegram Media Streamer Bot的机器人令牌,可以从@BotFather获得。
BIN_CHANNEL
:这是日志通道的通道 ID,机器人将在其中转发媒体消息并存储这些文件以使生成的直接链接起作用。要获取频道 ID,请创建一个新的电报频道(公共或私人),在频道中发布内容,将消息转发给@missrose_bot并使用 /id 命令回复转发的消息。复制转发的频道 ID 并将其粘贴到此字段中。
可选变量
除了强制变量外,您还可以设置以下可选变量:
ALLOWED_USERS
:机器人仅回复的用户的用户电报 ID。
注意 将此字段留空,任何人都可以使用您的机器人实例。您还可以通过添加以逗号 (,) 分隔的 ID 来添加多个用户
HASH_LENGTH
:这是生成的 URL 的自定义哈希长度。哈希长度必须大于 5 且小于 64。
SLEEP_THRESHOLD
:这为 bot 实例中全局发生的泛洪等待异常设置了睡眠阈值。将泛洪等待异常提高到低于此阈值的请求将在休眠所需时间后再次自动调用。将引发需要更长等待时间的洪水等待异常。默认值为 60 秒。最好将此字段留空。
WORKERS
:这设置了处理传入更新的最大并发工作人员数。默认值为 3。
PORT
:这会设置您的 webapp 将监听的端口。默认值为 8080。
WEB_SERVER_BIND_ADDRESS
:这将设置您的服务器绑定地址。默认值为 0.0.0.0。
NO_PORT
:这可以是 True 或 False。如果设置为 True,则不会显示端口。
注意 要使用此设置,您必须将PORTHTTP 协议指向 80 或 HTTPS 协议指向 443 以使生成的链接有效。
FQDN
: 完全合格的域名(如果存在)。默认为WEB_SERVER_BIND_ADDRESS
HAS_SSL
:这可以是 True 或 False。如果设置为 True,生成的链接将采用 HTTPS 格式。
KEEP_ALIVE
:如果你想让服务器每秒钟ping一次自己PING_INTERVAL
以避免休眠。有助于 PaaS 免费层。默认为False
PING_INTERVAL
:您希望每次对服务器执行 ping 操作以避免休眠的时间(以毫秒为单位)(如果您使用的是某些 PaaS)。默认为1200
或 20 分钟。
USE_SESSION_FILE
: 为客户端使用会话文件而不是将 pyrogram sqlite 数据库存储在内存中
用于使用多客户端支持
注意 它的多客户端功能及其作用是什么?此功能在其他机器人之间共享 Telegram API 请求,以避免等待 floodwaited(Telegram 在后端所做的一种速率限制,以避免淹没其服务器)并使服务器处理更多请求。
要启用多客户端,请生成新的机器人令牌并将其添加为具有以下键名的环境变量。
MULTI_TOKEN1
:在此处添加您的第一个机器人令牌。MULTI_TOKEN2
:在此处添加您的第二个机器人令牌。您也可以添加任意数量的机器人。(最大限制尚未测试)
MULTI_TOKEN3
,MULTI_TOKEN4
等等。警告 不要忘记将所有这些机器人添加到BIN_CHANNEL以确保正常运行
如何使用机器人
警告 在使用机器人之前,不要忘记将所有机器人(也包括多客户端机器人)以BIN_CHANNEL管理员身份添加到
/start
: 检查机器人是否存活。要获得即时流链接,只需将任何媒体转发到机器人和 boom,机器人会立即回复到该 Telegram 媒体消息的直接链接。
常问问题
- 链接将保持多长时间有效,或者机器人生成的链接是否有过期时间?
只要您的机器人还活着并且您没有删除日志通道,这些链接就会有效。
现在用你创建的
.env
文件启动你的容器: 您的
PORT
变量必须与容器的公开端口一致,因为它用于生成 URL。所以请记住,如果您更改了PORT
变量,您的 docker run 命令也会更改。(例如:PORT=9000
-> -p 9000:9000
) 这个端口也就是你直链后的端口,可以自行设置。例如我想换成
9999
那么代码需要修改成 如果你需要在你的机器人已经启动后更改文件中的变量
.env
,你需要做的就是重新启动容器以使机器人设置得到更新:docker restart fsb
重启后,去Telegrame给直链bot发
/start
得到回复就说明部署正常。
配置rclone
进入aria2-pro容器
执行
输入
rclone config
此时就是rclone的配置过程,具体不同网盘方法不同,请自行百度。
此时我创建好了一个叫onedrive(name)的盘
我们进入
/root/aria2-config/
编辑
script.conf
主要修改这两个位置
比如我修改成这样
使用名字叫onedrive的盘进行上传,上传位置是/Download。
然后重启aria2-pro即可
体验
首先将直链bot加入到你创建的日志频道里面,并且授予管理员权限,否则发送文件会没有反应。
- 将需要离线的文件发给直链生成bot
- 复制链接,发给aria2bot
在下载完成后,aria2-pro会自动调用rclone进行上传,并且上传到你指定的网盘和位置下,上传完成后,会自动删除源文件。
最后
欢迎大家留言讨论遇到的问题,我也会尽快完善!