feat: add configurable timed scheduler to the Telegram bot for automated tasks.

This commit is contained in:
2026-02-10 02:38:45 +08:00
parent b9dd421714
commit 4d5fa36183
3 changed files with 760 additions and 1 deletions

View File

@@ -314,6 +314,9 @@ def reload_config() -> dict:
global S2A_API_BASE, S2A_ADMIN_KEY, S2A_ADMIN_TOKEN
global S2A_CONCURRENCY, S2A_PRIORITY, S2A_GROUP_NAMES, S2A_GROUP_IDS, S2A_API_MODE
global CONCURRENT_ENABLED, CONCURRENT_WORKERS
global SCHEDULER_ENABLED, SCHEDULER_START_HOUR, SCHEDULER_END_HOUR
global SCHEDULER_BATCH_SIZE, SCHEDULER_COOLDOWN_MINUTES, SCHEDULER_OUTPUT_TYPE
global SCHEDULER_MAX_CONSECUTIVE_FAILURES
result = {
"success": True,
@@ -389,6 +392,16 @@ def reload_config() -> dict:
S2A_GROUP_IDS = _s2a.get("group_ids", [])
S2A_API_MODE = _s2a.get("api_mode", False)
# 定时调度器配置
_scheduler = _cfg.get("scheduler", {})
SCHEDULER_ENABLED = _scheduler.get("enabled", False)
SCHEDULER_START_HOUR = _scheduler.get("start_hour", 8)
SCHEDULER_END_HOUR = _scheduler.get("end_hour", 14)
SCHEDULER_BATCH_SIZE = _scheduler.get("batch_size", 50)
SCHEDULER_COOLDOWN_MINUTES = _scheduler.get("cooldown_minutes", 5)
SCHEDULER_OUTPUT_TYPE = _scheduler.get("output_type", "team")
SCHEDULER_MAX_CONSECUTIVE_FAILURES = _scheduler.get("max_consecutive_failures", 3)
except Exception as e:
errors.append(f"config.toml: {e}")
@@ -677,6 +690,16 @@ TELEGRAM_NOTIFY_ON_ERROR = _telegram.get("notify_on_error", True)
TELEGRAM_CHECK_INTERVAL = _telegram.get("check_interval", 3600) # 默认1小时检查一次
TELEGRAM_LOW_STOCK_THRESHOLD = _telegram.get("low_stock_threshold", 10) # 低库存阈值
# 定时调度器配置
_scheduler = _cfg.get("scheduler", {})
SCHEDULER_ENABLED = _scheduler.get("enabled", False) # 是否启用定时调度
SCHEDULER_START_HOUR = _scheduler.get("start_hour", 8) # 开始时间 (小时, 0-23)
SCHEDULER_END_HOUR = _scheduler.get("end_hour", 14) # 结束时间 (小时, 0-23)
SCHEDULER_BATCH_SIZE = _scheduler.get("batch_size", 50) # 每轮注册数量
SCHEDULER_COOLDOWN_MINUTES = _scheduler.get("cooldown_minutes", 5) # 轮次间冷却 (分钟)
SCHEDULER_OUTPUT_TYPE = _scheduler.get("output_type", "team") # 输出方式: team / json
SCHEDULER_MAX_CONSECUTIVE_FAILURES = _scheduler.get("max_consecutive_failures", 3) # 连续失败N轮后暂停
# 代理
# 注意: proxy_enabled 和 proxies 可能在顶层或被误放在 browser section 下
_proxy_enabled_top = _cfg.get("proxy_enabled")