Zum Inhalt

Anleitungen

Rezept: Telegram-Bot

Verkaufen Sie Bot-Befehle, eine Rolle oder eine private Gruppe. Jeder Nutzer erhält eine eigene Rechnung; ein signierter Webhook schaltet den Zugang frei.

Als Markdown ansehen

Der Bot sieht nie Geld. Bei /buy schickt er dem Nutzer seinen eigenen Rechnungslink; Ihr Server hört invoice.fulfilled und schaltet den Zugang frei. Jeder bezahlte Befehl fragt Perly Pay, sodass nach einem Neustart nichts verloren geht. Discord funktioniert genauso, mit einer Rolle.

Mit einem Assistenten: Dieses Rezept setzt der Skill sell-bot-access des Perly-Pay-Plugins in Ihrem Projekt um. Ein lauffähiges Beispiel ist examples/telegram-bot (MIT) im Repository des Plugins.

So funktioniert es

  1. 1

    Produkt und Preis

    Einmalig oder lebenslang für „für immer“, Laufzeit für Pässe, Abo für eine Mitgliedschaft mit Verlängerung per Rechnung.

  2. 2

    Ein Kunde pro Chat-Nutzer

    external_id: "tg:<user id>". Fragen Sie nur bei Abos nach einer E-Mail: Dorthin gehen die Verlängerungen.

  3. 3

    /buy

    Eine Rechnung mit der Chat-ID in metadata, per Button gesendet. Eine Rechnung pro Nutzer und Tag – dank eines Idempotenzschlüssels.

  4. 4

    Zugang freischalten

    Bei invoice.fulfilled die Chat-ID aus metadata lesen und antworten: eine Nachricht, eine Einmal-Einladung, eine Rolle.

  5. 5

    Bezahlte Befehle

    entitlements.check({ customer_external_id: "tg:<id>", product }).

/buy
const invoice = await pay.invoices.create(
  { line_items: [{ price: PRICE }], customer: customer.id, metadata: { chat_id: String(chatId) } },
  { idempotencyKey: `buy-${userId}-${today}` },
);
await tg("sendMessage", { chat_id: chatId, text: "Pay:", reply_markup: { inline_keyboard: [[{ text: "Pay", url: invoice.url }]] } });

Beispiel starten

  1. 1

    Installieren

    npm install in examples/telegram-bot (Node 20.12+).

  2. 2

    Schlüssel

    Kopieren Sie .env.example nach .env und tragen Sie einen Testschlüssel (sk_test_…) in PERLY_PAY_SECRET_KEY ein.

  3. 3

    Vorbereiten

    npm run setup legt mit Ihrem Schlüssel Produkt und Preis an und gibt ihre IDs für .env aus.

  4. 4

    Starten

    npm start (oder npm run dev), wie seine README sagt.

  5. 5

    Ohne Wallet bezahlen

    Schreiben Sie dem Bot /buy, öffnen Sie Pay und klicken Sie auf Simulate payment: Der Bot sagt „Payment confirmed“, und /secret antwortet.

Fallstricke

  • Ein gemeinsamer Zahlungslink für alle: Man sieht nicht, wer bezahlt hat. Eine Rechnung pro Person, mit der Chat-ID.
  • Zugang freischalten, wenn der Nutzer auf „Ich habe bezahlt“ tippt. Freischalten darf nur der Webhook oder entitlements.check.
  • Zugang im Speicher des Bots. Nach einem Neustart ist er weg; fragen Sie Perly Pay.