Build the state for this request.

async def _build_state(self,
                           request: Request,
                           message: BaseMessage,
                           responder: Responder) \
            -> Tuple[
                Optional[BaseState],
                Optional[BaseTrigger],
                Optional[bool],
            ]:
        """
        Build the state for this request.
        """

        trigger, state_class, dnr = await self._find_trigger(request)

        if trigger is None:
            if not message.should_confuse():
                return None, None, None
            state_class = self._confused_state(request)
            logger.debug('Next state: %s (confused)', state_class.name())
        else:
            logger.debug('Next state: %s', state_class.name())

        state = state_class(request, responder, trigger, trigger)
        return state, trigger, dnr