diff --git a/main.py b/main.py index f45bafb..8f4ea83 100644 --- a/main.py +++ b/main.py @@ -40,7 +40,7 @@ from src.bot.core.utils import print_logo # API Routes für Dashboard -from src.api.dashboard.routes import set_bot_instance, router as dashboard_router +from src.api.dashboard.routes import set_bot_instance, dashboard_main_router from mx_handler import TranslationHandler colorama_init(autoreset=True) @@ -77,7 +77,7 @@ ) # Dashboard-Routes einbinden -app.include_router(dashboard_router) +app.include_router(dashboard_main_router) async def start_webserver(): """Startet den FastAPI Webserver auf Port 8040""" diff --git a/requirements/req.txt b/requirements/req.txt index 831314b..766cc5a 100644 --- a/requirements/req.txt +++ b/requirements/req.txt @@ -1,5 +1,5 @@ # --- Deine Online Packages (ManagerX Ecosystem) --- -ManagerX-DevTools==1.2026.2.26 +ManagerX-DevTools==1.2026.3.15 ManagerX-Handler==1.2026.2.9.4 # --- Core Frameworks & Discord --- @@ -9,6 +9,7 @@ better-ipc==2.0.3 fastapi==0.135.1 uvicorn==0.41.0 starlette==0.52.1 +PyJWT==2.10.1 # --- Async & Performance --- aiocache==0.12.3 @@ -26,43 +27,43 @@ websockets==16.0 # --- Data & Validation --- annotated-types==0.7.0 pydantic==2.12.5 -pydantic_core==2.42.0 -PyYAML==6.0.3 +pydantic_core==2.41.5 +PyYAML==6.0.1 typing_extensions==4.15.0 typing-inspection==0.4.2 # --- HTTP & Web --- requests==2.32.5 requests-toolbelt==1.0.0 -httpx==0.28.1 -httpcore==1.0.9 -h11==0.16.0 -urllib3==2.6.3 +httpx==0.24.1 +httpcore==0.17.3 +h11==0.14.0 +urllib3==2.1.0 yarl==1.23.0 certifi==2026.2.25 charset-normalizer==3.4.5 idna==3.11 -rfc3986==2.0.0 +rfc3986==1.5.0 # --- UI, Imaging & Logging --- beautifulsoup4==4.14.3 soupsieve==2.8.3 easy-pil==0.4.0 -pillow==12.1.1 +pillow==10.4.0 SimpleColoredLogs==1.16.1.2026 colorama==0.4.6 -rich==14.3.3 +rich==13.5.2 Pygments==2.19.2 -markdown-it-py==4.0.0 +markdown-it-py==3.0.0 mdurl==0.1.2 # --- System & Utilities --- click==8.3.1 -psutil==7.2.2 +psutil==5.9.5 python-dotenv==1.2.2 timedelta==2020.12.3 pytz==2026.1.post1 -DateTime==6.0 +datetime==5.1 six==1.17.0 cffi==2.0.0 pycparser==3.0 diff --git a/src/api/dashboard/routes.py b/src/api/dashboard/routes.py index bdfd4b0..7bd343d 100644 --- a/src/api/dashboard/routes.py +++ b/src/api/dashboard/routes.py @@ -97,13 +97,13 @@ async def get_api_key(api_key_header: str = Security(API_KEY_HEADER)): ) return api_key_header -router = APIRouter( +dashboard_main_router = APIRouter( prefix="/dashboard", tags=["dashboard"] ) # Public sub-routers (no global X-API-KEY required, they manage their own like JWT) -@router.get("/guilds/{guild_id}/channels") +@dashboard_main_router.get("/guilds/{guild_id}/channels") async def get_guild_channels(guild_id: int, user: dict = Depends(get_current_user)): """Fetches text channels for a specific guild.""" if bot_instance is None: @@ -124,7 +124,7 @@ async def get_guild_channels(guild_id: int, user: dict = Depends(get_current_use ] return {"channels": channels} -@router.get("/guilds/{guild_id}/roles") +@dashboard_main_router.get("/guilds/{guild_id}/roles") async def get_guild_roles(guild_id: int, user: dict = Depends(get_current_user)): """Fetches manageable roles for a specific guild.""" if bot_instance is None: @@ -144,7 +144,7 @@ async def get_guild_roles(guild_id: int, user: dict = Depends(get_current_user)) ] return {"roles": roles} -@router.get("/guilds/{guild_id}/categories") +@dashboard_main_router.get("/guilds/{guild_id}/categories") async def get_guild_categories(guild_id: int, user: dict = Depends(get_current_user)): """Fetches categories for a specific guild.""" if bot_instance is None: @@ -164,7 +164,7 @@ async def get_guild_categories(guild_id: int, user: dict = Depends(get_current_u ] return {"categories": categories} -@router.get("/guilds/{guild_id}/voice_channels") +@dashboard_main_router.get("/guilds/{guild_id}/voice_channels") async def get_guild_voice_channels(guild_id: int, user: dict = Depends(get_current_user)): """Fetches voice channels for a specific guild.""" if bot_instance is None: @@ -184,7 +184,7 @@ async def get_guild_voice_channels(guild_id: int, user: dict = Depends(get_curre ] return {"channels": channels} -@router.get("/guilds/{guild_id}/stats") +@dashboard_main_router.get("/guilds/{guild_id}/stats") async def get_guild_stats(guild_id: int, user: dict = Depends(get_current_user)): """Fetches server statistics (Daily joins, message count, member total).""" if bot_instance is None: @@ -285,8 +285,8 @@ def calc_trend(today, yesterday): "messages_today": 0 } -router.include_router(auth_router) -router.include_router(settings_router) -router.include_router(user_router) -router.include_router(router_public) +dashboard_main_router.include_router(auth_router) +dashboard_main_router.include_router(settings_router) +dashboard_main_router.include_router(user_router) +dashboard_main_router.include_router(router_public)