<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="/site.xsl"?>
<document title="bast : files">
  <body>

<table cellspacing="15">
<tr><th valign="top">bot.pl</th>
<td>
  simple script to kick off everything - does nothing more than call 
  Bot::new then Bot::run
</td></tr>

<tr><th valign="top">Bot.pm</th>
<td>
	Main program object, creates IRC connection objects, creates queues, 
	creates threads, initializes all data, runs the main Net::IRC 
	select() loop
</td></tr>


<tr><th valign="top">IRC.pm</th>
<td>
	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
</td></tr>

<tr><th valign="top">Worker.pm</th>
<td>
	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.
</td></tr>

<tr><th valign="top">InfoBot.pm</th>
<td>
	Infobot object, manages only information queries and storing, bar 
	menu data and routines, learn, forget, and 'who said that'
</td></tr>

<tr><th valign="top">Handlers.pm</th>
<td>
	Main parent object for the Handler plugins.  This module contains
	all non-specific handler functions, authentication, regex matching, 
	logging, etc.
</td></tr>

<tr><th valign="top">Handlers/*.pm</th>
<td>
	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:

  <ul>
	<li><b>BotControl</b>: handles various control ops, channel operations, 
		ignore list maintenace, making the bot say or do something</li>

	<li><b>default</b>: called when no other handler matched a privmsg or public
		IRC message, as a catch-all</li>

	<li><b>actions</b>: called when no other handler matched an action, same as 'default'</li>
  </ul>

</td></tr>

</table>

</body>
</document>

