feat(bot): use runtime api for bot data
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
from pydantic import field_validator
|
||||
from pydantic_settings import BaseSettings, SettingsConfigDict
|
||||
from pathlib import Path
|
||||
import os
|
||||
|
||||
|
||||
@@ -11,22 +10,24 @@ class Config(BaseSettings):
|
||||
extra="ignore",
|
||||
)
|
||||
|
||||
# 数据库配置
|
||||
POINTS_DB_FILE: str = os.getenv("DANDING_POINTS_DB_FILE", "data/danding_points/points.db")
|
||||
POINTS_MAX_BALANCE: int = int(os.getenv("DANDING_POINTS_MAX_BALANCE", "0"))
|
||||
POINTS_MAX_PER_OPERATION: int = int(os.getenv("DANDING_POINTS_MAX_PER_OPERATION", "0"))
|
||||
POINTS_LOG_RETENTION_DAYS: int = int(os.getenv("DANDING_POINTS_LOG_RETENTION_DAYS", "365"))
|
||||
# xapi /bot/points 运行时 API 配置
|
||||
POINTS_API_HOST: str = os.getenv("DANDING_POINTS_API_HOST", "https://api.danding.vip/bot/points")
|
||||
BOT_USER: str = os.getenv("DANDING_BOT_USER", "1424473282")
|
||||
BOT_TOKEN: str = os.getenv(
|
||||
"DANDING_BOT_TOKEN",
|
||||
os.getenv("DANDING_API_TOKEN", os.getenv("BOT_TOKEN", "")),
|
||||
)
|
||||
|
||||
@field_validator("POINTS_MAX_BALANCE", "POINTS_MAX_PER_OPERATION", "POINTS_LOG_RETENTION_DAYS")
|
||||
@field_validator("POINTS_API_HOST")
|
||||
@classmethod
|
||||
def validate_non_negative(cls, v):
|
||||
if v < 0:
|
||||
raise ValueError("Value must be non-negative")
|
||||
return v
|
||||
def validate_api_host(cls, value):
|
||||
if not value:
|
||||
raise ValueError("POINTS_API_HOST cannot be empty")
|
||||
return value.rstrip("/")
|
||||
|
||||
@field_validator("POINTS_DB_FILE")
|
||||
@field_validator("BOT_USER")
|
||||
@classmethod
|
||||
def validate_db_path(cls, v):
|
||||
if not v:
|
||||
raise ValueError("Database file path cannot be empty")
|
||||
return v
|
||||
def validate_bot_user(cls, value):
|
||||
if not value:
|
||||
raise ValueError("BOT_USER cannot be empty")
|
||||
return value
|
||||
|
||||
Reference in New Issue
Block a user