Similar to AIM bots, Dodona is a Zephyrbot. Zephyr is a instant messaging service used mostly by MIT students. Zephyr is slightly different, however from other instant messengers, as it makes more use of "classes", which are similar to chat rooms. A user can subscribe to a class, and then can send messages (known as "zephyrs") to it, while receiving all zephyrs sent to that class. Dodona listens to and sends zephyrs on a certain class; -c dodona. See http://sipb-www.scripts.mit.edu/doc/wiki/UsingZephyr for running a zephyr client and sending and receiving zephyrs.
Dodona has a stored database of "knowledge", which is organized into topics and subtopics. Each individual topic is located in an XML file, usually titled topic.xml, where "topic" is replaced by the actual topic name. Each XML file is then divided into subtopics, or "answers". Each answer has a question associated with it, which is used to identify the answer, and a paragraph or so of information pertaining to the answer. There is also an XML file titled topics.xml which contains a list of each topic and the XML file with which the topic is associated.
NLTK, or the Natural Language ToolKit, is a python library which provides many tools for natural language processing. Specifically in Dodona's case, we use the classes ContextFreeGrammar and EarleyChartParser to create a grammar and parse sentences, respectively. For more information on NLTK, please visit http://www.nltk.org/.
There are two grammar files, one which stores non-terminal rules (rules.gr) and one which stores vocabulary rules (vocabulary.gr). They are strcutured in a format that is easy to parse and turn into a ContextFreeGreammar. The rules are all weighted equally, as we have not yet had a chance to train them.