My bot operates off of keyword matching only. There's a web interface to edit "exchanges," which act like a directed graph from message to message.
My chatbot struggles when things are not phrased in the right way (for instance, it has trouble with negatives, as in "I am not well today"). The exchanges that we're designing for the theater piece have to be carefully worded to try to avoid encountering problems like these.
Overall, I think my chatbot is a good tool for its specific application.