Code organization and refactoring
This commit is contained in:
46
routers/bot.py
Normal file
46
routers/bot.py
Normal file
@@ -0,0 +1,46 @@
|
||||
"""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}
|
||||
Reference in New Issue
Block a user