Пример #1
0
def do_central_bank(message):
    """
    Функция поиска курса заданной валюты и даты в Центробанке
    :param message: сообщение пользователя
    :return: курс валюты на заданное число
    """
    chat_id = message.chat.id
    Logs.log_message(message)
    try:
        text = str(message.text).lower()
        result = re.findall(r'доллар|евр|фунт|иен|', text)
        result += re.findall(r'\d*-\d*-\d*', text)
        result = list(filter(lambda a: a != '', result))

        if len(result) == 2:
            date_format = "%d-%m-%Y"
            date = datetime.strptime(result[1], date_format)

            text = f'Вот данные из центробанка\n{date.strftime(date_format)}\n'
            bank = CentralBank(date)

            if result[0] == 'доллар':
                rate = bank.get_rates_usd()
                text += f'{rate.name} = {rate.rate} руб.'
                Logs.log_message(bot.send_message(chat_id=chat_id, text=text))

            if result[0] == 'евр':
                rate = bank.get_rates_eur()
                text += f'{rate.name} = {rate.rate} руб.'
                Logs.log_message(bot.send_message(chat_id=chat_id, text=text))

            if result[0] == 'фунт':
                rate = bank.get_rates_gbp()
                text += f'{rate.name} = {rate.rate} руб.'
                Logs.log_message(bot.send_message(chat_id=chat_id, text=text))

            if result[0] == 'иен':
                rate = bank.get_rates_jpy()
                text += f'{rate.name} = {rate.rate} руб.'
                Logs.log_message(bot.send_message(chat_id=chat_id, text=text))
        else:
            text = 'Прости, но ты ввел команду не правильно. Тебя никогда не примут в орден джедаев!'
            Logs.log_message(bot.send_message(chat_id=chat_id, text=text))
    except CbError:
        text = 'Данная дата выходит за пределы. "В пределы поспасть должен ты" © Йода'
        Logs.log_exception(CbError)
        Logs.log_message(bot.send_message(chat_id=chat_id, text=text))
    except ValueError:
        text = 'Ваша дата невалидна. "Головой думать должен ты" © Йода'
        Logs.log_exception(ValueError)
        Logs.log_message(bot.send_message(chat_id=chat_id, text=text))
Пример #2
0
def get_text_from_bankiRu(text):
    """
    Функция поиска курса валюты в городе
    :param text: исходный текст пользователя
    :return: строка с информацией
    """
    result = re.findall(r'доллар|евр|фунт|иен|юан', text)
    result += re.findall(
        r'благовещенск|архангельск|астрахан|белгород|брянск|владимир|волгоград|вологд|воронеж|иванов|иркутск|'
        r'калининград|калуг|петропавловс|кемерово|киров|костром|курган|курск|санкт-петербург|липецк|магадан|'
        r'москв|мурманск|нижн|велик|новосибирск|омск|оренбург|пенз|перм|псков|ростов|рязан|самар|саратов|'
        r'южн|екатеринбург|смоленск|тамбов|тул|тюмен|ульяновск|челябинск|чит|ярославл|майкоп|горно-алтайск|'
        r'уф|улан-уде|махачкал|биробиджан|нальчик|элист|черкесск|петрозавосдск|сыктывкар|симферопол|йошкар-ол|'
        r'саранск|якутск|владикавказ|казан|кызыл|ижевск|абакан|грозн|чебоксар|барнаул|краснодар|красноярск|'
        r'владивосток|ставропол|хабаровск|нарьян-мар|ханты-мансийск|анадыр|салехард',
        text)
    result = list(filter(lambda a: a != '', result))

    if len(result) == 2:
        text = ''
        city_url = ''
        for city_key, city_value in cities.items():
            if city_key.lower().find(result[1].lower()) > -1:
                city_url = city_value
                text += f'город {city_key}\n'
                break

        currency_url = ''
        for currency_key, currency_value in currencies.items():
            if currency_key.lower().find(result[0].lower()) > -1:
                currency_url = currency_value
                text += f'{currency_key}\n\n'
                break

        try:
            bankiRu = BankiRu(currency_url, city_url)
            banks = bankiRu.get_rate()

            if len(banks) >= 5:
                i = 0
                for bank_key, bank_value in banks.items():
                    if i < 5:
                        text += f'{bank_key}\nПокупка: {bank_value.rate_buy} руб\nПродажа: {bank_value.rate_sell} руб\n\n'
                        i += 1

            elif len(banks) == 0:
                text += 'К сожалению этой валюты нет в городе. Её украл Хан Соло'

            else:
                for bank_key, bank_value in banks.items():
                    text += f'{bank_key}\nПокупка: {bank_value.rate_buy} руб\nПродажа: {bank_value.rate_sell} руб\n\n'

            return text

        except BankiRuError:
            text = 'Произошла ошибка. Its a trap!'
            Logs.log_exception(BankiRu)
            return text
    else:
        text = 'Я ничего не нашел по твоему запросу. Только ситхи всё возводят в абсолют!'
        return text