import telebot
from configuration import keys, TOKEN
from extensions import ConversionException, CurrencyConverter

bot = telebot.TeleBot(TOKEN)


@bot.message_handler(commands=['start', 'help'])
def help(message: telebot.types.Message):
    text = 'Чтобы начать работу введите комманду боту в следующем формате:' \
           '\n <имя валюты цену которой хотите узнать>' \
           '<имя валюты в которую хотите перевести>' \
           '<количество переводимой валюты>\n Чтобы увидеть список всех ' \
           'доступных валют: /values'
    bot.reply_to(message, text)


@bot.message_handler(commands=['values'])
def values(message: telebot.types.Message):
    text = 'Доступные валюты:'
    for key in keys.keys():
        text = '\n'.join((text, key,))
    bot.reply_to(message, text)


@bot.message_handler(content_types=['text', ])
def convert(message: telebot.types.Message):
    values = message.text.split(' ')
    try:
        if len(values) != 3:
            raise ConversionException('Слишком много параметров.')


        quote, base, amount = values

        total_base = CurrencyConverter.get_price(quote, base, amount)
    except ConversionException as e:
        bot.reply_to(message, f'Ошибка пользователя,\n{e}')
    except Exception as e:
        bot.reply_to(message, f'Не удалось обработать команду\n{e}')

    else:
        if base == 'рубль':
            text = f'Цена {amount} {quote} в рублях - {total_base} ₽'
            bot.send_message(message.chat.id, text)

        if base == 'доллар':
            text = f'Цена {amount} {quote} в долларах - {total_base} $'
            bot.send_message(message.chat.id, text)

        if base == 'евро':
            text = f'Цена {amount} {quote} в {base} - {total_base} €'
            bot.send_message(message.chat.id, text)


bot.polling(none_stop=True)


