"""Discord bot control endpoints.""" from fastapi import APIRouter, HTTPException from typing import Optional from models import BotControl from services.server_state import STATE from services.bot_assignment import BotAssignmentManager router = APIRouter(prefix="/api", tags=["bot"]) # Global reference to assignment manager (set by main.py) assignment_manager: Optional[BotAssignmentManager] = None def set_assignment_manager(manager: BotAssignmentManager): """Set the global assignment manager reference.""" global assignment_manager assignment_manager = manager @router.get("/bot_status") async def api_bot_status(): """Get current bot status""" active_count = len(assignment_manager.active_targets) if assignment_manager else 0 return { "bot_running": STATE.bot_running, "active_assignments": active_count, "discord_mappings_count": len(assignment_manager.discord_mapping) if assignment_manager else 0 } @router.post("/bot_control") async def api_bot_control(req: BotControl): if req.action not in ("start", "stop"): raise HTTPException(status_code=400, detail="invalid action") STATE.bot_running = (req.action == "start") # Start or stop the assignment manager if assignment_manager: if req.action == "start": await assignment_manager.start() else: await assignment_manager.stop() return {"status": "ok", "bot_running": STATE.bot_running}