def bankiru_search(message): """Обработка сообщений и генерация ответа. Если бот находится в беседе, то он не реагирует на сообщения, в которых не находит ключевых слов. :param message: сообщение """ message_data = parsed_message.parsed_message(message.text.lower()) logging.info("message with id: %s received: %s" % (message.message_id, message.text)) message_data.parse() if message_data.trigger: if not message_data.date_search: client.send_message(message.chat.id, "Поиск по городу, дата не обнаружена") if (not message_data.region_found): client.send_message( message.chat.id, "Город не обнаружен, поиск по последнему найденному городу" ) if message_data.currency != 'all': parser_link = bru_parser.bru_parser( 'https://www.banki.ru/products/currency/cash/' + message_data.currency.lower() + '/' + links.citylinks[message_data.location]) parser_link.default_parse() client.send_message( message.chat.id, message_data.currency + '\n' + parser_link.default_parse()) logging.info("Sent message with %s currency to the chat %s" % (message_data.currency, message.chat.id)) else: for c in currency.currency: parser_link = bru_parser.bru_parser( 'https://www.banki.ru/products/currency/cash/' + c.lower() + '/' + links.citylinks[message_data.location]) parser_link.default_parse() client.send_message(message.chat.id, c + '\n' + parser_link.default_parse()) else: client.send_message(message.chat.id, "Поиск по дате") if message_data.currency == 'all': for cur in currency.currency: msg = bru_parser.bru_parser( 'https://www.banki.ru/products/currency/cb/' ).date_parse(cur, message_data.date) client.send_message(message.chat.id, msg) if msg == "Дата должна быть в диапазоне от 01.01.2005 до сегодняшнего дня": break else: client.send_message( message.chat.id, bru_parser.bru_parser( 'https://www.banki.ru/products/currency/cb/'). date_parse(message_data.currency, message_data.date)) else: logging.warning("No information detected") if message.chat.type == 'private': client.send_message(message.chat.id, "Неверный формат данных") logging.info("Responded")
def test_parse_all_currencies_and_date(self): message = 'Какой был курс на 01.05.2016' message = message.lower() check = parsed_message.parsed_message(message) check.parse() self.assertTrue(check.trigger) self.assertEqual(check.currency, 'all') self.assertEqual(check.date, datetime.strptime('01.05.2016', '%d.%m.%Y').date()) self.assertTrue(check.date_search)
def test_parse_dollar_and_city(self): message = 'Курс доллара в вологде' message = message.lower() check = parsed_message.parsed_message(message) check.parse() self.assertTrue(check.trigger) self.assertEqual(check.currency, 'USD') self.assertIsNone(check.date) self.assertEqual(check.location, 'Вологда')
def test_parse_all_currencies_with_default_city(self): message = "Какой курс доллара?" message = message.lower() check = parsed_message.parsed_message(message) check.parse() self.assertTrue(check.trigger) self.assertEqual(check.currency, 'USD') self.assertIsNone(check.date) self.assertEqual(check.location, 'Иваново')
def test_parse_all_currencies_and_city(self): message = "Какой курс в Иваново?" message= message.lower() check = parsed_message.parsed_message(message) check.parse() self.assertTrue(check.trigger) self.assertEqual(check.currency, 'all') self.assertIsNone(check.date) self.assertEqual(check.location, 'Иваново')
def test_parse_yuan_with_default_city(self): message = 'Курс китайского юаня?' message = message.lower() check = parsed_message.parsed_message(message) check.parse() self.assertTrue(check.trigger) self.assertEqual(check.currency, 'CNY') self.assertIsNone(check.date) self.assertEqual(check.location, 'Вологда')