Fixed Faction population
This commit is contained in:
51
main.py
51
main.py
@@ -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())
|
||||
|
||||
Reference in New Issue
Block a user