diff --git a/server.py b/server.py index 439d803..37bcaa0 100644 --- a/server.py +++ b/server.py @@ -77,6 +77,10 @@ def session(connection, client): if text.split(" ")[0].upper() == "JOIN": channel = text.split(" ")[1] success = True + if channel in channels_list: + if pending in channels_list[channel]: + success=False + print(f"{pending} is already in {channel} , ignoring JOIN request.") if success: try: if channel in channels_list: @@ -85,12 +89,18 @@ def session(connection, client): channels_list[channel] = [pending] except: connection.sendall(bytes(f":{server} NOTICE * :*** Could not join {channel}\r\n","UTF-8")) - print(channels_list) - for i in channels_list[channel]: - try: - nickname_list[i].sendall(bytes(f":{pending}!~{username}@{client[0]} JOIN {channel}\r\n","UTF-8")) - except: - pass + print(channels_list) + for i in channels_list[channel]: + try: + nickname_list[i].sendall(bytes(f":{pending}!~{username}@{client[0]} JOIN {channel}\r\n","UTF-8")) + except: + pass + # Code re-used in the WHO command + if channel in channels_list: + if pending in channels_list[channel]: + users = " ".join(channels_list[channel]) + connection.sendall(bytes(f":{server} 353 {pending} = {channel} :{users}\r\n","UTF-8")) + connection.sendall(bytes(f":{server} 366 {pending} {channel} :End of /NAMES list.\r\n","UTF-8")) elif text.split(" ")[0].upper() == "PART": channel = text.split(" ")[1] for i in channels_list[channel]: