Fixed Faction population

This commit is contained in:
2026-01-25 18:11:59 -05:00
parent 8779ad3d3b
commit 1f0b974f6c
6 changed files with 102 additions and 58 deletions

51
main.py
View File

@@ -86,15 +86,16 @@ async def sync_state_from_file(path: Path, kind: str):
@app.post("/api/populate_friendly")
async def api_populate_friendly(data: FactionRequest):
await populate_friendly(data.faction_id)
# sync STATE from file
await sync_state_from_file(Path("data/friendly_members.json"), "friendly")
return {"status": "friendly populated", "id": data.faction_id}
# Return members list for frontend (already in STATE from populate_friendly)
members = [m.model_dump() for m in STATE.friendly.values()]
return {"status": "friendly populated", "id": data.faction_id, "members": members}
@app.post("/api/populate_enemy")
async def api_populate_enemy(data: FactionRequest):
await populate_enemy(data.faction_id)
await sync_state_from_file(Path("data/enemy_memberes.json"), "enemy")
return {"status": "enemy populated", "id": data.faction_id}
# Return members list for frontend (already in STATE from populate_enemy)
members = [m.model_dump() for m in STATE.enemy.values()]
return {"status": "enemy populated", "id": data.faction_id, "members": members}
# -----------------------------
# Start status refresh loops
@@ -214,25 +215,9 @@ async def api_bot_control(req: BotControl):
@app.post("/api/reset_groups")
async def reset_groups():
# Load existing data
data = load_json("assigned_groups.json")
# Clear group assignments
for g in data["groups"].values():
g.clear()
# Reset friendly assigned_group
for f in data["friendly_members"]:
f["assigned_group"] = None
# Reset enemy assigned_group
for e in data["enemy_members"]:
e["assigned_group"] = None
# Save back to file
save_json("assigned_groups.json", data)
return { "success": True }
# Clear all assignments in server state
await STATE.clear_all_assignments()
return {"success": True}
# ============================================================
@@ -245,7 +230,7 @@ enrolled_attackers = []
enemy_queue = []
active_assignments = {}
round_robin_index = 0
class HitDispatchBot(commands.Bot):
async def setup_hook(self):
await self.add_cog(
@@ -284,11 +269,15 @@ async def start_bot():
# ============================================================
# Main Entry Point
# ============================================================
if __name__ == "__main__":
loop = asyncio.get_event_loop()
async def main():
# Start Discord bot in background
loop.create_task(start_bot())
bot_task = asyncio.create_task(start_bot())
# Run FastAPI app — keeps loop alive
uvicorn.run(app, host="127.0.0.1", port=8000)
# Configure and run FastAPI server
config = uvicorn.Config(app, host="127.0.0.1", port=8000, log_level="info")
server = uvicorn.Server(config)
await server.serve()
if __name__ == "__main__":
asyncio.run(main())