最近发现了一个很有意思的东西,就是 Telegram Bot API,不知道什么时候添加了一个 Using a Local Bot API Server 的功能,可以自己搭建一个 Telegram Bot API 的服务器,实现发大文件2G的功能,官方bot发文件有50兆的限制。
使用
编译 bot api server
运行需要先去官网 ,登录后,点API development tools可以看到你的api-id和api-hash,这个要记下来,留在后面备用。
启动 bot api server
telegram-bot-api --api-id=<arg> --api-hash=<arg> --local -l /var/logs/tgserver.log -v 3
发送文件,这里直接发送文件而不是先上传到你本地server。
curl -v -F chat_id="<chat_id>" -F video="file://</home/hd/my.mp4>" -F supports_streaming=true -F caption="my.mp4" http://localhost:8081/bot<token>/sendVideo
,如果你想调分辨率需要设置 height 和 width 参数,具体参数可以看这里。仔细看返回信息
* Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 8081 (#0)
> POST /bot<you_token>/sendVideo HTTP/1.1
> Host: localhost:8081
> User-Agent: curl/7.64.1
> Accept: */*
> Content-Length: 558
> Content-Type: multipart/form-data; boundary=------------------------f7dec8eebe228600
>
* We are completely uploaded and fine这就说明,local server直接从本地取文件发送了。你可以tail下log,看到它在后台正在使劲的发送中。
tail -F tgserver.log
问题
主要问题出现在编译上,macOS 倒是很顺利,用了十多分钟;但是我的vps配置太低,编译速度太慢而且内存太低所以遇到了下面两个问题。
c++: internal compiler error: Killed (program cc1plus)
这个一搜索直接找到就是内存不够,开始我增加了2g的swap还是不够,最后索性增加了4g的swap,然后就编译成功了。
增加swap
#可以通过临时使用交换分区来解决: |
client_loop: send disconnect: Broken pipe
因为本身配置低,导致命令执行时间太长,所以会出现这个问题,选择用screen命令,然后在后台执行,然后就可以了。
screen
好像还有个tmux可以解决这类问题,但是之前用过screen,所以用screen。但是之前一直没有总结,现在有gpt了,就顺便总结下。
使用 screen 可以创建一个持久性的终端会话,使您可以在后台运行长时间运行的命令,即使连接中断也可以重新连接到该会话并恢复该命令的运行。下面是如何使用 screen 的步骤:
打开终端并连接到您的 VPS。
在终端中输入以下命令以启动一个新的 screen 会话:
screen |
现在您已经进入了一个新的 screen 会话。在这个会话中,您可以执行您想要在后台运行的命令。
在 screen 会话中,您可以使用以下命令将当前会话放入后台运行:
Ctrl + A + D |
这将使当前 screen 会话放入后台,并返回到您的原始终端会话。
要恢复到 screen 会话中,您可以使用以下命令:
screen -r |
如果您有多个 screen 会话,则可以使用以下命令恢复到特定的会话:php
screen -r <会话ID> |
您可以使用 screen -ls 命令查看所有的 screen 会话及其会话ID。
如果您需要完全退出 screen 会话,可以在会话中执行以下命令:
exit |
或者,在您使用 Ctrl + A + D 将会话放入后台后,您可以在原始终端中执行以下命令来彻底关闭该会话:
screen -X -S <会话ID> quit |
这是使用 screen 的基本操作。screen 提供了很多其他功能,如分屏、会话共享等。您可以使用 man screen 命令查看 screen 的完整文档。
参考
Telegram Bot API Server作弊条
Choose an operating system on which you want to use the Telegram Bot API server