diff --git a/danding_bot/plugins/group_horse_racing/config.py b/danding_bot/plugins/group_horse_racing/config.py index 78c25c8..dbd97da 100644 --- a/danding_bot/plugins/group_horse_racing/config.py +++ b/danding_bot/plugins/group_horse_racing/config.py @@ -1,5 +1,6 @@ -from pydantic import Field +from pydantic import Field, field_validator from pydantic_settings import BaseSettings, SettingsConfigDict +from typing import Union class Config(BaseSettings): @@ -35,3 +36,27 @@ class Config(BaseSettings): ) RACE_DB_FILE: str = "data/group_horse_racing/race.db" + + @field_validator("TESTERS", "TEST_GROUPS", "ALLOWED_GROUPS", mode="before") + @classmethod + def parse_id_sets(cls, v): + """Parse ID sets from various formats.""" + if isinstance(v, set): + return v + if isinstance(v, str): + # Handle JSON string format like "[1424473282]" + import json + try: + parsed = json.loads(v) + if isinstance(parsed, list): + return set(int(x) for x in parsed) + except (json.JSONDecodeError, ValueError, TypeError): + pass + # Handle comma-separated format + try: + return set(int(x.strip()) for x in v.split(",") if x.strip()) + except ValueError: + pass + if isinstance(v, (list, tuple)): + return set(int(x) for x in v) + return v if isinstance(v, set) else set() diff --git a/test_config_debug.py b/test_config_debug.py new file mode 100644 index 0000000..e05be71 --- /dev/null +++ b/test_config_debug.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python3 +import os +import sys + +# Print environment variables +print("=== Environment Variables ===") +for key in os.environ: + if "GROUP_HORSE_RACING" in key: + print(f"{key}={os.environ[key]}") + +print("\n=== Loading Config ===") +from danding_bot.plugins.group_horse_racing.config import Config + +config = Config() +print(f"TEST_MODE: {config.TEST_MODE} (type: {type(config.TEST_MODE).__name__})") +print(f"TESTERS: {config.TESTERS} (type: {type(config.TESTERS).__name__})") +print(f"TEST_GROUPS: {config.TEST_GROUPS} (type: {type(config.TEST_GROUPS).__name__})") +print(f"ALLOWED_GROUPS: {config.ALLOWED_GROUPS} (type: {type(config.ALLOWED_GROUPS).__name__})") + +print("\n=== Testing Permission Check ===") +test_user_id = 1424473282 +print(f"Test user_id: {test_user_id}") +print(f"Is in TESTERS: {test_user_id in config.TESTERS}") +print(f"TEST_MODE enabled: {config.TEST_MODE}") +print(f"Should have access: {config.TEST_MODE and test_user_id in config.TESTERS}")