def main():
    client = socket(AF_INET, SOCK_STREAM)
    try:
        addr = sys.argv[1]
    except IndexError:
        CLIENT_LOGGER.warning("Нет адреса сервера")
        addr = 'localhost'
    try:
        port = int(sys.argv[2])
    except IndexError:
        CLIENT_LOGGER.warning("Выбран стандарный порт: 7777")
        port = 7777
    except ValueError:
        CLIENT_LOGGER.error("Порт должен быть целым числом")
        client.close()
        sys.exit(0)
    CLIENT_LOGGER.debug("1. Соединение")
    client.connect((addr, port))
    message = create_presence()
    CLIENT_LOGGER.debug("2. Отправка сообщения")
    send_message(client, message)
    CLIENT_LOGGER.debug("3. Ожидание ответа")
    response = get_message(client)
    response = translate_message(response)
    print(response)
    CLIENT_LOGGER.info('Response: ' + str(response))
    client.close()
def main():
    client = socket(AF_INET, SOCK_STREAM)
    try:
        addr = sys.argv[1]
    except IndexError:
        CLIENT_LOGGER.warning("Нет адреса сервера")
        addr = 'localhost'
    try:
        port = int(sys.argv[2])
    except IndexError:
        CLIENT_LOGGER.warning("Выбран стандарный порт: 7777")
        port = 7777
    except ValueError:
        CLIENT_LOGGER.error("Порт должен быть целым числом")
        client.close()
        sys.exit(0)

    try:
        mode = sys.argv[3]
    except IndexError:
        mode = 'r'
    CLIENT_LOGGER.debug("Начало соединения")
    client.connect((addr, port))
    message = create_message()
    send_message(client, message)
    CLIENT_LOGGER.debug("Ожидание ответа")
    response = get_message(client)
    response = translate_message(response)
    print(f'Установлено соединение с сервером.')
    CLIENT_LOGGER.info('Ответ: ' + str(response))
    if response['response'] == OK:
        if mode == 'r':
            read_messages(client)
        elif mode == 'w':
            write_messages(client)
        else:
            raise Exception("Invalid mode")
    # Старый код
    # CLIENT_LOGGER.debug("1. Соединение")
    # client.connect((addr, port))
    # message = create_message()
    # CLIENT_LOGGER.debug("2. Отправка сообщения")
    # send_message(client, message)
    # CLIENT_LOGGER.debug("3. Ожидание ответа")
    # response = get_message(client)
    # response = translate_message(response)
    # print(response)
    # CLIENT_LOGGER.info('Response: ' + str(response))
    client.close()
def create_message(user_name=DEFAULT_USER_NAME):
    if not isinstance(user_name, str):
        CLIENT_LOGGER.warning("create_message Ошибка типа")
        raise TypeError
    if len(user_name) > 25:
        CLIENT_LOGGER.warning("create_message Длинное имя пользователя")
        raise UsernameToLongError(user_name)
    message = {
        ACTION: PRESENCE,
        TIME: time.time(),
        USER: {
            USER_NAME: user_name
        }
    }
    return message