Files

47 lines
1.4 KiB
Python

"""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}