本文最后更新于2020年6月10日,已超过 1558天没有更新,如文章内容或资源失效,请留言反馈。订阅TG频道获取更多福利
创建自己的TG机器人
在TG中找到Botfather ,并且创建自己的机器人。创建完成后,保存好机器人的Token。
部署自动下载上传服务
首先SSH连接到自己的服务器
安装aria2
sudo apt install aria2
安装npm
# 安装NVM
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
# 关闭并重新连接终端或使用如下命令将NVM添加到当前终端会话立即使用
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
# 安装node
nvm install --lts
安装typescript
npm install -g typescript
部署程序
# 克隆源码
git clone https://github.com/out386/aria-telegram-mirror-bot
cd aria-telegram-mirror-bot
npm install
# 复制示例配置文件
cp src/.constants.js.example src/.constants.js
cp aria.sh.example aria.sh
# 配置启动脚本
nano aria.sh
# ARIA_RPC_SECRET 是用来连接aria2的密钥,可将其设置成任意自己想要的并按Ctrl+X保存。
# MAX_CONCURRENT_DOWNLOADS 是最大的同时下载任务数。此项不影响同时上传任务数,目前同时上传数量没有限制
# .constants.js文件配置请看下面单独的详细说明
nano src/.constants.js
# 编译项目
# tsc一般需要至少1G内存,如果你的内存不足的话,推荐添加swap虚拟内存
tsc
# 如果编译时出现如下内存溢出错误,可尝试增加Node可用内存暂时避过.
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
# max-old-space-size 的数值可以是 [1024, 2048, 4096, 8192, 16384] etc
export NODE_OPTIONS="--max-old-space-size=2048"
.constants.js配置说明
- TOKEN: 这是TG机器人的Token参数,需将在Botfather创建好的机器人Token粘贴至此
- ARIA_SECRET: 这是连接aria2 RPC的密码,需和aria.sh文件中你的设置一致。
- ARIA_DOWNLOAD_LOCATION: 这是设置aria2程序保存目录,确保目录路径最后不要加斜杠 "/",推荐的位置可以填写/path/to/aria-telegram-mirror-bot/downloads
- ARIA_DOWNLOAD_LOCATION_ROOT: 这是挂载点设置,路径需包含上一个选项中的位置,通常是用来计算在下载前的可用剩余空间。你可以简单理解为下载目录的上级目录。比如你设置的下载目录为/root/aria-telegram-mirror-bot/downloads,这一项就可以设置为 /root
- ARIA_FILTERED_DOMAINS: 域名屏蔽设置,机器人将拒绝下载包含这里面域名内容的文件。可以设置为空,即不屏蔽任何域名的种子。(推荐屏蔽存在一些钓鱼种子的网站)
- ARIA_FILTERED_FILENAMES: 文件名屏蔽设置,机器人将拒绝下载任何包含此设置内容里的文件。可以设置为空
- ARIA_PORT: Aria2c RPC的端口,如果你在这里更改了设置,一定要同步更改aria.sh文件里的相应设置。一般情况下留空即可,除非你系统中有相冲突的端口。
- GDRIVE_PARENT_DIR_ID: 谷歌网盘的文件夹ID,机器人将把下载的文件保存到此文件夹中。文件夹ID可在浏览器中获取,比如你打开的谷歌网盘文件夹在浏览器中的地址是https://drive.google.com/drive/u/0/folders/012a_345bcdefghijk ,那么 012a_345bcdefghijk 就是你的文件夹ID。
- SUDO_USERS: 超级管理员设置,这里填写可以使用此TG机器人的Telegram账户ID。只有在设置了AUTHORIZED_CHATS选项后,此项才可为空,否则不可为空。
- AUTHORIZED_CHATS: 授权群组设置,这里填写可以使用此TG机器人的群组ID,设置后,任何在此群组中的组员都可以使用此机器人。只有在设置了SUDO_USERS之后,此项才可为空,否则不可为空。
- STATUS_UPDATE_INTERVAL_MS: 状态更新时间设置,推荐默认即可。
- DRIVE_FILE_PRIVATE: 文件隐私设置:上传的文件是否自动分享还是保持私有
- ENABLED: 设置此项为
ture
将使上传的文件保持私密,false
将使上传的文件自动分享
- ENABLED: 设置此项为
- EMAILS: 可以访问上传文件的Email账户地址,此项设置成[]将只允许网盘的所有者访问上传的文件。
- DOWNLOAD_NOTIFY_TARGET: 留空即可,除非你想设置下载完成后自动通知外部服务器
- enabled: 设置此项为
true
去启用这项功能 - host: 外部通知服务器域名
- port: 外部通知服务器端口
- path: 服务器路径地址
- enabled: 设置此项为
- COMMANDS_USE_BOT_NAME: 决定是否必须加上@机器人ID才可以使用机器人,这只对群组有效。
- ENABLED: 如果设置为
true
,那么所有对机器人发起的命令都必须加上@机器人ID才可使用。比如命令/mirror https://someweb.site/resource.tar 要变成/mirror@botName_bot https://someweb.site/resource.tar (推荐不要开启此项,除非你准备在群组中启用多个同类机器人) - NAME: 机器人的ID,在Botfather中可以获取,必须包含@
–IS_TEAM_DRIVE: 是否是团队盘,如果你要上传到的地址是谷歌的团队盘,需要将此项设置为true
- ENABLED: 如果设置为
设置 OAuth 认证:
- 访问谷歌Cloud Console 并登录
- 选择OAuth Consent选项,填写相关项目名称信息并保存
- 选择Credentials选项,并且点击创建Credentials并选择OAuth Client ID
- 选择其它选项并创建(如果没有其它选项可选择[Desktop]桌面应用)
- 下载并保存生成的credentials文件
- 复制文件到服务器aria-telegram-mirror-bot根目录,并且重命名为client_secret.json
启用Drive API
- 访问Google API Library 页面
- 搜索Drive
- 并选择Google Drive API并点击Enable开启
启动程序
./aria.sh
npm start
权限验证
打开TG机器人并发送:
/mirror https://raw.githubusercontent.com/out386/aria-telegram-mirror-bot/master/README.md
之后回到SSH终端,访问终端给到的网址并授权,将返回的代码粘贴到终端回车
再次启动程序并后台运行
apt install tmux
tmux new -s tgbot
npm start