Botto uses 2 types of listeners when responding to events: commands and observers. the _commandHandler and _observerHandler both act as routing layers to call their respective modules. The modules themselves contain the logic for whatever the module is responsible for. This allows us to easily add/remove/hot-swap modules without having to mess with the routing layer since the modules are pulled in dynamically on message events.
Both commands & observers inherit from their parent class. Child modules will do whatever work they need to, and ultimately return a respond() callback with their response. This callback will respond with the supplied value to the designated receiver as determined by the _*Handler (be it a channel, private message, etc). For an better understanding, check out the observerHandler class.