User Capabilities
ali
If that was all, well, the capability system would be cool, but not many people would say it was awesome. But it is awesome! Several things are happening behind the scenes that make it awesome, and these are things that couldn't happen if the bot was using numeric userlevels or single-character flags. First, whenever a user issues the bot a command, the command dispatcher checks to make sure the user doesn't have the "anticapability" for that command. An anticapability is a capability that, instead of saying "what a user can do", says what a user cannot do. It's formed rather simply by adding a dash (-) to the beginning of a capability; rot13 is a capability, and -rot13 is an anticapability.
Anyway, when a user issues the bot a command, perhaps calc or help, the bot first checks to make sure the user doesn't have the -calc or the -help (anti)capabilities before even considering responding to the user. So commands can be turned on or off on a per user basis, offering fine-grained control not often (if at all!) seen in other bots. This can be further refined by limiting the (anti)capability to a command in a specific plugin or even an entire plugin. For example, the rot13 command is in the Filter plugin. If a user should be able to use another rot13 command, but not the one in the Format plugin, they would simply need to be given -Format.rot13 anticapability. Similarly, if a user were to be banned from using the Filter plugin altogether, they would simply need to be given the -Filter anticapability.