def convert_currency(message: telebot.types.Message): message_parts = message.text.split() try: convert_from, convert_to, converted_amount = CurrencyConverter.convert_currency( message_parts) except ConversationException as error_msg: bot.send_message(message.chat.id, f'Ошибка ввода: \n{error_msg}') except Exception as error_msg: bot.send_message(message.chat.id, f'Ошибка сервера: \n{error_msg}') else: for index, element in enumerate(message_parts): if element.isdigit(): break primal_amount = int(message_parts[index]) readable_convert_from, readable_convert_to = CurrencyConverter.make_readable( convert_from, convert_to, primal_amount, converted_amount) bot_message = ( f'{primal_amount} {readable_convert_from} ({currency_dict[convert_from]}) = ' f'{floor(converted_amount)} {readable_convert_to} ({currency_dict[convert_to]})' ) bot.send_message(message.chat.id, bot_message)
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 convert(message: telebot.types.Message): try: values = message.text.split(' ') if len(values) != 3: raise ConvertionException('Неверное число параметров') currency, currency_transfer, amount = values total_base = CurrencyConverter.get_price(currency, currency_transfer, amount) except ConvertionException as e: bot.reply_to(message, f'Ошибка пользователя\n{e}') except Exception as e: bot.reply_to(message, f'Не удалось обработать команду\n{e}') else: text = f'{amount} {currency} в {currency_transfer} = {round(total_base * float(amount))}' bot.send_message(message.chat.id, text)
def convert(message: telebot.types.Message): try: values = message.text.split(' ') if len(values) != 3: raise ConversionException('Слишком много параметров.') quote, base, quantity = values total_base = CurrencyConverter.convert(quote, base, quantity) except ConversionException as e: bot.reply_to(message, f'Ошибка пользователя.\n{e}') except Exception as e: bot.reply_to(message, f'Не удалось обработать комманду.\n{e}') else: text = f'Цена {quantity} {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 = 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: telebot.types.Message): try: values = message.text.split(' ') if len(values) != 3: raise ConvertionException("Слишком много параметров.") quote, base, amount = values total_base = CurrencyConverter.convert(quote, base, amount) except ConvertionException as e: bot.reply_to(message, f"Ошибка пользователя.\n{e}") except Exception as e: bot.reply_to(message, f"Не удалось обработать команду.\n{e}") else: total = total_base * float(amount) text = f"Цена {amount} {quote} в {base} - {total}" 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: values = message.text.split(' ') if len(values) != 3: raise ConvertionException('Неправильное количество параметров') values[2] = values[2].replace( ',', ".") # Замена запятой на точку для обработки <float> base, quote, amount = values total_base = CurrencyConverter.get_price(base, quote, amount) except ConvertionException 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 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)