def check_intents(self, user_id: int, text: str): """ Проверка возможных запросов :param user_id: id пользователя :param text: текст сообщения """ msg_data = handlers.intents_handler(text, user_id) if msg_data: text_to_send = msg_data[0] keyboard = msg_data[1] self.send_text(text_to_send, user_id, keyboard) else: keyboard = json.dumps(handlers.get_keyboard('root')) UserState.set_current_section(user_id, 'root') self.send_text(settings.DEFAULT_ANSWER, user_id, keyboard)
def intents_handler(text: str, user_id: int) -> Tuple[str, str] or bool: """ Обрабатывает общие запросы :param text: текст сообщения :param user_id: id пользователя :return: текст отправляемого сообщения и JSON-строка, представляющая клавиатуру, или False в случае некорректного запроса """ for intent in settings.INTENTS: if any(token in text.lower() for token in intent['tokens']): keyboard = json.dumps(get_keyboard(intent['section'])) text_to_send = intent['answer'] UserState.set_current_section(user_id, intent['section']) log.debug(f'Ответ: {text_to_send}; user_id: {user_id}') return text_to_send, keyboard else: return False
def root_choice_handler(text: str, user_id: int) -> Tuple[str, str] or bool: """ Обрабатывает запросы в корневом разделе :param text: текст сообщения :param user_id: id пользователя :return: текст отправляемого сообщения и JSON-строка, представляющая клавиатуру, или False в случае некорректного запроса """ sections = select(s.name for s in Section)[:] for section in sections: if section.lower() in text.lower(): keyboard = json.dumps(get_keyboard(section)) text_to_send = f'Вы перешли в раздел "{section}". Выберите интересующий вас товар.' UserState.set_current_section(user_id, section) log.debug(f'Ответ: {text_to_send}; user_id: {user_id}') return text_to_send, keyboard else: return False