It's really hard to send messages to the Protocol objects from outside, but that's where a lot of the working code is for the IRC client. This code lets a Control object keep track of the ClientFactories, and lets the ClientFactories keep track of their Protocol objects. A join message sent to the Factories gets reflected down the chain. We use deferrals to make sure it arrives at a Protocol, even when it hasn't yet signed on when the join method is called.
Previously we ran the CLI from within the program, now we run it as a separate command line script. That means we don't stumble into problems like restarting the Twisted reactor when we run simulations of more than one command line call.
ConsensoProcess seems clearer; we'll keep out the IRC controls from this object, put them somewhere else.
In preparation for moving most of its functions into the rest of module.
In preparation for moving most of functionality out into rest of library.
Uses a separate twistd program, with a TAC defined in consenso/bot/ConsensoBotTac.py. (TACs are application definitions that can be run by Twisted's twistd command line program) Works, but needs a better way to pass control info to the process.