예제 #1
0
 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)
예제 #2
0
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
예제 #3
0
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