feat(*): init

This commit is contained in:
h
2026-01-20 21:38:01 +01:00
commit b9703da2fc
57 changed files with 3246 additions and 0 deletions

View File

@@ -0,0 +1,4 @@
from .env import env
from .logging import logger
__all__ = ["env", "logger"]

27
backend/src/utils/env.py Normal file
View File

@@ -0,0 +1,27 @@
from pydantic import AliasChoices, Field, SecretStr
from pydantic_settings import BaseSettings, SettingsConfigDict
class BotSettings(BaseSettings):
token: SecretStr
class LogSettings(BaseSettings):
level: str = "INFO"
level_external: str = "WARNING"
show_time: bool = False
console_width: int = 150
class Settings(BaseSettings):
bot: BotSettings
log: LogSettings
convex_url: str = Field(validation_alias=AliasChoices("CONVEX_SELF_HOSTED_URL"))
model_config = SettingsConfigDict(
case_sensitive=False, env_file=".env", env_nested_delimiter="__", extra="ignore"
)
env = Settings() # ty:ignore[missing-argument]

View File

@@ -0,0 +1,35 @@
import logging
from aiogram.dispatcher import router
from rich.console import Console
from rich.logging import RichHandler
from rich.traceback import install
from .env import env
console = Console(width=env.log.console_width, color_system="auto", force_terminal=True)
def setup_logging() -> None:
logging.basicConfig(
level=env.log.level_external,
format="",
datefmt=None,
handlers=[
RichHandler(
console=console,
markup=True,
rich_tracebacks=True,
enable_link_path=False,
tracebacks_show_locals=True,
omit_repeated_times=False,
show_time=env.log.show_time,
tracebacks_suppress=[router],
)
],
)
install(console=console, show_locals=True)
logger = logging.getLogger("telegram-casino")
logger.setLevel(env.log.level)