Ejemplo n.º 1
0
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")
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
 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, 'Вологда')
Ejemplo n.º 4
0
 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, 'Иваново')
Ejemplo n.º 5
0
 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, 'Иваново')
Ejemplo n.º 6
0
 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, 'Вологда')