code: def enter_bot_mode(self, functions):
      # choose prompt or model depending on mode
      mode_name = self.chat_memory.get_mode()
  
      allowed_tools = None
  
      if mode_name is None:
          # mode in not selected, lets to go to select menu
          model_executor = self._get_model(
              self.chat_task.base_model_name
          )
          prompt = self._make_select_mode_prompt()
  
          model_executor.prompt = prompt
  
      else:
          # mode is selected
          mode = self._modes.get(mode_name)
          if mode is None:
              # wrong mode
              self.chat_memory.set_mode(None)
              raise BotException(f"Error to use mode: {mode_name}")
  
          if "model" in mode:
              # this is model
              model_executor = self._get_model(mode["model"])
  
          elif "prompt" in mode:
              # it is just a prompt. let's use a bot model and custom prompt
              model_executor = self._get_model(
                  self.chat_task.base_model_name
              )
              model_executor.prompt = mode["prompt"]
  
          else:
              raise BotException(f"Mode is not supported: {mode}")
  
          allowed_tools = mode.get("allowed_tools")
  
      if allowed_tools is not None:
          functions = [
              fnc for fnc in functions if fnc.name in allowed_tools
          ]
  
      return model_executor, functions
  
file_path: mindsdb/mindsdb/interfaces/chatbot/chatbot_executor.py
imports: from .model_executor import ModelExecutor
  from .types import Function, BotException
label_desc: Use image node_id 4 for calling the MultiModeBotExecutor obj's underlying member method code with example usage: obj.enter_bot_mode(functions) and returns: model_executor,  functions