feat: reward paid members at user growth milestones
This commit is contained in:
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user