如何部署TG机器人来下载媒体

由 夏日冰菓 发布

和BT一样挂机下载资源

Telegrambt

很多时候小工具不好用,下载TG里面电影资源都是要下载半天,更多的解决办法就挂一台windows一直下载,好在最近找到了一个更好的方案,就是挂着一个TG机器人,把资源转发给机器人让其帮忙下载,而且机器人还能根据资源分类

生成电报 API 密钥

在使用 Telegram 的 API 之前,您需要获取自己的 API ID 和哈希:

  • 转到 https://my.telegram.org/ 并使用您的 电话号码。
  • 单击 API 开发工具下。
  • 一个 创建新应用程序 窗口。 无需输入任何网址 ,只需输入前两个字段( App title 和 Short name )目前可以在以后更改。
  • 点击 创建应用程序 。 请记住,您的 API 哈希是保密的 ,Telegram 不会让你撤销它。 不要在任何地方发布!

创建电报机器人

  • 打开与 @BotFath 在 Telegram 中
  • 使用 /newbot 命令创建一个新机器人。 BotFather 会询问您的姓名和用户名,然后为您的新机器人生成授权令牌。
  • 您的机器人名称显示在联系方式和其他地方。
  • 用户名是一个短名称,用于提及和 telegram.me 链接。 用户名长度为 5-32 个字符,不区分大小写,但只能包含拉丁字符、数字和下划线。 您的机器人的用户名必须以“bot”结尾,例如“tetris_bot”或“TetrisBot”。
  • 令牌是类似于 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw 的字符串,是授权机器人并向机器人 API 发送请求所必需的。 确保您的令牌安全并安全存储,任何人都可以使用它来控制您的机器人。

测试你的电报机器人

先获取机器人聊天列表:

curl https://api.telegram.org/bot[机器人令牌]/getUpdates

会显示一个聊天ID和聊天对象,在把ID填入下面测试,如答复即可完成

curl -X POST "https://api.telegram.org/bot[机器人令牌]/sendMessage" -d "chat_id=[聊天室ID]&text=my sample text"

如果在聊天室机器人答复 my sample text 表示测试成功

开始部署机器人

拉取镜像:

docker pull jsavargas/telethon_downloader

部署容器:

docker run -itd --restart=always \
--privileged=true \
--name tg \
-e TG_AUTHORIZED_USER_ID=[聊天室ID] \
-e TG_API_ID=[TG API] \
-e TG_API_HASH=[哈希值] \
-e TG_BOT_TOKEN=123456;ABCDEF \
-e TG_MAX_PARALLEL=4 \
-e TG_PROGRESS_DOWNLOAD=True \
-v /TG/config:/config \
-e TZ=Asia/Shanghai \
jsavargas/telethon_downloader:latest

变量解释

TG_AUTHORIZED_USER_ID:聊天室ID,在上面测试聊天机器人可以获得该ID

TG_API_ID:TG API,在生成电报 API 密钥那一步可以获得这个ID

TG_API_HASH:TG 哈希值,在生成电报 API 密钥那一步可以获得这个哈希值

TG_BOT_TOKEN:机器人TOKEN,在创建电报机器人那一步可以获得这个TOKEN,格式类似123:ABC

TG_MAX_PARALLEL:最大同时下载数量(默认:4)

TG_PROGRESS_DOWNLOAD:显示下载进度信息

TG_DL_TIMEOUT:等待下载完成的最长时间(以秒为单位)。 在此时间之后,下载被取消并触发错误(默认:3600)

设置代理

机器人最好是部署在境外主机,在国内部署是不能正常通信,这里需要设置代理,无奈镜像没有设置代理的香港变量,这里需要魔改一下配置文件

确保完成以下操作:

  • 已经完成部署的容器
  • 请准备好socks5地址

容器内安装 PySocks 依赖

docker exec -it tg pip install PySocks

修改 bottorrent 配置文件

进入容器内/app目录,修改bottorrent.py文件

docker exec -it tg /bin/sh

205行 左右 把 proxy=none 改成 socks5 链接地址,如:127.0.0.1:1080

# client = TelegramClient(session, api_id, api_hash, proxy =none, request_retries = 10, flood_sleep_threshold = 120)

client = TelegramClient(session, api_id, api_hash, proxy =("socks5", '127.0.0.1', 1080), request_retries = 10, flood_sleep_threshold = 120)

最后重启TG容器即可使用


暂无评论

发表评论