def do_cb(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 = 'Центробанк\n' + f'{date.strftime(date_format)}\n' bank = CbBank(date) if result[0] == 'доллар': rate_usd = bank.get_rates_usd() Logs.log_message( bot.send_message( chat_id, text + f'{rate_usd.name}\n{rate_usd.rate} руб.')) if result[0] == 'евр': rate_eur = bank.get_rates_eur() Logs.log_message( bot.send_message( chat_id, text + f'{rate_eur.name}\n{rate_eur.rate}руб.')) if result[0] == 'фунт': rate_gbp = bank.get_rates_gbp() Logs.log_message( bot.send_message( chat_id, text + f'{rate_gbp.name}\n{rate_gbp.rate}руб.')) if result[0] == 'иен': rate_jpy = bank.get_rates_jpy() Logs.log_message( bot.send_message( chat_id, text + f'{rate_jpy.name}\n{rate_jpy.rate}руб.')) else: Logs.log_message( bot.send_message( chat_id, 'Прости, но ты ввел команду неправильно. За это Вася тебя не любит' )) except CentralBankError: Logs.log_exceptions(CentralBankError) Logs.log_message( bot.send_message( chat_id, 'По данной дате ничего не найдено, так как вы вышли за пределы. Соблюдай пределы, или встретишь Васю' )) except ValueError: Logs.log_exceptions(ValueError) Logs.log_message( bot.send_message( chat_id, 'Вы ввели невалидную дату. За такое Вася и обидеться может')) except IndexError: Logs.log_exceptions(IndexError) Logs.log_message( bot.send_message( chat_id, 'Пожалуйста введите /cb *Валюты на русском языке* *ДЕНЬ-МЕСЯЦ-ГОД*. Нужно больше крылышек из КФС.' ))
def test_get_rates_eur_rate_3(self): bank_3 = CbBank(datetime.date(2020, 5, 30)) eur = bank_3.get_rates_eur() self.assertEqual(78.5489, eur.rate)
def test_get_rates_eur_error(self): bank_4 = CbBank(datetime.date(1950, 1, 27)) with self.assertRaises(CentralBankError): bank_4.get_rates_eur()
def test_get_rates_eur_curr_name_3(self): bank_3 = CbBank(datetime.date(2020, 5, 30)) eur = bank_3.get_rates_eur() self.assertEqual('EUR', eur.name)
def test_get_rates_eur_rate_2(self): bank_2 = CbBank(datetime.date(2015, 7, 27)) eur = bank_2.get_rates_eur() self.assertEqual(63.6090, eur.rate)
def test_get_rates_eur_curr_name_2(self): bank_2 = CbBank(datetime.date(2015, 7, 27)) eur = bank_2.get_rates_eur() self.assertEqual('EUR', eur.name)
def test_get_rates_eur_rate_1(self): bank_1 = CbBank(datetime.date(2002, 3, 2)) eur = bank_1.get_rates_eur() self.assertEqual(26.8343, eur.rate)
def test_get_rates_eur_curr_name_1(self): bank_1 = CbBank(datetime.date(2002, 3, 2)) eur = bank_1.get_rates_eur() self.assertEqual('EUR', eur.name)