This bot uses hlirc framework. It's packaged into a monolithic executable using rkeene's tclkit. Other dependencies are TclX for handling POSIX signals and a few utilities from tcllib.
It implements two modules for hlirc:
- db - The interface to sqlite database storing all internal data.
- cnt - The user interface implementing commands and a few very IRC-specific utilities which would have no use for other protocols in case the bot (and hlirc) ever gets ported to them. This file also contains
module wizarddeclaration which implements the first start wizard.
If you have questions about how modules work please refer to hlirc's documentation.
votings.tcl contains protocol-agnostic implementation of the bot functionality. There's a class diagram of voting classes here.
ibc.tcl contains the intra-bot communication facility implementation. It is protocol-agnostic too and currently has one subclass implementing IRC-transport for intra-bot messages.
The rest are util.tcl with common utilities and main.tcl with some glue code.