7 Commits
Author SHA1 Message Date
admin 9400050ade feat(subscription): return to main menu after payment/renewal
- handle_successful_payment: after status, reset FSM to lobby and send main
  menu keyboard (state injected by dispatcher)
- confirm_development_payment (dev path): same — edit status then reply with
  main menu; add state param
- tests: assert second message carries main-menu markup; _StubState clear/set_state
2026-10-30 13:24:53 +02:00
admin 87f22fb249 fix(subscription): show expiry clock time (MSK) when under a day
- subscription_time_left: replace floor-div '23 ч.'/'мин.' branches with the
  concrete expiry timestamp when less than a full day remains
- add MSK_TIMEZONE (UTC+3) as display default; label time as '(МСК)'
- add shared subscription_status_text helper, use it in status menu,
  post-payment reply and dev confirmation instead of floor-rounded days
- tests: cover under-a-day clock format; fix stale to_thread mock
2026-10-30 13:04:38 +02:00
admin 26b533716a fix(subscription): grant one day for one-star plan 2026-10-29 20:00:26 +02:00
admin dc2ec6344b fix(subscription): process zero-day one-star payment 2026-10-29 13:03:55 +02:00
admin c32702c402 fix: simplify subscription payment messages 2026-10-20 21:13:51 +02:00
admin 112c3247e0 feat: add per-user analytics and stats report 2026-10-20 16:42:30 +02:00
admin 3c8917c20a feat: настоящая оплата Telegram Stars вместо имитации
- payments.py: sendInvoice (XTR, 100 звёзд) -> pre_checkout_query -> successful_payment
- /subscribe больше не активирует подписку сам — только отправляет счёт
- handle_pre_checkout подтверждает только свой payload в XTR на 100 звёзд
- таблица payments по telegram_payment_charge_id защищает от двойного начисления
- 16 новых тестов платежей, старый тест заглушки переписан; 75 тестов OK
- Dockerfile копирует payments.py, VERSION 0.1.0+25
2026-10-07 10:35:51 +02:00