前言

在很久之前就看到@TG_FileurlBot这个机器人了,发送/转发文件给他就会吐出文件直链给你,如图所示:

他所使用的项目是EverythingSuckz/TG-FileStreamBot,我也一直想搭一个,但苦于没时间(懒),所以就一直搁置了。前几天搭建试了一下,出了很多毛病,在捣鼓了许久后终于成功了,后而构建了一个Docker镜像丢到DockerHub上去了,所以就来写个教程帮助更多朋友。

部署前提醒:不要使用main分支的重构版本!它会一个劲的提醒你“Error - unexpected type of input peer”,我们需要使用python分支版本。 我已经单独拎出来丢到一个仓库里去了:rong6/TG-FileStreamBot,后续看看稍微汉化一下,你可以直接使用Python部署,也可以Docker部署,当然,也可以跟着下面使用docker-compose部署。

docker-compose部署

本教程使用docker-compose部署,如果没有安装请使用sudo apt install docker-compose -y命令安装。

拉取镜像:

docker pull rong6233/tg-filestreambot:latest

创建tgfile文件夹并进入文件夹内:

mkdir tgfile
cd tgfile

编辑docker-compose.yml

vim docker-compose.yml
version: "3.8"

services:
  fsb:
      image: rong6233/tg-filestreambot
      restart: unless-stopped
      container_name: fsb
      environment:
       - API_ID=0 # 这是您的 Telegram 帐户的 API ID,可以从 my.telegram.org 获取。
       - API_HASH=e83e839202 # 这是您的 Telegram 帐户的 API 哈希值,也可以从 my.telegram.org 获取。
       - BOT_TOKEN=token # 这是机器人令牌,可以从 @BotFather 获取。
       - BIN_CHANNEL=ID # 这是日志通道的通道 ID。
       - PORT=9191 # 这是应用程序的端口。
       - NO_PORT=true # 这可以是 True 或 False。如果设置为 True,则不会显示端口。
       - FQDN=example.com # 完全限定的域名(如果存在)。默认为 WEB_SERVER_BIND_ADDRESS的值
       - HAS_SSL=true # 这可以是 True 或 False。如果设置为 True,则将启用 SSL。
      ports:
       - 127.0.0.1:9191:9191
      volumes:
       - $HOME/TG-FileStreamBot:/app/.env

你还可以添加更多的环境变量,具体配置如下:

必选变量:

  • API_ID :这是您 Telegram 帐户的 API ID,可从 my.telegram.org 获取。

  • API_HASH :这是您 Telegram 帐户的 API 哈希,也可以从 my.telegram.org 获取。

  • BOT_TOKEN :这是 Telegram Media Streamer Bot 的机器人令牌,可从 @BotFather 获取。

  • BIN_CHANNEL :这是日志频道的频道 ID,机器人将在该频道转发媒体消息并存储这些文件以使生成的直接链接正常工作。要获取频道 ID,请创建一个新的电报频道(公共或私人),在频道中发布一些内容,将消息转发给 @missrose_bot 并使用 /id 命令 回复转发的消息。复制转发的频道 ID 并将其粘贴到此字段中。

可选变量

  • HASH_LENGTH:这是生成的 URL 的自定义哈希长度。哈希长度必须大于 5 且小于 64。

  • SLEEP_THRESHOLD:这设置了在机器人实例中全局发生的洪水等待异常的睡眠阈值。引发低于此阈值的洪水等待异常的请求将在睡眠所需的时间后自动再次调用。将引发需要更长等待时间的洪水等待异常。默认值为 60 秒。最好将此字段留空。

  • WORKERS:这设置了处理传入更新的最大并发工作者数量。默认值为 3。

  • PORT:这设置了您的 webapp 将监听的端口。默认值为 8080。

  • WEB_SERVER_BIND_ADDRESS:这设置了您的服务器绑定地址。默认值为 0.0.0.0。

  • NO_PORT :这可以是 True 或 False。如果设置为 True,则不会显示端口。

要使用此设置,您必须将 PORT 指向 HTTP 协议的 80 或 HTTPS 协议的 443,以使生成的链接正常工作。

  • FQDN :如果存在,则为完全限定域名。默认为 WEB_SERVER_BIND_ADDRESS

  • HAS_SSL :可以为 True 或 False。如果设置为 True,则生成的链接将采用 HTTPS 格式。

  • KEEP_ALIVE :是否要让服务器每 PING_INTERVAL 秒 ping 一次自身以避免休眠。在 PaaS 免费层中很有用。默认为 False

  • PING_INTERVAL :每次您希望服务器 ping 一次的时间(以毫秒为单位),以避免休眠(如果您使用某些 PaaS)。默认为 1200 或 20 分钟。

  • USE_SESSION_FILE : 使用客户端的会话文件,而不是将 sqlite 数据库存储在内存中。

如果懒得管,就直接看我上面那个配置改掉相关变量的值就行了。

如果需要配置多个机器人,可以添加如下环境变量:

MULTI_TOKEN1:在此添加您的第一个机器人令牌。

MULTI_TOKEN2:在此添加您的第二个机器人令牌。

以此类推。不要忘记将所有机器人添加到 BIN_CHANNEL 以确保正常运行。

启动:

docker-compose up -d

使用

直接对机器人发送/转发文件即可:

拿来存片是个不错的选择(doge)

我这里也提供了一个tg机器人,你可以直接拿来使用:@rong6_tgfile_public_bot