smrtbot is an IRC bot with one task in mind: keeping track of "factlets". This ability allows your channel to keep track of "community knowledge", even if the entire community isn't always online.
smrtbot is written in ksh93 and uses (currently only) SQLite3 for its database. Work is ongoing to add other database backends. Compatibility with bash is not being actively worked on at this time, however given bash's recent rate of adoption of ksh93 features, it may support smrtbot in the near future.
smrtbot was forked from Roland Mainz's shircbot example from the ksh93 integration project for OpenSolaris. If you're looking for a framework for a new IRC bot, you probably want to start from that rather than ripping smrtbot apart. :)
If you want to see it in action, there is an instance in #opensolaris on freenode running as smrt. Hang out for a bit, and you're bound to see people using it. Feel free to /msg smrt hi to see it in action, though!
Features
- Supports multiple IRC networks, with different channels per network
- Supports IRC server passwords (e.g. for identifying with Freenode)
- "Plain English" triggers (e.g. "explain something")
- Multiple-level ACL (plain users, "power users", and "administrators")
- Has often been mistaken for a "real person" (does this mean smrtbot has passed the Turing test?)
- Does not fork, when possible. (smrtbot doesn't even fork to connect to the IRC server!)
Limitations
- Requires multiple invocations for multiple networks
- Currently has no external configuration file
- Single threaded (if multiple users ask smrt to do things, they are serialized; probably will not be fixed as IRC is rate-limited anyhow)
The future
- Additional database support
- Web access
- Ability to look up bugs in various bug trackers
- Whatever else makes sense for a single purpose bot
Source
Note that smrtbot's source is not currently available. This will be corrected soon. Be patient!
