I've written a subclass of POE::Component::IRC::Object (which is now on CPAN), called Bot::Pluggable (which is now also on CPAN). Basically it allows you to have a base "bot", and register different plugin modules or objects with the bot. Each time the bot sees an event it checks to see if any of the modules/objects can handle them, and if so, passes control to that plugin. If a plugin returns a true value, then it won't continue through other plugins (kind of like returning OK from a mod_perl handler), but it you return 0, it continues and lets other plugins see that event (same as returning DECLINED).
Should make bot authoring a little simpler, IMHO.