def _handle_text(self, text: str):
<EOL>if self.is_command(text):<EOL><INDENT>self._logger.debug('<STR_LIT>')<EOL>command, args, kwargs = _get_cmd_args_kwargs(text)<EOL>self._logger.info('<STR_LIT>', command, args, kwargs)<EOL>result = self._handle_command(command, args, kwargs)<EOL>if result:<EOL><INDENT>if isinstance(result, str):<EOL><INDENT>print(result)<EOL><DEDENT>else:<EOL><INDENT>_pprint.pprint(result)<EOL><DEDENT><DEDENT>return<EOL><DEDENT>else:<EOL><INDENT>self._logger.debug('<STR_LIT>')<EOL>try:<EOL><INDENT>first_word, second_word = text.split('<STR_LIT:U+0020>', <NUM_LIT:1>)<EOL>self._logger.debug('<STR_LIT>', first_word)<EOL><DEDENT>except ValueError:<EOL><INDENT>self._logger.debug('<STR_LIT>')<EOL>return self._handle_NLP(text)<EOL><DEDENT>if self.is_command(second_word):<EOL><INDENT>self._logger.info('<STR_LIT>')<EOL>command, args, kwargs = _get_cmd_args_kwargs(second_word)<EOL>self._logger.debug('<STR_LIT>', command)<EOL>self._logger.debug('<STR_LIT>', command)<EOL>self._logger.debug('<STR_LIT>', args)<EOL>self._logger.debug('<STR_LIT>', kwargs)<EOL>return self._first_word_not_cmd(first_word, command, args, kwargs)<EOL><DEDENT>else:<EOL><INDENT>self._logger.info('<STR_LIT>'<EOL>'<STR_LIT>')<EOL>return self._handle_NLP(text)<EOL><DEDENT><DEDENT>
Check to see if text is a command. Otherwise, check to see if the
second word is a command.

Commands get handeled by the `_handle_command` method

If not command, check to see if first word is a service or an author.
Default program is to send message replies. However, we will also
check to see if the second word is a command and handle approparitly

This method does simple string parsing and high level program control