• 🎉小站の店正式开业试营运,欢迎大家捧场&反馈
  • 网站所有加密内容密码一律为:920.im;别问为什么,问就是为了活着
  • 订阅小站 TG频道获取更多小福利
  • 欢迎访问小站,如果您觉得本站还不错,请Ctrl+D 收藏本站
  • 请不要催更视频或文章;网站+所有视频制作都是我一人再弄,而且懒;你们多多留言,我可能就会破天荒更新了
  • 任何虚假邮箱的留言评论将一律不通过,你的邮箱不会被公开,请放心留言交流
  • 网站今后如果无法访问,请自行使用代理访问

使用TG机器人自动下载并上传文件到谷歌网盘

Tech CrazyJoe 4年前 (2020-06-10) 0个评论
本文最后更新于2020年6月10日,已超过 1377天没有更新,如文章内容或资源失效,请留言反馈。订阅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 将使上传的文件自动分享
  • EMAILS: 可以访问上传文件的Email账户地址,此项设置成[]将只允许网盘的所有者访问上传的文件。
  • DOWNLOAD_NOTIFY_TARGET: 留空即可,除非你想设置下载完成后自动通知外部服务器
    • enabled: 设置此项为 true 去启用这项功能
    • host: 外部通知服务器域名
    • port: 外部通知服务器端口
    • path: 服务器路径地址
  • 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

设置 OAuth 认证:

  • 访问谷歌Cloud Console 并登录
  • 选择OAuth Consent选项,填写相关项目名称信息并保存
  • 选择Credentials选项,并且点击创建Credentials并选择OAuth Client ID
  • 选择其它选项并创建(如果没有其它选项可选择[Desktop]桌面应用)
  • 下载并保存生成的credentials文件
  • 复制文件到服务器aria-telegram-mirror-bot根目录,并且重命名为client_secret.json

启用Drive API

启动程序

./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
5 1 vote
Article Rating

xzの小站 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:使用TG机器人自动下载并上传文件到谷歌网盘
喜欢 (8)
关于作者:
Is life always this hard, or is it just when you're a kid?——Mathilda:Léon: The Professional
Subscribe | 订阅
Notify of
guest

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x