Serverless 的 Telegram 私聊 Bot 实现

Telegram 私聊 Bot 是一种为了保护账号隐私而产生的消息转发工具。目前有多种实现可以选择,昨天(2022.10.10)我编写了一个简单的 Serverless 的实现,跑在 Vercel 上。

为什么要用 Serverless 的实现?

很简单,它免费呀(x
Vercel 免费的账户没有多少限制,而且这个转发姬本身其实不需要太多的状态。

关于自己编写的实现?

参见 GitHub 代码仓库 。使用 Apache 2.0 开源。

它用到了 Telegraf.js 作为 Telegram API 的实现。使用 Vercel 的 Serverless Function 处理 TG 的 WebHook 。

食用方法?

  1. 申请一个 Telegram 机器人;
  2. Fork 代码仓库;
  3. 在 Vercel 中导入项目;
  4. 添加 Vercel 的环境变量;
  5. 向 Telegram Bot 添加 WebHook 。

所需环境变量列表如下:

环境变量名内容备注
TG_TOKENTelegram Bot 的 Token
SECRET_TOKENPM Bot 使用的 Token在 TG 调用我们的 WebHook 的过程中传递,以保证消息是由 TG 的服务器发出的。
ADMIN_IDBot 管理员的 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

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注