إلى المحتوى

الأدلة

وصفة: بوت Telegram

بِع أوامر البوت، أو دورًا، أو مجموعة خاصة. يحصل كل مستخدم على فاتورته؛ ويفتح ويب هوك موقّع الوصول.

افتح بصيغة Markdown

البوت لا يرى الأموال. عند /buy يرسل للمستخدم رابط فاتورته الخاصة؛ ويسمع خادمك invoice.fulfilled فيفتح الوصول. كل أمر مدفوع يسأل Perly Pay، لذا لا يضيع شيء بعد إعادة التشغيل. وDiscord بالطريقة نفسها، عبر دور.

مع مساعد: تنفّذ هذه الوصفة في مشروعك مهارة sell-bot-access من إضافة Perly Pay. المثال القابل للتشغيل هو examples/telegram-bot (MIT) في مستودع الإضافة.

كيف يعمل

  1. 1

    المنتج والسعر

    لمرة واحدة أو مدى الحياة — «للأبد»، ولمدة — للتصاريح، واشتراك — لعضوية تتجدد بالفاتورة.

  2. 2

    عميل لكل مستخدم في الدردشة

    external_id: "tg:<user id>". اطلب البريد للاشتراكات فقط: إليه تذهب التجديدات.

  3. 3

    /buy

    فاتورة مع معرّف الدردشة في metadata، تُرسل بزر. فاتورة واحدة لكل مستخدم في اليوم — بفضل مفتاح عدم التكرار.

  4. 4

    افتح الوصول

    عند invoice.fulfilled خذ معرّف الدردشة من metadata وأجب: رسالة، أو دعوة لمرة واحدة، أو دور.

  5. 5

    الأوامر المدفوعة

    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 }]] } });

شغّل المثال

  1. 1

    ثبّت

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

  2. 2

    المفتاح

    انسخ .env.example إلى .env واكتب مفتاح الاختبار (sk_test_…) في PERLY_PAY_SECRET_KEY.

  3. 3

    حضّر

    npm run setup ينشئ المنتج والسعر بمفتاحك ويطبع معرّفاتهما لـ .env.

  4. 4

    شغّل

    npm start (أو npm run dev)، كما يقول ملف README الخاص به.

  5. 5

    ادفع بلا محفظة

    اكتب للبوت /buy، وافتح Pay واضغط Simulate payment: سيقول البوت «Payment confirmed»، وسيجيب /secret.

مزالق

  • رابط دفع مشترك واحد للجميع: لا يُعرف من دفع. فاتورة لكل مستخدم، مع معرّف الدردشة.
  • فتح الوصول حين يضغط المستخدم «دفعت». لا يفتحه إلا الويب هوك أو entitlements.check.
  • الوصول في ذاكرة البوت. بعد إعادة التشغيل يختفي؛ اسأل Perly Pay.