Basic overview of scripting: (-*- text -*-)

You can use any construct supported by Guile and scripts are always
run as the master, so BE CAREFUL WHAT YOU PUT IN A SCRIPT!

If you don't know Scheme, then I suggest that you read "Teach Yourself
Scheme in Fixnum Days" available from
http://www.ccs.neu.edu/home/dorai/t-y-scheme/t-y-scheme.html. The
Guile Scheme reference manual is also a good resource for help on
Scheme.

See scripts/ for example scripts and the bobot-utils.scm Bot utility
library. If you have any useful functions that someone writing a bot
would like to use, please send them to the current maintainer of
Bobot++ so they can be added to the library. The util library is
GPLed, as must your scripts be even if you don't use the utils library
because Bobot++ is GPL, and the commands you use (e.g. bot-addcommand)
are also GPL...

Guile script are very powerful. You can even write extensions in C and
use load-extension to load the extension and make it's functions
available, so you can (in theory at least) do anything with Bobot++
that you can do with eggdrop (except for DCC because it is disabled
for now).

Time format help...wherever a time is needed, you must use a string
that gives the time you want in years after 1970 (because UNIX time
starts at Midnight January 1, 1970). Format is:

xxYxxMxxDxxHxxmxxs

Y = year, M = month, D = days, H = hours, m = minutes, s = seconds
Remember that the time is since 0:00 January 1, 1970. I really need to
write a function that converts dates into the time format used internally.


Anyway, read bobot-utils.scm for the docs on the utils. Reading the
source code (mainly ScriptCommands.[CH]) will help. 

Commands:
- anything with a ? means that the arg must be either #t or #f
- min-level is from 0->4 and is the minimum level a user must be in
  order to execure the command


(bot-addcommand "name" function [needs channel?] args min-level)
- This is how you add a command. You could use this to give level 0
  users access to a few commands by writing wrappers if you
  wanted. Just be careful what functions you let lower level users use
  because you might breach the security of your system! Because you
  can add commands, you can have the bot do anything (even reboot
  system if you have the bot running as root...)

(bot-addhook hook/type "regex" function)
- This will add a hook. A hook is executed for a certain type of message
  (the hook/type) when the regex matches. You can use the full POSIX
  regex syntax here, including the [[::]] (e.g. [[:alnum:]])
  extensions (at least on a system using the GNU C Libary). All of the
  regexps that match for a hook are executed, with the first to be
  added first. This behavior will change in Bobot++ 2.1 when
  fallthrough hooks and priorities are introduced.

  If a hook isn't documented here, look in Interp.C
  and Parser.C for stuff on the Hooks. The docs here will list the
  number of args and their contents.

The available hooks are: (add docs!)
- hooks/action
- hooks/nickname
- hooks/signoff
- hooks/ctcp
- hooks/ctcp-reply
- hooks/disconnect
- hooks/flood
- hooks/invite
- hooks/join
- hooks/kick
- hooks/part
- hooks/mode
- hooks/message
    private message to bot
    2 args - from: user than sent message, text: text of message
- hooks/notice
- hooks/public
    public message (everything that happens in a channel except for
    actions)
    3 args - from: user that sent message, to: channel, text: message text
- hooks/public-notice
- hooks/raw
- hooks/timer
- hooks/topic