最近看到了一个有意思的Telegram Bot项目,可以使用aria2下载文件并将其上传到Google云端硬盘。平时自己也有使用到aria2+rclone自动上传到Google Drive,这个通过Bot的方式还没尝试过,就着手试着搭建了一个,这里分享搭建过程,至于成品Bot想想自己渣渣的服务器还是不方便分享。
项目地址:https://github.com/out386/aria-telegram-mirror-bot
需要准备:
1.服务器一台(硬盘不能太小,文件需要下载到本地再上传|内存不能太小,作者介绍运行tsc至少1G,可以尝试添加swap)
2.Google Drive一个。最好是无限容量的,可以使用团队盘(注意:团队盘不支持分享文件夹,当下载的不是单文件,bot返回的文件夹链接只有团队盘成员才能使用,可以尝试/mirrorTar命令,会返回打包的链接)
3.Telegram
本文将使用ubuntu系统搭建,按道理nodejs项目全平台支持,需要在其他平台搭建请自行研究。
安装:
1.安装前准备:
1)创建一个Telegram Bot(参考)
打开BotFather创建一个新的Bot,保存好生成的API。
2)创建一个Telegram群组,获取id
将刚建的bot添加到群组。
将这个bot也添加到群组@get_id_bot,获取自己id和群组id(注意:当将群组公开或聊天记录设置为可见后,群组id会改变。),获取了id可以把这个bot踢了。
3)安装aria2。
ubuntu可以直接apt安装,其他可以看这里
apt install aria2
4)准备Google Drive文件夹ID
如创建的文件夹为 https://drive.google.com/drive/folders/1uAKQ7E5YZPKDODR47z1wIF0ZUDQcrIZh
1uAKQ7E5YZPKDODR47z1wIF0ZUDQcrIZh即文件夹ID
5)安装nodejs
ubuntu可以直接apt安装,其他平台看这里
curl -sL https://deb.nodesource.com/setup_10.x | bash - && \apt-get install -y nodejs
2.安装
1)下载源码
git clone https://github.com/out386/aria-telegram-mirror-botcd aria-telegram-mirror-bot
2)npm安装
npm install npm install -g typescript
3)创建配置文件
cp src/.constants.js.example src/.constants.jscp aria.sh.example aria.sh
4)修改aria.sh脚本
vim aria.sh #ARIA_RPC_SECRET 这个是aria2远程连接的密码#MAX_CONCURRENT_DOWNLOADS 这个是同时下载的任务数# 建议加个--bt-tracker=## tracker在这里获取https://sleele.gitee.io/aria2-trackers/
5)设置Bot参数
vim src/.constants.js #主要需要修改以下参数:更多介绍https://github.com/out386/aria-telegram-mirror-bot#Constants-description module.exports = Object.freeze({ TOKEN: '10852945xxxxxxxxxIFhOeGA', //BotFather新建Bot时保存好生成的API ARIA_SECRET: 'xxxx', //上一步设置的aria2远程连接的密码 ARIA_DOWNLOAD_LOCATION: '/home/aria2', //aria2的下载目录,自行设置 ARIA_DOWNLOAD_LOCATION_ROOT: '/', //aria2的下载子目录,建议默认 ARIA_FILTERED_DOMAINS: ['yts', 'YTS', 'cruzing.xyz'], //禁止下载包含这些关键字的链接 ARIA_FILTERED_FILENAMES: ['YIFY'] // 文件名或根目录含有这些关键字禁止下载 ARIA_PORT: 6800, // aria2的远程端口,和上一步的一样 GDRIVE_PARENT_DIR_ID: 'xxxxx', // Google Drive文件夹ID SUDO_USERS: [258xxxx74, 345], // Telegram 用户ID.这些用户可以在任何对话使用bot AUTHORIZED_CHATS: [-1001xxxx91788], // Telegram群组ID. 群组内用户可以使用bot STATUS_UPDATE_INTERVAL_MS: 12000, //bot刷新时间,注意设置过快会被Telegram限制。 DRIVE_FILE_PRIVATE: { //上传返回的共享链接是否私有,不建议开 ENABLED: false, EMAILS: ['someMail@gmail.com', 'someOtherMail@gmail.com'] }, DOWNLOAD_NOTIFY_TARGET: { // 这个还没研究,外部通知之类的,其实可以用AriaNg查看。 enabled: false, // Set this to true to use the notify functionality host: 'hostname.domain', port: 80, path: '/botNotify' }, COMMANDS_USE_BOT_NAME: { ENABLED: false, // 发送指令时必需@bot NAME: "@aria2_gd_bot" // 你的bot name }, IS_TEAM_DRIVE: false //是否团队盘});
6)编译项目(不要留了这一步,编译时可能CPU/内存高占用)
tsc
7)设置Google Drive授权
打开:https://console.developers.google.com/apis/credentials
(没有项目的,先创建一个项目)
点击OAuth 同意屏幕——创建——输入一个应用名称保存
点击凭据——创建——其他——下载——重名为client_secret.json
上传到项目根目录
8)启用 Drive API:
打开:https://console.developers.google.com/apis/library/drive.googleapis.com
启用 Drive API
9)启动aria2
bash aria.sh
10)启动bot
npm start
11)打开Telegram
发送
/mirror https://raw.githubusercontent.com/out386/aria-telegram-mirror-bot/master/README.md
成功下载后上传前需要授权,打开运行日志中的网址授权
Telegram能返回GoogleDrive链接说明bot运行起来了。
3.其他说明
1)后台运行
linux可以使用 nohup
nohup npm start &
或screen
apt install screen -yscreen -S bot npm start##先按ctrl+a再按ctrl+z退出
还可以使用nodejs的pm2守护程序
npm i -g pm2pm2 start npm --name "{app name}" -- start
2)更新配置文件
修改.constants.js新增加管理员或认证的群组后需要重新运行tsc编译。
更新程序git pull https://github.com/out386/aria-telegram-mirror-bot 之后运行 tsc
3)Bot设置指令
设置指令后,对话框自动显示指令
打开BotFather输入/mybot——选择你的Bot——Edit Bot编辑Bot——Edit Commands——输入(注意好像不能大写)
mirror - mirror <url>mirrortar - mirrorTar <url> mirrorstatus - mirrorstatuscancelmirror - cancelmirrorcancelall - cancelall ##这个容易误操作,不建议添加list - <filename> getfolder - getfolder
Bot其他设置按需设置一下。
4)建议:Google Drive文件夹设置为共享文件夹
这样getfolder返回的链接就可以查看。
或搭建gdindex方便查看。