搭建|一个能下载并自动上传文件到Google Drive的Telegram Bot

  • 首页 > 教程
  • 作者:jaz
  • 时间: 2020年4月19日 21:34
  • 字数:6134 个
  • 字号:
  • 评论:4 条
  • 浏览:40990 次
  • 百度:百度已收录
  • 分类: 教程
  • 时间:2020-4-19 21:34 热度:40990° 评论:4 条 


        最近看到了一个有意思的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-bot
    cd aria-telegram-mirror-bot


    2)npm安装

     npm install
     npm install -g typescript


    3)创建配置文件

    cp src/.constants.js.example src/.constants.js
    cp 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: ['[email protected]', '[email protected]']
      },
      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 -y
    screen -S bot npm start
    ##先按ctrl+a再按ctrl+z退出

    还可以使用nodejs的pm2守护程序

    npm i -g pm2
    pm2 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 - mirrorstatus
    cancelmirror - cancelmirror
    cancelall - cancelall ##这个容易误操作,不建议添加
    list - <filename> 
    getfolder - getfolder

    Bot其他设置按需设置一下。





    4)建议:Google Drive文件夹设置为共享文件夹

    这样getfolder返回的链接就可以查看。

    或搭建gdindex方便查看。


    5)其他问题欢迎骚扰原作者:https://github.com/out386/aria-telegram-mirror-bot/issues

    或加博主Telegram交流群 https://t.me/jialezi666


    其他相关BOT

    https://github.com/viperadnan-git/google-drive-telegram-bot

    https://github.com/lzzy12/python-aria-mirror-bot



    文中提到的bot:@Aria2GD2_bot


    -

    正文到此结束
    您阅读这篇文章共花了: 
    本文链接://blog.jialezi.net/?post=156
    版权声明:若无特殊注明,本文皆为《jaz》原创,转载请保留文章出处。
    捐赠支持:如果觉得这篇文章对您有帮助,请“扫一扫”鼓励作者!

    热门推荐

    Hello! How do you see it?

    你还可以输入250 / 250 个字

    嘻嘻 大笑 可怜 吃惊 害羞 调皮 鄙视 示爱 大哭 开心 偷笑 嘘 奸笑 委屈 抱抱 愤怒 思考 日了狗

    已有4条吐槽

    匿名

    2023-07-17 18:46 IANA保留地址
    发帖软件 www.teamczyx.com
     未知操作系统   未知浏览器

    William

    2021-02-16 00:19 IANA保留地址
    你们的都可以用? 为什么我的直接挂了=.=
     未知操作系统   未知浏览器

    匿名

    2020-04-29 21:49 世界美国加州三藩CloudFlare公司AS13335任播网络CDN全球节点(CLOUDFLARENET)(WorldAnyCast)
    站长能否搞个qbitorrent的机器人
     未知操作系统   未知浏览器

    我就是

    2020-04-25 10:53 世界美国加州三藩CloudFlare公司AS13335任播网络CDN全球节点(CLOUDFLARENET)(WorldAnyCast)
    楼主,据说钉钉里也有机器人是否可行呢
     未知操作系统   未知浏览器

    返回顶部    返回首页    手气不错    捐赠支持         
    版权所有:Jialezi `s blog    站点维护:    +主题:海云彩色