Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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"""
Expand Down
27 changes: 14 additions & 13 deletions requirements/req.txt
Original file line number Diff line number Diff line change
@@ -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 ---
Expand All @@ -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
Expand All @@ -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
Expand Down
20 changes: 10 additions & 10 deletions src/api/dashboard/routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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:
Expand All @@ -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:
Expand All @@ -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:
Expand All @@ -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:
Expand Down Expand Up @@ -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)

Loading