Files
PolyWeather/docs/superpowers/plans/2026-05-18-telegram-group-pricing.md
2026-05-18 16:18:26 +08:00

2.6 KiB

Telegram Group Pricing Implementation Plan

For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (- [ ]) syntax for tracking.

Goal: Add Telegram Login verification so backend decides Pro price: group member 5U, non-member 10U.

Architecture: Keep Supabase as the website account session, add Telegram Login as an identity link/price verification step. Backend verifies Telegram Login hash, checks getChatMember, stores the Telegram link in existing supabase_bindings, and payment intent creation recalculates price server-side.

Tech Stack: FastAPI, existing DBManager bindings, Telegram Bot HTTP API, Next.js proxy routes, React account center, pytest.


Task 1: Telegram auth service

Files:

  • Create: src/auth/telegram_group_pricing.py

  • Test: ests/test_telegram_group_pricing.py

  • Verify Telegram Login payload HMAC using bot token.

  • Call Telegram getChatMember and treat member, dministrator, creator as group members.

  • Return 5U/10U pricing payload.

Task 2: Backend auth route

Files:

  • Modify: web/core.py

  • Modify: web/services/auth_api.py

  • Modify: web/routers/auth.py

  • Add TelegramLoginRequest model.

  • Add POST /api/auth/telegram/login requiring Supabase identity.

  • Link Telegram id to current Supabase user via DBManager.bind_supabase_identity.

  • Return Telegram member status and effective price.

Task 3: Payment dynamic price

Files:

  • Modify: src/payments/contract_checkout.py

  • Modify: web/services/payment_api.py

  • At payment intent creation, check linked Telegram id and group membership.

  • Override pro_monthly amount to 5U for members, 10U otherwise.

  • Store pricing source in metadata.

Task 4: Frontend Telegram Login entry

Files:

  • Modify: rontend/components/account/AccountCenter.tsx

  • Create: rontend/app/api/auth/telegram/login/route.ts

  • Load Telegram Login widget with configured bot username.

  • Send payload to backend proxy.

  • Show group/member price status before checkout.

Task 5: Verification

Commands:

  • python -m pytest tests\test_telegram_group_pricing.py tests\test_direct_payment.py tests\test_payments_runtime.py -q
  • python -m py_compile src\auth\telegram_group_pricing.py src\payments\contract_checkout.py web\core.py web\services\auth_api.py
  • python -m ruff check src\auth\telegram_group_pricing.py src\payments\contract_checkout.py web\core.py web\services\auth_api.py tests\test_telegram_group_pricing.py
  • cd frontend; npm run typecheck