diff options
Diffstat (limited to 'main.py')
-rw-r--r-- | main.py | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/main.py b/main.py index 19035df..0556ffd 100644 --- a/main.py +++ b/main.py @@ -106,7 +106,7 @@ class util: if not re.fullmatch("[a-zA-Z0-9-_. ]{1,50}", client): client = "" ulist[username] = {"client": client, "status": ""} - client_data[conn_id] = {"username": username, "client": client, "websocket": websocket} + client_data[conn_id] = {"username": username, "client": client, "websocket": websocket, "connected": round(time.time())} data = db.acc.get(username) del data["secure"] return data @@ -115,15 +115,21 @@ class util: del client_data[conn_id] if username in ulist: rm_user = True + last_con_time = 0 + last_con_index = "" for i in client_data.copy(): if client_data[i]["username"] == username: rm_user = False + if client_data[i]["connected"] > last_con_time: + last_con_index = i if rm_user: del ulist[username] - broadcast(clients, json.dumps({ - "command": "ulist", - "ulist": ulist - })) + else: + ulist[username]["client"] = client_data[last_con_index]["client"] + broadcast(clients, json.dumps({ + "command": "ulist", + "ulist": ulist + })) async def forcekick(username): if username in ulist: |