指南
配方:Telegram 机器人
出售机器人命令、角色或私密群组。每个用户都有自己的账单;签名 Webhook 开通访问。
机器人看不到钱。收到 /buy 时,它把用户专属的账单链接发给该用户;你的服务器收到 invoice.fulfilled 后开通访问。每个付费命令都询问 Perly Pay,所以重启后什么都不会丢。Discord 也一样,通过角色实现。
sell-bot-access 技能会在你的项目中实现这个配方。可运行的示例是插件仓库中的 examples/telegram-bot(MIT)。如何运作
- 1
商品和价格
一次性或终身 — 用于“永久”,限期 — 用于通行证,订阅 — 用于按账单续订的会员。
- 2
每个聊天用户一个客户
external_id: "tg:<user id>"。只有订阅才需要询问邮箱:续订账单会发到那里。 - 3
/buy
一张在
metadata中带聊天 ID 的账单,通过按钮发送。借助幂等键,每个用户每天一张账单。 - 4
开通访问
收到
invoice.fulfilled时,从metadata取出聊天 ID 并回复:消息、一次性邀请、角色。 - 5
付费命令
entitlements.check({ customer_external_id: "tg:<id>", product })。
运行示例
- 1
安装
在
examples/telegram-bot中运行npm install(Node 20.12+)。 - 2
密钥
把
.env.example复制为.env,在PERLY_PAY_SECRET_KEY中填入测试密钥(sk_test_…)。 - 3
准备
npm run setup用你的密钥创建商品和价格,并打印它们的 ID 供.env使用。 - 4
启动
按其 README 运行
npm start(或npm run dev)。 - 5
无需钱包即可付款
给机器人发
/buy,打开 Pay 并点 Simulate payment:机器人会回复“Payment confirmed”,/secret也会有回应。
陷阱
- 所有人共用一个付款链接:看不出是谁付的。每人一张账单,带上聊天 ID。
- 用户点了“我已付款”就开通访问。只有 Webhook 或
entitlements.check才能开通。 - 访问权限存在机器人内存里。重启后就没了;请询问 Perly Pay。