generated from FOSS/Bot-Template
style(config): reformat Settings for readability
This commit is contained in:
+40
-14
@@ -21,18 +21,34 @@ class Settings(BaseSettings):
|
|||||||
populate_by_name=True,
|
populate_by_name=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
bot_token: str = Field(default="", validation_alias=AliasChoices("BOT_TOKEN", "bot_token"))
|
bot_token: str = Field(
|
||||||
admin_ids: List[int] = Field(default_factory=list, validation_alias=AliasChoices("BOT_ADMIN_IDS", "admin_id"))
|
default="", validation_alias=AliasChoices("BOT_TOKEN", "bot_token")
|
||||||
database_export: bool = Field(default=False,
|
)
|
||||||
validation_alias=AliasChoices("BOT_DATABASE_EXPORT", "allow_database_export"))
|
admin_ids: List[int] = Field(
|
||||||
status_notification: bool = Field(default=True, validation_alias="BOT_STATUS_NOTIFICATION")
|
default_factory=list, validation_alias=AliasChoices("BOT_ADMIN_IDS", "admin_id")
|
||||||
|
)
|
||||||
|
database_export: bool = Field(
|
||||||
|
default=False,
|
||||||
|
validation_alias=AliasChoices("BOT_DATABASE_EXPORT", "allow_database_export"),
|
||||||
|
)
|
||||||
|
status_notification: bool = Field(
|
||||||
|
default=True, validation_alias="BOT_STATUS_NOTIFICATION"
|
||||||
|
)
|
||||||
timezone: str = Field(default="Europe/Moscow", validation_alias="BOT_TIMEZONE")
|
timezone: str = Field(default="Europe/Moscow", validation_alias="BOT_TIMEZONE")
|
||||||
database_path: str = Field(default="tgbot/data/database.db", validation_alias="PATH_DATABASE")
|
database_path: str = Field(
|
||||||
|
default="tgbot/data/database.db", validation_alias="PATH_DATABASE"
|
||||||
|
)
|
||||||
logs_path: str = Field(default="tgbot/data/logs.log", validation_alias="PATH_LOGS")
|
logs_path: str = Field(default="tgbot/data/logs.log", validation_alias="PATH_LOGS")
|
||||||
user_cache_ttl: int = Field(default=300, ge=0, validation_alias="BOT_USER_CACHE_TTL")
|
user_cache_ttl: int = Field(
|
||||||
throttle_rate: float = Field(default=0.5, ge=0, validation_alias="BOT_THROTTLE_RATE")
|
default=300, ge=0, validation_alias="BOT_USER_CACHE_TTL"
|
||||||
|
)
|
||||||
|
throttle_rate: float = Field(
|
||||||
|
default=0.5, ge=0, validation_alias="BOT_THROTTLE_RATE"
|
||||||
|
)
|
||||||
|
|
||||||
@field_validator("bot_token", "timezone", "database_path", "logs_path", mode="before")
|
@field_validator(
|
||||||
|
"bot_token", "timezone", "database_path", "logs_path", mode="before"
|
||||||
|
)
|
||||||
@classmethod
|
@classmethod
|
||||||
def _strip_string(cls, value: object) -> str:
|
def _strip_string(cls, value: object) -> str:
|
||||||
return str(value or "").strip()
|
return str(value or "").strip()
|
||||||
@@ -46,11 +62,15 @@ class Settings(BaseSettings):
|
|||||||
if isinstance(value, int):
|
if isinstance(value, int):
|
||||||
values = [value]
|
values = [value]
|
||||||
elif isinstance(value, str):
|
elif isinstance(value, str):
|
||||||
values = [admin_id for admin_id in value.replace(" ", "").split(",") if admin_id]
|
values = [
|
||||||
|
admin_id for admin_id in value.replace(" ", "").split(",") if admin_id
|
||||||
|
]
|
||||||
elif isinstance(value, (list, tuple, set)):
|
elif isinstance(value, (list, tuple, set)):
|
||||||
values = list(value)
|
values = list(value)
|
||||||
else:
|
else:
|
||||||
raise ValueError("BOT_ADMIN_IDS должен быть числом или списком чисел через запятую")
|
raise ValueError(
|
||||||
|
"BOT_ADMIN_IDS должен быть числом или списком чисел через запятую"
|
||||||
|
)
|
||||||
|
|
||||||
admin_ids = []
|
admin_ids = []
|
||||||
|
|
||||||
@@ -58,10 +78,14 @@ class Settings(BaseSettings):
|
|||||||
try:
|
try:
|
||||||
parsed_id = int(admin_id)
|
parsed_id = int(admin_id)
|
||||||
except (TypeError, ValueError) as error:
|
except (TypeError, ValueError) as error:
|
||||||
raise ValueError("BOT_ADMIN_IDS должен содержать только Telegram ID через запятую") from error
|
raise ValueError(
|
||||||
|
"BOT_ADMIN_IDS должен содержать только Telegram ID через запятую"
|
||||||
|
) from error
|
||||||
|
|
||||||
if parsed_id <= 0:
|
if parsed_id <= 0:
|
||||||
raise ValueError("BOT_ADMIN_IDS должен содержать Telegram ID больше нуля")
|
raise ValueError(
|
||||||
|
"BOT_ADMIN_IDS должен содержать Telegram ID больше нуля"
|
||||||
|
)
|
||||||
|
|
||||||
admin_ids.append(parsed_id)
|
admin_ids.append(parsed_id)
|
||||||
|
|
||||||
@@ -73,7 +97,9 @@ class Settings(BaseSettings):
|
|||||||
try:
|
try:
|
||||||
timezone(value)
|
timezone(value)
|
||||||
except UnknownTimeZoneError as error:
|
except UnknownTimeZoneError as error:
|
||||||
raise ValueError("BOT_TIMEZONE должен быть корректной временной зоной, например Europe/Moscow") from error
|
raise ValueError(
|
||||||
|
"BOT_TIMEZONE должен быть корректной временной зоной, например Europe/Moscow"
|
||||||
|
) from error
|
||||||
|
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user