feat: reward paid members at user growth milestones

This commit is contained in:
2569718930@qq.com
2026-06-12 23:52:56 +08:00
parent 33fbf17c18
commit cf35e55da4
13 changed files with 1021 additions and 1 deletions
+34
View File
@@ -84,6 +84,7 @@ class StartupCoordinator:
def start_all(self) -> RuntimeStatus:
loops = [
self._start_airport_high_freq_loop(),
self._start_growth_milestone_reward_loop(),
self._start_weekly_reward_loop(),
self._start_payment_event_loop(),
self._start_payment_confirm_loop(),
@@ -227,6 +228,39 @@ class StartupCoordinator:
).start_weekly_reward_loop(self.bot),
)
def _start_growth_milestone_reward_loop(self) -> LoopStatus:
enabled = _env_bool("POLYWEATHER_GROWTH_REWARD_ENABLED", False)
chat_ids = get_telegram_chat_ids_from_env()
interval_sec = max(
300, _env_int("POLYWEATHER_GROWTH_REWARD_CHECK_INTERVAL_SEC", 21600)
)
announce = _env_bool("POLYWEATHER_GROWTH_REWARD_ANNOUNCE_ENABLED", True)
details = {
"metric": "verified_supabase_auth_users",
"check_interval_sec": interval_sec,
"announce": announce,
"chat_targets": len(chat_ids),
"next_milestones": "600:+1d,750:+2d,1000+ every 100:+3d",
}
validation_error = None
if enabled and (
not str(os.getenv("SUPABASE_URL") or "").strip()
or not str(os.getenv("SUPABASE_SERVICE_ROLE_KEY") or "").strip()
):
validation_error = "missing_supabase_service_credentials"
elif enabled and announce and not chat_ids:
validation_error = "missing_TELEGRAM_CHAT_IDS"
return self._start_with_validation(
key="growth_milestone_reward",
label="用户增长里程碑奖励",
configured_enabled=enabled,
details=details,
validation_error=validation_error,
starter=lambda: import_module(
"src.bot.growth_milestone_reward_loop"
).start_growth_milestone_reward_loop(self.bot),
)
def _start_payment_confirm_loop(self) -> LoopStatus:
enabled = _env_bool("POLYWEATHER_PAYMENT_CONFIRM_LOOP_ENABLED", True)
interval_sec = max(