Guide
Ricetta: bot Telegram
Vendi i comandi di un bot, un ruolo o un gruppo privato. Ogni utente riceve la sua fattura; un webhook firmato apre l’accesso.
Il bot non vede mai denaro. Con /buy manda all’utente il suo link a una fattura; il tuo server riceve invoice.fulfilled e apre l’accesso. Ogni comando a pagamento chiede a Perly Pay, quindi niente si perde al riavvio. Discord funziona allo stesso modo, con un ruolo.
sell-bot-access del plugin Perly Pay realizza questa ricetta nel tuo progetto. L’esempio eseguibile è examples/telegram-bot (MIT) nel repository del plugin.Come funziona
- 1
Prodotto e prezzo
Una tantum o a vita per «per sempre», a durata per i pass, abbonamento per le membership rinnovate a fattura.
- 2
Un cliente per utente della chat
external_id: "tg:<user id>". Chiedi l’email solo per gli abbonamenti: lì vanno i rinnovi. - 3
/buy
Una fattura con l’id della chat in
metadata, inviata con un pulsante. Una fattura per utente al giorno, grazie a una chiave di idempotenza. - 4
Apri l’accesso
Con
invoice.fulfilled, prendi l’id della chat dametadatae rispondi: un messaggio, un invito monouso, un ruolo. - 5
Comandi a pagamento
entitlements.check({ customer_external_id: "tg:<id>", product }).
Esegui l’esempio
- 1
Installa
npm installinexamples/telegram-bot(Node 20.12+). - 2
Chiave
Copia
.env.examplein.enve metti una chiave di test (sk_test_…) inPERLY_PAY_SECRET_KEY. - 3
Prepara
npm run setupcrea il prodotto e il prezzo con la tua chiave e stampa i loro id per.env. - 4
Avvia
npm start(onpm run dev), come dice il suo README. - 5
Paga senza wallet
Scrivi
/buyal bot, apri Pay e premi Simulate payment: il bot dice «Payment confirmed» e/secretrisponde.
Errori comuni
- Lo stesso link di pagamento per tutti: non si vede chi ha pagato. Una fattura per utente, con l’id della chat.
- Dare l’accesso quando l’utente preme «Ho pagato». Lo apre solo il webhook o
entitlements.check. - L’accesso nella memoria del bot. Si perde al riavvio; chiedi a Perly Pay.