THIS FILE IS OBSOLETE The texinfo manual is being written right now, and this is terribly incomplete and obsolete. 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