Пример #1
0
def convert(message):
    mgs_base = message.text.split(' ')[0]
    mgs_quote = message.text.split(' ')[1]
    try:
        mgs_amount = float(message.text.split(' ')[2])
    except ValueError:
        bot.send_message(message.chat.id, 'Количество введено некорректно')
        raise APIException(f'Количество введено некорректно')
        return

    if mgs_base not in cur_list.keys():
        bot.send_message(
            message.chat.id,
            'Базовая валюта не входит в список доступных элементов')
        raise APIException(
            f'Базовая валюта не входит в список доступных элементов')
        return

    if mgs_quote not in cur_list.keys():
        bot.send_message(
            message.chat.id,
            'Проверяемая валюта не входит в список доступных элементов')
        raise APIException(
            f'Проверяемая валюта не входит в список доступных элементов')
        return

    bot.reply_to(
        message,
        ExRatesAPI.get_price(cur_list[mgs_base], cur_list[mgs_quote],
                             mgs_amount))
Пример #2
0
def convert(message: telebot.types.Message):
    if message.text.lower() == 'помощь':
        bot.send_message(message.chat.id, text=Converter.get_text_help(), parse_mode='MarkDown')
    elif message.text.lower() == 'список валют':
        try:
            text, keyboard = get_page_symbols(page=0)
        except Exception as e:
            bot.reply_to(message, f'Ошибка на сервере!\n{e} Попробуй повторить попытку позже.')
        else:
            bot.send_message(message.chat.id, text=text, reply_markup=keyboard, parse_mode='MarkDown')
    else:
        try:
            arguments = message.text.split(' ')
            arguments = [item for item in arguments if item]
            if len(arguments) != 3:
                raise APIException('Введи две валюты через пробел и количество. Подробнее -> /help')
            quote, base, amount = arguments
            quote = quote.lower()
            base = base.lower()
            price, quote, base = Converter.get_price(quote, base, amount)
        except APIException as e:
            username = ''
            if message.from_user.first_name:
                username += f'{message.from_user.first_name}'
            if message.from_user.last_name:
                username += f' {message.from_user.last_name}'
            bot.reply_to(message, f'{username if username else "Человек"}, повнимательнее!\n{e}')
        except Exception as e:
            bot.reply_to(message, f'Ошибка на сервере!\n{e} Попробуйте повторить попытку позже.')
        else:
            text = f'{amount} {quote} = {price} {base}'
            bot.send_message(message.chat.id, text)
Пример #3
0
def convert(text):
    try:
        textlist = text.split()
        if len(textlist) > 3:
            raise APIException('Слишком много параметров!')
            return 'Ошибка в запросе! Формат ввода неверный!'
        if len(textlist) < 3:
            raise APIException('Слишком мало параметров!')

        result, base, quote, amount = Converter.get_price(
            textlist[0], textlist[1], textlist[2])
    except APIException as err:
        return f'Ошибка пользователя.\n{err}'
    except Exception as err:
        return f"Ошибка сервера! Бот не сможет обработать команду. Произошла ошибка:\n{err}"

    return f'Цена {round(amount, 2)} {base} в {quote} - {round(result, 2)}'
Пример #4
0
def get_price(message):
    try:
        values = message.text.split(' ')

        if len(values) > 3:
            raise APIException('Слишком много параметров')
        if len(values) < 3:
            raise APIException('Недостаточно данных')

        base, quote, amount = values
        total_base = Converter.get_price(base, quote, amount)
    except APIException as e:
        bot.reply_to(message, f'Ошибка пользователя \n{e}')
    except Exception as e:
        bot.reply_to(message, f'Не удалось обработать команду \n{e}')
    else:
        text = f'Цена {amount} {base} в {quote}: {total_base}'
        bot.send_message(message.chat.id, text)
Пример #5
0
def convert(message: telebot.types.Message):
    try:
        values = message.text.split(' ')

        if len(values) > 3:
           raise APIException('Слишком много параметров')
        if len(values) < 3:
            raise APIException('Недостаточно параметров')

        quote, base, amount = values
        total_base = Conversion.get_price(quote, base, amount)

    except APIException as e:
        bot.reply_to(message, f'Ошибка пользователя.\n {e}')
    except Exception as e:
        bot.reply_to(message, f'Не удалось обработать команду\n {e}' )
    else:
        text = f'цена {amount} {quote} в {base} - {total_base}'
        bot.send_message(message.chat.id, text)
Пример #6
0
def convert(message: telebot.types.Message):
    try:
        input_ = message.text.split()
        if len(input_) != 3:
            raise APIException("Неверное количество данных.")
        quote, base, amount = input_
        val = CurrencyConverter.convert(quote, base, amount)
    except APIException as e:
        bot.reply_to(message, f"Ошибка пользователя\n{e}")
    except Exception as e:
        bot.reply_to(message, f"Не удалось обработать команду\n{e}")
    else:
        text = f'{amount} {base}  - это {val} {quote}'
        bot.send_message(message.chat.id, text)
Пример #7
0
def converter(message):
    input_info = message.text.split(' ')
    try:
        if len(input_info) != 3:
            raise APIException('Введено некорректное значение')
        first_currency, second_currency, amount = input_info
        return_amount = exchanger.exchange_money(first_currency, second_currency, amount)
    except APIException as e:
        bot.reply_to(message, f'Ошибка при вводе: {e}')
    except Exception as e:
        bot.reply_to(message, f'Не удалось обработать команду {e}')
    else:
        reply = f'За {amount} {first_currency} вы получите {return_amount} {second_currency}'
        bot.send_message(message.chat.id, reply)
Пример #8
0
def converter(message: telebot.types.Message):
    values = message.text.split(' ')
    try:
        if len(values) != 3:
            raise APIException('Неверное количество параметров!')

        answer = Convertor.get_price(*values)
    except APIException as e:
        bot.reply_to(message, f"Ошибка в команде:\n{e}")
    except Exception as e:
        traceback.print_tb(e.__traceback__)
        bot.reply_to(message, f"Неизвестная ошибка:\n{e}")
    else:
        bot.reply_to(message, answer)
Пример #9
0
def convert(message: telebot.types.Message):
    try:
        values = message.text.split(' ')
        if len(values) != 3:
            raise APIException('Неверное количество параметров')

        base, quote, amount = values
        total_base = CurrencyConvertor.get_price(base, quote, amount)
    except APIException as e:
        bot.reply_to(message, f'Ошибка пользователя.\n{e}')
    except Exception as e:
        bot.reply_to(message, f'Невозможно обработать команду.\n{e}')
    else:
        text = f'{amount} {base} = {total_base} {quote}'
        bot.send_message(message.chat.id, text)
Пример #10
0
def convert(message: telebot.types.Message):
    try:
        values = message.text.split(' ')
        if len(values) != 3:
            raise APIException('Слишком много параметров.')

        quote, base, amount = values
        total_base = CurrencyConverter.get_price(quote, base, amount)
    except APIException as e:
        bot.reply_to(message, f'Ошибка пользователя. {e}')


    else:
        text = f'Цена {amount} {quote} в {base} - {total_base}'
        bot.send_message(message.chat.id, text)
Пример #11
0
def convert(message):
    try:
        value = message.text.split(" ")
        if len(value) != 3:
            raise APIException("Количество данных неверно")

        quote, base, amount = value
        total = Converter.get_price(quote, base, amount)
    except APIException as e:
        bot.reply_to(message, f"Ошибка пользователя\n{e}")
    except Exception as e:
        bot.reply_to(message, f'Не удалось обработать команду\n{e}')
    else:
        text = f"Цена {amount} {base} в {quote} равна {total} "
        bot.send_message(message.chat.id, text)
Пример #12
0
def convert_currency(message: telebot.types.Message):
    try:
        words_from_user_message = message.text.split(' ')
        if len(words_from_user_message) != 3:
            raise APIException('Введено неверное количество параметров',
                               help_message())
        quote, base, amount = words_from_user_message
        total_quote = ExchangeRateRequest.get_price(quote, base, amount)
    except APIException as e:
        bot.reply_to(message, f'Случилась предвиденная ошибка.\n{e}')
    except Exception as e:
        bot.reply_to(message, f'Случилась непредвиденная ошибка.\n{e}')
    else:
        result_text = f'Цена {amount} {base} в {quote} = {round(total_quote, 2)}'
        bot.send_message(message.chat.id, result_text)
def convert(message: telebot.types.Message):
    try:
        val_param = message.text.split(' ')

        if len(val_param) != 3:
            raise APIException('Слишком много или мало параметров \n /help')

        quote, base, amount = val_param
        total_base = ConverterBot.get_price(quote, base, amount)
    except APIException as e:
        bot.reply_to(message, f'Ошибка пользователя.\n{e}')
    except Exception as e:
        bot.reply_to(message, f'Не удалось обработать команду\n{e}')
    else:
        text = f'Цена {amount} {quote} в {base} - {total_base}'
        bot.send_message(message.chat.id, text)
Пример #14
0
def convert(message: telebot.types.Message):
    try:
        values = message.text.split(' ')

        if len(values) != 3:
            raise APIException('Введите 3 параметра запроса или команду!')

        quote, base, amount = values
        total_base = CryptoConverter.get_price(quote, base, amount)
    except APIException as e:
        bot.reply_to(message, f'Ошибка пользователя.\n{e}')
    except Exception as e:
        bot.reply_to(message, f'Не удалось обработать команду\n{e}')
    else:
        text = f'Цена {amount} {quote} в {base} \n >>> {round(total_base, 3)}'
        bot.send_message(message.chat.id, text)
Пример #15
0
def converter(message: telebot.types.Message):
    try:
        values = message.text.split(' ')
        values = list(map(str.lower, values))

        if len(values) != 3:
            raise APIException('Не правильное количество параметров.')
        quote, base, amount = values
        total_base = Converter.get_price(quote, base, amount)
    except APIException as e:
        bot.reply_to(message, f'Ошибка пользователя\n{e}')
    except Exception as e:
        bot.reply_to(message, f'Не удалось обработать команду\n{e}')
    else:
        text = f'Цена {amount} {quote} в {base} - {total_base}'
        bot.send_message(message.chat.id, text)
Пример #16
0
def convert(message: telebot.types.Message):
    try:
        values = message.text.split(' ')

        if len(values) != 3:
            raise APIException('Не верное количество параметров')

        amount, quote, base = values
        total_base = get_price.convert(amount, quote, base)
    except APIException as e:
        bot.reply_to(message, f'Ошибка пользователя. \n{e}')
    except Exception as e:
        bot.reply_to(message, f'Не удалось обработать команду\n{e}')
    else:
        text = f'Цена {amount} {quote} в {base} - {total_base}'
        bot.send_message(message.chat.id, text)
Пример #17
0
def convert(message: telebot.types.Message):
    try:
        values = message.text.split(' ')

        if len(values) !=3:
            raise APIException ('Кол-во параметров не соответствует трем.')

        quote, base, amount = values
        total_base=get_price.get(quote, base, amount)
    except APIException as e:
        bot.reply_to(message,f'Ошибка пользователя.\n{e}')
    except Exception as e:
        bot.reply_to(message, f'Не удалось обработать команду\n{e}')
    else:
        text = f'Цена {amount} {quote} в {total_base}'
        bot.send_message(message.chat.id, text)
Пример #18
0
def convert(message):
    try:
        values = message.text.lower().split(
        )  #Приводим к нижниму регистру и сплитаем по пробелу
        if len(values) != 3:
            raise APIException('Неверное количество параметров.')
        quote, base, amount = values

        total_base = Cryptoconverter.convert(quote, base, amount, keys)

    except APIException as e:
        bot.reply_to(message, f'Ошибка пользователя.\n{e}')
    except Exception as e:
        bot.reply_to(message, f'Не удалось обработать команду\n{e}')
    else:
        text = f'Цена {amount} {quote} в {base} - {total_base}'
        bot.reply_to(message, text)
Пример #19
0
def convert(message: telebot.types.Message):
    try:
        values = message.text.split(' ')

        if len(values) != 3:
            raise APIException('Слишком много параметров.')

        base, quote, amount = values

        result = ValueConverter.get_price(base, quote, amount)
    except APIException as e:
        bot.reply_to(message, f'Ошибка пользователя.\n{e}')
    except Exception as e:
        bot.reply_to(message, f'Не удалось обработать команду\n{e}')
    else:
        text = f'{amount}{keys[quote]} = {result}{keys[base]}'
        bot.send_message(message.chat.id, text)
Пример #20
0
def get_price(message: telebot.types.Message):
    try:
        parameters = message.text.split(' ')

        if len(parameters) != 3:
            raise APIException('Количество параметров не соответствует необходимому. Необходимо ввести 3 параметра.')

        base, quote, amount = parameters
        total_base = CryptoConverter.get_price(base, quote, amount)

    except APIException as e:
        bot.reply_to(message, f'Ошибка ввода пользователя. \n{e}')
    except Exception as e:
        bot.reply_to(message, f'Не удалось обработать команду. \n{e}')
    else:
        text = f'Цена {amount} {base} в {quote}: {total_base}'
        bot.send_message(message.chat.id, text)
Пример #21
0
def convert(message: Message):
    """ Обработчик запроса о переводе. """
    try:
        values = message.text.lower().split(' ')
        if len(values) != 3:
            raise APIException('Неверное количество аргументов!')
        base, quote, amount = values
        converted_value = Converter.get_price(base, quote, amount)
    except APIException as error_message:
        bot.reply_to(message, f'Ошибка пользователя:\n{error_message}')
    except Exception as error_message:
        bot.reply_to(message.chat.id,
                     f'Не удалось обработать команду:\n{error_message}')
    else:
        text = (f'{amount} {VALUES[base]} ({base}) ≈ ' +
                f'{converted_value:.2f} {VALUES[quote]} ({quote})')
        bot.send_message(message.chat.id, text)
Пример #22
0
def convert(message: telebot.types.Message):
    try:
        values = message.text.split(' ')

        if len(values) != 3:
            raise APIException('Неправильное количество параметров')

        quote, base, amount = values
        total_base = CurrencyConverter.get_price(base, quote, amount)

    except APIException as e:
        bot.reply_to(message, f'Ошибка пользователя: \n{e}')
    except Exception as e:
        bot.reply_to(message, f'Не удалось выполнить операцию \n{e}')
    else:
        text = f'Цена {amount} {base} в {quote} - {round((total_base * float(amount)), 5)}'
        bot.send_message(message.chat.id, text)
Пример #23
0
def convert(message: telebot.types.Message):
    try:
        params = message.text.split(' ')

        if len(params) != 3:
            raise APIException("Слишком много параметров")

        base, quote, amount = params

        total_result = CryptoConverter.get_price(base, quote, amount)
    except APIException as e:
        bot.send_message(message.chat.id, f"Ошибка пользователя\n{e}")
    except Exception as e:
        bot.send_message(message.chat.id,
                         f"Не удалось обработать команду\n{e}")
    else:
        text = f"{amount} {base} = {total_result} {quote}"
        bot.send_message(message.chat.id, text)
Пример #24
0
def convert(message: telebot.types.Message):
    try:
        user_message = message.text.split(" ")
        if len(user_message) != 3:
            raise APIException("Передано неверное количество параметров")
        cur, base, amount = user_message
        total = float(Converter.convert(cur, base, amount))
    except APIException as e:
        bot.send_message(message.chat.id,
                         f"Ошибка ввода\n{e}",
                         reply_markup=reply_markup)
    except Exception as e:
        bot.send_message(message.chat.id,
                         f"Не удалось обработать команду\n{e}",
                         reply_markup=reply_markup)
    else:

        text = f"Чтобы купить {amount} {cur.lower()} нужно {(total * float(amount)):.2f} {base.lower()}"
        bot.send_message(message.chat.id, text, reply_markup=reply_markup)
Пример #25
0
def convert1(message: telebot.types.Message):
    try:
        values = message.text.split(' ')

        if len(values) != 3:
            raise APIException('Не верное количество параметров')

        base, quote, amount = values
        total_base = CryptoConverter.get_price(base, quote, amount)

    except APIException as e:
        bot.reply_to(message, f'Ошибка пользователя \n{e}')

    except Exception as e:
        bot.reply_to(message, f'Не удалось обработать команду \n{e}')

    else:
        text = f'Стоимость {amount} {base} равна {total_base} {quote}'
        bot.send_message(message.chat.id, text)
Пример #26
0
def convert(message: telebot.types.Message):
    try:
        parameters = message.text.split(' ')

        if len(parameters) != 3:
            raise APIException("Команда введена неправильно.")

        base, quote, amount = parameters
        result = Converter.get_price(base, quote, amount)

    except APIException as e:
        bot.send_message(message.chat.id,
                         f"Ошибка на стороне пользователя.\n{e}")

    except Exception as e:
        bot.send_message(message.chat.id,
                         f"Не удалось обработать команду.\n{e}")

    else:
        text = f"Цена {fabs(float(amount))} {base} в {quote} — {fabs(result)}"
        bot.reply_to(message, text)
Пример #27
0
def convert(message: telebot.types.Message):
    #Для обработки исключений всю обработку обернем в try
    try:
        list_of_values = message.text.split(' ')

        if len(list_of_values) != 3:
            raise APIException('Не верное количество параметров.')

        base, quote, amount = list_of_values
        #Вызовем собственно саму обработку конвертации
        total_amount = CurrencyConverter.get_price(base, quote, amount)
    except APIException as e:
        bot.reply_to(message, f'Ошибка пользователя.\n{e}')
    except Exception as e:
        bot.reply_to(
            message,
            f'Упс.. Что-то пошло не так. Не удалось обработать команду\n{e}')
    else:
        #Если код в попытке (try) выполнился успешно - выведем пользователю полученную сумму
        text = f'Сумма после конвертации: {round(total_amount, 2)} {keys[quote]}'
        bot.reply_to(message, text)