示例#1
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)
示例#2
0
def fistfunc(message: telebot.types.Message):
    u = message.text.lower()
    if u == 'бот хороший' or u == 'хороший бот':
        bot.reply_to(message,
                     f"Спасибо, {message.from_user.first_name}, я старался")

    else:
        mes = message.text.lower()
        mp = list(mes.split(' '))
        if mp[0].lower() == 'курс':
            mes = Converter.getcourse(mes[5:])
            bot.reply_to(message, f"{mes}")
        else:
            text = Converter.convert(mp)
            bot.reply_to(message, f"{text}")
示例#3
0
def get_page_symbols(page=0, max_symbols=22):
    symbols = sorted(Converter.get_symbols().items())
    number_symbols = len(symbols)
    start = page * max_symbols

    if number_symbols < start + max_symbols:
        symbols = symbols[start:]
        end = number_symbols
    else:
        symbols = symbols[start:start+max_symbols]
        end = start+max_symbols
    text = f'*Доступные валюты {start+1}-{end} из {number_symbols}:*'
    for key, value in symbols:
        symbol = ' - '.join((key, value))
        text = '\n'.join((text, symbol))

    keyboard = telebot.types.InlineKeyboardMarkup(row_width=4)
    buttons = []
    for n in range(0, (number_symbols//max_symbols)+1):
        if n == page:
            buttons.append(telebot.types.InlineKeyboardButton(text=f"<{n + 1}>", callback_data=f"current"))
        else:
            buttons.append(telebot.types.InlineKeyboardButton(text=f"{n + 1}", callback_data=f"{n}"))
    keyboard.add(*buttons)
    return [text, keyboard]
示例#4
0
def rate(message: telebot.types.Message):
    curensis = Converter.getcurrency()
    text = "Курсы валют:"
    for key in curensis:
        text = '\n'.join(
            (text, f'{key.fullName} \n{key.price} за {key.volume}'))

    bot.reply_to(message, text)
示例#5
0
def handle_convert_convert(message, base, quote):
    amount = message.text
    try:
        text = Converter.get_price(base, quote, amount)
    except APIException as e:
        bot.send_message(message.chat.id, f'Ошибка конвертации /n {e}')
    else:
        bot.send_message(message.chat.id, text)
示例#6
0
def amount_handler(message: telebot.types.Message, base, sym):
    amount = message.text.strip()
    try:
        new_price = Converter.get_price(base, sym, amount)
    except APIException as e:
        bot.send_message(message.chat.id, f"Ошибка конвертации: \n{e} ")
    else:
        text = f"Цена {amount} {base} в {sym} : {new_price}"
        bot.send_message(message.chat.id, text)
示例#7
0
def converter(message: telebot.types.Message):
    values = message.text.split()
    values = list(map(str.lower, values))
    try:
        result = Converter.get_price(values)
    except ConverterException as e:
        bot.reply_to(message, f'Ошибка пользователя \n{e}')
    except Exception as e:
        bot.reply_to(message, f'Не удалось обработать команду \n{e}')
    else:
        text = f'Цена {values[2]} {values[0]} в {values[1]} -- {result} {exchanger[values[1]]}'
        bot.reply_to(message, text)
示例#8
0
def convertion(message: telebot.types.Message):
    try:
        a = message.text.replace('/', '')
        user_input = list(map(str.lower, a.split(' ')))

        bot.send_message(message.chat.id, Converter.get_price(user_input))

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

    except Exception as e:
        bot.reply_to(message, f' не удалось обработать команду\n{e}')
示例#9
0
def values(message: telebot.types.Message):
    currencys = Converter.getcurrency()
    currency = []
    for cur in currencys:
        currency.append(cur.getfullName())
    text = "Доступные валюты:"
    for key in currency:
        text = '\n'.join((
            text,
            key,
        ))

    bot.reply_to(message, text)
示例#10
0
def convert(message):
    ask = message.text.split()
    try:
        if len(ask) != 3:
            raise ConvertionExcepyion('Вы ввели не три параметра.')
        quote, base, amount = ask
        text = Converter.convert(quote, base, amount)
    except ConvertionExcepyion as e:
        bot.reply_to(message, f'Ошибка пользователя\n{e}')
    except Exception as e:
        bot.reply_to(message, f'не удалось обработать команду\n{e}')
    else:
        bot.reply_to(message, 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 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)
示例#13
0
def convert(message: telebot.types.Message):
    try:
        values = message.text.split(' ')

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

        quote, base, amount = values
        total_base = Converter.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'Цена {quote} в {base}\n{amount} = {total_base}'
        bot.send_message(message.chat.id, text)
示例#14
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)}'
示例#15
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)
示例#16
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)
示例#17
0
def get_price(message: telebot.types.Message):
    try:
        values = message.text.split(' ')

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

        quote, base, amount = values
        total_base = Converter.get_price(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:
        text = f'Цена {amount} {quote} в {base} - {total_base}'
        bot.send_message(message.chat.id, text)
示例#18
0
def convert(message: telebot.types.Message):
    try:
        values = message.text.split(' ')

        if len(values) != 3:
            raise API_Exception(
                'Неверный формат ввода (слишком много значений)')

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

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

    except Converter as e:
        bot.reply_to(message, f'Не удалось обработать команду\n{e}')
    else:
        text = f'{amount} {quote} равен {total_base} {base}'
        bot.send_message(message.chat.id, text)
示例#19
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)
示例#20
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)
示例#21
0
def help_bot(message: telebot.types.Message):
    keyboard = telebot.types.ReplyKeyboardMarkup(True)
    keyboard.row('Помощь', 'Список валют')
    bot.send_message(message.chat.id, text=Converter.get_text_help(), reply_markup=keyboard, parse_mode='MarkDown')