def get_current_rate(currency, bot, chat_id): ''' Функция выдает курс запрошенной валюты Перед выполнением запроса проверяется актуальность данных ''' now = datetime.datetime.now() today_date = now.strftime("%Y.%m.%d") if database.check_for_actual_information(): print("обновление базы") get_today_rate(currency, bot, chat_id, today_date) #bot.send_message(chat_id, 'Пожалуйста подождите\nНужно обновить базу') database.insert_new_information(today_date) try: query = 'SELECT price FROM prices WHERE currency_code = "{}" AND date = "{}"'.format( currency, today_date) response_currency = database.db_execute_query(query)[0][0] query_count = 'SELECT currency_count FROM general_info WHERE currency_code = "{}"'.format( currency) response_count = database.db_execute_query(query_count)[0][0] message = 'Цена {} {} на сегодняшний день составляет {} руб.'.format( response_count, currency, response_currency) bot.send_message(chat_id, message) except: print('Ошибка в get_current_rate') bot.send_message(chat_id, 'Ошибка\n возможно команда была некорректная')
def check_correct_currency_name(currency): ''' Функция проверяет правильность написания запрощенной валюты. Сверяет со списком валют в базе ''' print('проверка правильности написания валюты') query = 'SELECT currency_code FROM general_info' currency = currency.upper() response = database.db_execute_query(query) for tup in response: if currency == tup[0]: return True return False
def get_list_of_currency(bot, chat_id): ''' При получения команды "./get" без аругментов. Отправляет сообщение пользователю со списком всех поддерживаемых валют ''' query = 'SELECT * FROM general_info' text = database.db_execute_query(query) message = '' for line in text: a = '{} {}({})"\n'.format(line[2], line[3], line[1]) message += a bot.send_message(chat_id, message)
def parse_get_command(message, bot): ''' Функция парсит команду "/get .." Если аргументы отсутствуют то выдается список доступных валют. При наличии валюты, проверяется корректность запроса и выдается текущий курс ''' pattern = r'/get\s\b\w\w\w\b' match = re.search(pattern, message.text.lower()) if not match: get_list_of_currency(bot, message.chat.id) return currency_ = match[0][5:8].upper() query = 'SELECT currency_code FROM general_info' response = database.db_execute_query(query) for tup in response: if currency_ == tup[0]: print('запрос курса {}'.format(currency_)) get_current_rate(currency_, bot, message.chat.id) return bot.send_message(message.chat.id, 'Некорректная валюта')
def get_today_rate(currency, bot, chat_id, date): try: print("kek") year = date[0:4] month = date[5:7] day = date[8:] print("kek") url = "https://www.cbr.ru/currency_base/daily/?date_req=" + day + "." + month + "." + year print(url) list = database.get_query_from_link(url, True) print("получили список") for item in list: if item[0] == currency: price = item[1] print(price) print('нашли цену') query_count = 'SELECT currency_count FROM general_info WHERE currency_code = "{}"'.format( currency) response_count = database.db_execute_query(query_count)[0][0] message = 'Цена {} {} на сегодняшний день составляет {} руб.'.format( response_count, currency, price) bot.send_message(chat_id, message) except: print('Ошибка быстрой валюты')