Actually i am the only developer and user of this bot, seems there are too much projects out there with irc bots, so that mine doesn't look appealing enough for people to come even visit its project page :D but who cares, in a not so far future this bot will have gained a complete peer-to-peer filetransfer ability, and will be IMHO an absolute killer app for people wanting to share and download stuff from irc channels.
The actual stopper for that is the fact that the Net::IRC perl module isn't able to support mirc-style resume... i tryed to add that feature, but i have a strange newline problem when resuming, so if someone want's to help there feel free t ask for my patch...
Feel free to browse the cvs tree!
Alternatively you might want to check the CHANGELOG or the README. I admit that the docu lacks at the moment, but since i am the only one using this bot anyway.... once there will be a user pressure i will write the docu :D
I am aware that normally the docu should have been done prior to any programming, but as usual, this project began as a small toy to grow bigger and bigger, so lets say this is the prototype that will be coded for real sometime in future, and lets begin to make a docu for it.
I used dia to draw the class diagram of this thing, its available as png, tried to use the svg i exported, without positive result, so if somwone has an idea on how ot use svg graphics... The class UML diagram
The zebot class is a pure redirector (Delegation pattern), the events it reacts to are registered through ircServer-instance. ircServer is the class which make the connection to the irc server, joins the channels and registers the irc events onto the zebot-delegator-instance.
Once an event pours through the zebot class, it is redirected to the appropriated method of the registered modules. Most methods work with exclusion mechanism, as soon as a module has claimed an event (returning true on the call, processing of that event stops, so be careful in which order you pack your modules! It might have an incidence...
Adding a new module should be straightforward, look at existing code to orient yourself, e.g. the trigger class. Basically you need to subclass the baseactor class, implement the methods you will need (all that are available are listed in baseactor, and if it isn't there, there's still the uncatched method to retrieve the other events), save the file where it might be found, add it to the actors.conf file and ask the bot to reload (or start it if it wasn't running).
This documentation may be viewed by invoquing e.g. perldoc zebot.pm
directly from the distributed source files, it was generated through a simple for i in *.pm; do pod2html --infile=$i --outfile=www/modules/$i.html --title "pod documentation for `basename $i .pm`"; done
visit the project page at Savannah.org