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