/tgState

(暂停止更新和修复)使用Telegram作为存储的文件外链系统,不限制文件大小和格式。

Primary LanguageGoMIT LicenseMIT

tgState

一款以Telegram作为储存的文件📃外链系统.可作为telegram图床,亦可作为telegram网盘使用.

支持通过Web前端上传文件或通过Telegram向机器人发送文件进行上传.

本fork版: 已修复原作者分包下载异常报错,报错原因: Request Entity Too Large 及其他部分优化和改进.

不限制文件大小和格式.

实际上,(为了能够分包下载,因为官方限制:下载文件大小不能超过20MB)超过20MB文件会在前端进行分割上传(过大的单文件需确保内存够用),后端也会对超过20MB文件打断上传,且受限于请求链路中各个环节对POST请求体大小的限制,另外记录分割数量的文件大小也不能超过20MB(即单文件不能超过约5.3T),故实际可上传大小请结合实际情况.

参数说明

必填参数

  • target
  • token

可选参数

  • pass
  • mode
  • url
  • port

target

目标可为频道、群组、个人

当目标为频道时,需要将Bot拉入频道作为管理员,公开频道并自定义频道Link,target值填写Link,如@xxxx

当目标为群组时,需要将Bot拉入群组,公开群组并自定义群组Link,target值填写Link,如@xxxx

当目标为个人时,则为telegram id(@getmyid_bot获取)

token

填写你的bot token

pass

填写访问密码,如不需要,直接填写none即可

mode

  • p 代表网盘模式运行,不限制上传后缀
  • m 在p模式的基础上关闭网页上传,可私聊进行上传(如果target是个人,则只支持指定用户进行私聊上传

url

bot获取FileID的前置域名地址自动补充

port

自定义运行端口

管理

获取FIleID

对bot聊天中的文件引用并回复get可以获取FileID,搭建地址+获取的path即可访问资源

如果配置了url参数,会直接返回完整的地址

image

部署

编译(推荐)

确保已经安装go

curl https://codeload.github.com/LanYunDev/tgState/zip/refs/heads/main -
-output main.zip
unzip main.zip
cd tgState-main
go build -ldflags "-w -s"
# Debug模式: go build -gcflags "all=-N -l"

二进制

Linux amd64下载

wget https://github.com/LanYunDev/tgState/releases/latest/download/tgstate.zip && unzip tgstate.zip && rm tgstate.zip

使用方法

 ./tgstate 参数

例子

 ./tgstate -token xxxx -target @xxxx

后台运行

nohup ./tgstate 参数 &

Docker

参考源项目

之后用命令 docker cp <本地二进制路径> <容器ID或容器名称>:/app/tgState 替换二进制文件.

API说明

POST方法路径: /api

表单传输,字段名为file,内容为二进制数据

文件下载路径: /api/download/