Telegram 私聊 Bot 是一种为了保护账号隐私而产生的消息转发工具。目前有多种实现可以选择,昨天(2022.10.10)我编写了一个简单的 Serverless 的实现,跑在 Vercel 上。
为什么要用 Serverless 的实现?
很简单,它免费呀(x
Vercel 免费的账户没有多少限制,而且这个转发姬本身其实不需要太多的状态。
关于自己编写的实现?
参见 GitHub 代码仓库 。使用 Apache 2.0 开源。
它用到了 Telegraf.js 作为 Telegram API 的实现。使用 Vercel 的 Serverless Function 处理 TG 的 WebHook 。
食用方法?
所需环境变量列表如下:
环境变量名 | 内容 | 备注 |
---|---|---|
TG_TOKEN | Telegram Bot 的 Token | |
SECRET_TOKEN | PM Bot 使用的 Token | 在 TG 调用我们的 WebHook 的过程中传递,以保证消息是由 TG 的服务器发出的。 |
ADMIN_ID | Bot 管理员的 Uid |
添加 WebHook?
向 https://api.telegram.org/bot<Telegram 的 Token>/setWebhook
这个地址 Post 一个 JSON 数据,格式如下:
{
"url": "<WebHook 地址>",
"secret_token": "<PM Bot 的 SecretToken>"
}
可以参考 curl 进行添加的命令:
$ curl --request POST --url https://api.telegram.org/bot<Telegram 的 Token>/setWebhook --header 'content-type: application/json' --data '{"url": "<WebHook 地址>", "secret_token": "<PM Bot 的 SecretToken>"}'
目前的局限性
- 只能转发纯文本消息。
- 依赖用户可见的字符串标记消息来源。
Context.message
没有类型定义。(受 Telegraf 限制)
更新计划
- 可选的数据库集成
- 隐私条款
- 可编辑的提示信息
—— 雨落 2022.10.11