async def AdvancedConvert(message):
    data = message.content
    unit = []
    unit_strings = []
    operators = []
    numerators = []
    host = data[data.find('(') + 1:data.find(')')]
    unit2 = data[data.find(':') + 1:len(data)]
    numerators.append(float(host))
    prev_close = data.find(')')
    unit_strings.append(data[data.find('.') + 1:data.find('(')])
    unit.append(
        copy.deepcopy(Base_Units.get(data[data.find('.') + 1:data.find('(')])))

    next_mul = data.find('*')
    next_div = data.find('/')
    if (next_mul != -1 and (next_div > next_mul or next_div == -1)):
        init = data.find('*')
        operators.append('*')
    elif (next_div != -1 and (next_div < next_mul or next_mul == -1)):
        init = data.find('/')
        operators.append('/')
    else:
        init = -1

    while (init > -1):
        unit_strings.append(data[(init + 1):data.find('(', prev_close)])
        unit.append(
            copy.deepcopy(
                Base_Units.get(data[(init + 1):data.find('(', prev_close)])))
        prev_close = data.find(')', prev_close + 1)
        host = data[data.find('(', init) + 1:data.find(')', init)]
        numerators.append(float(host))
        init = -1
        next_mul = data.find('*', prev_close + 1)
        next_div = data.find('/', prev_close + 1)
        if (next_mul != -1 and (next_div > next_mul or next_div == -1)):
            init = data.find('*', prev_close + 1)
            operators.append('*')
        elif (next_div != -1 and (next_div < next_mul or next_mul == -1)):
            init = data.find('/', prev_close + 1)
            operators.append('/')
    for us in unit_strings:
        if (not (us in Base_Units.keys())):
            return f'{us} is not a valid unit, to see a list of units, run $convert.show'

    new_unit = Unit.compute(numerators, operators, unit, Base_Units.get(unit2))
    #if(new_unit.startswith('Error')):
    if (isinstance(new_unit, str)):
        return new_unit
    else:
        left_string = f'{numerators[0]}{unit_strings[0]}'
        for i in range(len(operators)):
            left_string += f' {operators[i]} {numerators[i+1]}{unit_strings[i+1]} '
        return f'{left_string} = {new_unit:.3e}{unit2}'