| bot.pl |
simple script to kick off everything - does nothing more than call
Bot::new then Bot::run
|
| Bot.pm |
Main program object, creates IRC connection objects, creates queues,
creates threads, initializes all data, runs the main Net::IRC
select() loop
|
| IRC.pm |
IRC routines, main input loop, which passes most data off to
a worker thread for processing. Also contains the IRC output
queue and processing thread, this does *all* IRC operations
|
| Worker.pm |
The little bots inside the bot, these do the actual processing of
data passed in from the IRC connection objects (via queue),
does whatever needs to be done, and returns data to the IRC output
queue. Loads/unloads handler objects, maintains it's own data space.
|
| InfoBot.pm |
Infobot object, manages only information queries and storing, bar
menu data and routines, learn, forget, and 'who said that'
|
| Handlers.pm |
Main parent object for the Handler plugins. This module contains
all non-specific handler functions, authentication, regex matching,
logging, etc.
|
| Handlers/*.pm |
Individual handler object modules, which inherit from Handler.pm.
Specific operations/data/etc for each command, like 'ascii' or
'boggle'. Handlers contain their own options such as regular
expressoin to match the channel, help and description info,
and various flags such as wether to act on different types of IRC
messages, if the database is required for this handler, and
the priority in which this handler is called, in relation all the
others.
There are three semi-special:
- BotControl: handles various control ops, channel operations,
ignore list maintenace, making the bot say or do something
- default: called when no other handler matched a privmsg or public
IRC message, as a catch-all
- actions: called when no other handler matched an action, same as 'default'
|