ガイド
レシピ: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 を入れた請求書を、ボタンで送ります。冪等キーのおかげで、ユーザーごとに 1 日 1 件。 - 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があなたのキーで商品と価格を作成し、.env用にその ID を表示します。 - 4
起動
README のとおり
npm start(またはnpm run dev)。 - 5
ウォレットなしで支払う
ボットに
/buyと送り、Pay を開いて Simulate payment を押します:ボットが「Payment confirmed」と言い、/secretが応答します。
落とし穴
- 全員で 1 つの支払いリンクを共有すること:誰が支払ったかわかりません。ユーザーごとに、チャット ID 付きの請求書を。
- ユーザーが「支払いました」を押した時点でアクセスを開くこと。開くのは Webhook か
entitlements.checkだけです。 - ボットのメモリにアクセス権を持つこと。再起動で消えます。Perly Pay に尋ねてください。