From f2dd714571134004fc84ab3fccea489b52cbb208 Mon Sep 17 00:00:00 2001 From: Logan Cusano Date: Sun, 29 Jun 2025 19:08:57 -0400 Subject: [PATCH] Implement fixed node for token --- app/internal/types.py | 7 ++++++- app/routers/bot.py | 12 ++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/app/internal/types.py b/app/internal/types.py index 3312e0d..8a9beeb 100644 --- a/app/internal/types.py +++ b/app/internal/types.py @@ -38,7 +38,8 @@ class DiscordId: name: str, token: str, active: bool, - guild_ids: List[str]): + guild_ids: List[str], + fixed_node: Optional[str]=None): """ Initializes a DiscordId object. @@ -49,6 +50,7 @@ class DiscordId: token: The authentication token. active: Boolean indicating if the ID is active. guild_ids: A list of guild IDs the Discord user is part of. + fixed_node: The node ID this DiscordId must use. """ self._id: str = str(_id) self.discord_id: str = discord_id @@ -56,6 +58,7 @@ class DiscordId: self.token: str = token self.active: bool = active self.guild_ids: List[str] = guild_ids + self.fixed_node: Optional[str] = fixed_node def __repr__(self) -> str: """ @@ -75,6 +78,7 @@ class DiscordId: "token": self.token, "active": self.active, "guild_ids": self.guild_ids, + "fixed_node": self.fixed_node, } @classmethod @@ -89,6 +93,7 @@ class DiscordId: token=data.get("token", ""), active=data.get("active", False), # Default to False if not present guild_ids=data.get("guild_ids", []), # Default to empty list if not present + fixed_node=data.get("fixed_node", None), # Default to empty if not present ) diff --git a/app/routers/bot.py b/app/routers/bot.py index 9b330e9..d96dc42 100644 --- a/app/routers/bot.py +++ b/app/routers/bot.py @@ -42,15 +42,19 @@ async def request_token_route(): if not avail_ids: abort(404, "No available active Discord IDs found.") - # --- Logic for selecting a preferred ID based on client_id (TODO) --- + selected_id = None + # Check for any fixed IDs + for avail_id in avail_ids: + if avail_id.fixed_node and avail_id.fixed_node == client_id: + selected_id = avail_id + + if not selected_id: + selected_id = avail_ids[0] - selected_id = avail_ids[0] print("Selected Discord ID: ", selected_id) current_app.active_clients[client_id].active_token = selected_id print(current_app.active_clients[client_id]) - # --- End of logic for selecting a preferred ID --- - return jsonify(selected_id.to_dict()) except Exception as e: