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))
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)
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)}'
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)