1 This is bobot++.info, produced by makeinfo version 4.7 from
4 This file documents Bobot++ by Clinton Ebadi and Etienne Bernard
5 (original author, no longer works on program).
7 Copyright 2002,2004,2005 Clinton Ebadi
9 Permission is granted to copy, distribute and/or modify this document
10 under the terms of the GNU Free Documentation License, Version 1.1 or
11 any later version published by the Free Software Foundation; with no
12 Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
16 File: bobot++.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir)
18 This document describes Bobot++ by Clinton Ebadi and Etienne Bernard
19 (original author, no longer works on program).
21 This document applies to version 2.1.5 of the program named Bobot++
23 Copyright 2002,2004 Clinton Ebadi
25 Permission is granted to copy, distribute and/or modify this document
26 under the terms of the GNU Free Documentation License, Version 1.1 or
27 any later version published by the Free Software Foundation; with no
28 Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
41 --- The Detailed Node Listing ---
45 * Configuration Files::
46 * Configuration File Placement::
68 * Adding New Commands::
70 * Scheme User Levels::
72 * Misc Scripting Stuff::
81 * High Level Message Functions::
82 * Low Level Message Functions::
85 File: bobot++.info, Node: Introduction, Next: Configuration, Prev: Top, Up: Top
90 This manual feels abused and neglected because it has almost no content.
93 File: bobot++.info, Node: Configuration, Next: Using the Bot, Prev: Introduction, Up: Top
98 Bobot++ is easy to configure. See the `examples' directory for an
99 example configuration.
103 * Configuration Files::
104 * Configuration File Placement::
107 File: bobot++.info, Node: Configuration Files, Next: Configuration File Placement, Prev: Configuration, Up: Configuration
109 2.1 Configuration Files
110 =======================
118 File: bobot++.info, Node: bot.conf, Next: bot.users, Prev: Configuration Files, Up: Configuration Files
128 `bot.conf' contains key value pairs separated by `='.
132 Comments are started with a `#' and cause the entire line to be
133 ignored. _Note that this only works when the `#' is the first character
136 bot.conf is the main configuration file for a Bobot++. The available
137 configuration variables are listed below in the format "VARIABLE
138 <default-value>: description"
140 * NICKNAME <Bobot>: The nickname of the bot (NICK is an alias for
143 * USERNAME <bobot>: The IRC username of the bot
145 * CMDCHAR <!>: The character that prefixes commands given to the bot
146 (COMMAND is an alias for CMDCHAR)
148 * IRCNAME <I'm a bobot++!>: The IRC name (or 'real name') of the bot
149 (REALNAME is an alias for IRCNAME)
151 * USERLIST <bot.users>: Name of the file where the userlist is stored
153 * SHITLIST <bot.shit>: Name of the file where the shitlist is stored
155 * LOGFILE <$LOGDIR/bot.log>: Location of the bot logfile (set this
156 to `/dev/null' to disable logging).
158 * SERVER <None>: This specifies the server to connect to. Note that
159 this has a special syntax.
161 * CHANNEL <None>: This specifies a channel the bot will join when it
162 starts up. This also has a special syntax.
166 File: bobot++.info, Node: server syntax, Next: channel syntax, Prev: bot.conf, Up: bot.conf
168 2.1.1.1 server syntax
169 .....................
171 SERVER = SERVER_NAME [PORT [PASSWORD]]
173 This will make Bobot++ attempt to connect to SERVER_NAME on port
174 PORT with the password PASSWORD. SERVER_NAME should be the address of
175 the server. PORT and PASSWORD are optional. You may use more than one
176 server line; Bobot++ will attempt to connect to the first one and, if
177 it fails, will connect to the next one in the list. There is also a
178 command to cause the bot to cycle servers. At the present time Bobot++
179 cannot connect to more than one server at a time. This is a planned
180 feature of 3.0 (which is a very long way away; the current structure of
181 the program would make it very difficult to add support for connecting
182 to multiple servers at a time in a usable manner).
185 File: bobot++.info, Node: channel syntax, Prev: server syntax, Up: bot.conf
187 2.1.1.2 channel syntax
188 ......................
190 CHANNEL = NAME:INITIAL_MODES:MODES_TO_KEEP:CHANNEL_KEY
192 You may have any number of channel lines. When Bobot++ starts it will
193 attempt to join and gain ops in every channel listed. It will join NAME
194 and set the channel modes to INITIAL_MODES (e.g. "nt") if it is able to
195 gain operator status. It will then maintain MODES_TO_KEEP. If the
196 channel requires a key to enter simply set CHANNEL_KEY. Every argument
197 except for NAME is optional.
201 `CHANNEL = #foo:nt:nt:bar'
203 The bot will join `#foo' with the channel key `bar' and will then
204 maintain the modes `nt'.
208 The bot will join `#bar' and will not set any modes nor will it
209 attempt to maintain any modes.
212 File: bobot++.info, Node: bot.users, Prev: bot.conf, Up: Configuration Files
217 `bot.users' is the default file name of the userlist. It may be changed
218 in `bot.conf'. The file contains lines with the format:
220 `MASK:CHANNEL:LEVEL:PROTECTION:AUTO-OP'
222 * MASK is the host mask (e.g. `*!*username
223 .domain.com') of the user
225 * CHANNEL is a channel mask of the channels that the user has
226 priviliges to use the bot in (e.g. `*' for all channels, `#*' for
227 all non-local channel, `#foo*' for all channels starting with
228 "foo," `#bar' for channel "#bar" only, etc.)
230 * LEVEL is the user level of the user (*Note User Levels::).
232 * PROTECTION is the protection level of the user (*Note
235 * AUTO-OP is set to control whether a user is automatically given
236 operator priviliges on channel entry (*Note Automatic Op::).
240 File: bobot++.info, Node: Configuration File Placement, Prev: Configuration Files, Up: Configuration
242 2.2 Configuration File Placement
243 ================================
245 [ I kinda think this should go before the detailed description of
246 the config file. I was didn't see it at first and was very
247 frustrated trying to find out _where_ to edit all this wonderful
250 Bobot++ will look in `/etc/bobotpp/default/' for its default config
251 if none is specified on the command line. Put the configuration files
252 you want to be loaded by default in this directory. If you are not root
253 or you want to have your own personal configuration, put it in
254 `~/.bobotpp/config/default/'.
257 File: bobot++.info, Node: Using the Bot, Next: Scripting, Prev: Configuration, Up: Top
270 * Built-In Commands::
273 File: bobot++.info, Node: Starting the Bot, Next: User Levels, Prev: Using the Bot, Up: Using the Bot
278 The bot is usually installed with the binary name `bobotpp'. It accepts
279 the following command line arguments:
281 * `[--help][-h]' - Shows detailed help and exits
283 * `[--version][-v]' - Shows version information and exits
285 * `[--no-background][-b]' - Run bobot++ in the foreground
287 * `[--config-file file][-f]' - Use file instead of `bot.conf'
289 * `[--config-dir dir][-d]' - Use dir as dir to load config file from
291 * `[--config dir][-c]' - Search your config path (defaults to
292 `$HOME/.bobotpp/config/' and then `/etc/bobotpp/') for dir and
293 then loads your config data using dir
295 * `[--sys-config dir][-s]' - Looks for config in `/etc/bobotpp/dir'.
296 Note that the user dir is still searched first
298 * `[--user-config dir][-u]' - Looks for config in
299 `$HOME/.bobotpp/config/dir/'. Note that the system dir is still
300 searched after this if dir is not found.
302 * `[--debug][-D]' Makes Bobot++ print debugging info and run in the
305 * `[--debug-scripts][-S]' Enabled the Guile debugging evaluator for
306 verbose script errors and backtraces while still running the bot
309 The default configuration is read from
310 `$HOME/.bobotpp/config/default/' and then `/etc/bobotpp/default/' if
311 the user config is not found.
313 The bot defaults to running in the background as a daemon.
316 File: bobot++.info, Node: User Levels, Next: Protection, Prev: Starting the Bot, Up: Using the Bot
321 There are several user levels available in Bobot++ to provide gradated
322 access to commands. `!adduser' and `bot.users' use the numeric code;
323 Scheme uses the textual name for the level. By default (if no catch-all
324 setting is found in *Note bot.users::.) a user is not even a
325 `bot:user-none' and cannot execute *any* commands, even commands
326 available to `bot:user-none'.
328 0. `bot:user-none' - No *built-in* commands may be executed _by
329 default_ (commands may be added from Scheme that can be executed
330 by users of level none and the level required to execute a command
331 may be changed from Scheme).
333 1. `bot:user-user' - Will be able to execute most commands but not
334 all and cannot use masks on kicks and bans.
336 2. `bot:user-trusted' - For built-ins with a default configuration
337 this user has access to the same set of commands as an `user' but
338 may use masks on kicks and bans. Scheme commands may be added
339 which require a user to be of this level.
341 3. `bot:user-friend' - In the default configuration a user who is a
342 friend will be able to do everything short of stopping the bot.
343 Again, there may be user added commands that require a higher user
346 4. `bot:user-master' - This is the highest user level and has access
347 to every feature of the bot.
351 File: bobot++.info, Node: Protection, Next: Automatic Op, Prev: User Levels, Up: Using the Bot
356 A user added via Scheme, the `bot.users' file, or `!adduser' may be
357 protected from being deoped, kicked, or banned. There are currently no
358 symbolic levels in Scheme; just use the numeric code.
362 1. No ban. If a user is banned the bot will unban him..
364 2. No kick. The user may still be kicked but the bot will kickban the
365 user who kicked the protected user.
367 3. No deop. The bot will ensure that the user always maintains
371 File: bobot++.info, Node: Automatic Op, Next: Built-In Commands, Prev: Protection, Up: Using the Bot
376 A user may be automatically given operator status upon entering a
377 channel. Set the AOP field to "0" to disable auto-op or "1" to enable
381 File: bobot++.info, Node: Built-In Commands, Prev: Automatic Op, Up: Using the Bot
383 3.5 Built-In Commands
384 =====================
386 Bobot++ has many built-in commands that make it useful without
387 scripting support. The reference leaves off the command char; remember
388 to use whatever you defined the command char to be in `bot.conf'. If a
389 command needs the channel name then you must specify the channel as the
390 first argument to the command when private messaging the bot a command.
392 COMMAND NEEDS MIN LEVEL DESCRIPTION
394 `action' `do' Yes USER Causes the bot to perform the
395 action `do' in the current channel.
397 `addserver' Adds the server specified by HOST
398 NAME or IP ADDRESS to the server
401 `alias' Makes an alias, and adds the
402 function NEW NAME, that will do
403 exactly the same command as OLD
405 `ban' Bans MASK or NICK from CHANNEL. You
406 need to be a trusted user to ban
409 `channels' Prints the channel(s) where the bot
411 `cycle' Yes Makes the bot leave and join
413 `dcclist' Gives the list of all DCC Chat
415 `deban' Yes Debans MASK or NICK from CHANNEL.
416 You need to be a trusted user to
418 `delserver' Deletes server from server list
419 whose number in the server list is
421 `deluser' Removes NICK or MASK from the
423 `delshit' Removes NICK or MASK from the
425 `deop' Yes Deops MASK or NICK on CHANNEL.
426 `die' Makes the bot stop immediately.
428 `execute' *Only available if scripting
431 `ident' Identifies you on the bot. Note
432 that you should not use this
433 command in public ...
434 `invite' Yes Invites NICK on CHANNEL.
435 `join' Makes the bot join CHANNEL.
436 `keep' Yes Sets the MODES that the bot will
438 `kick' Yes Kicks MASK or NICK out of CHANNEL,
439 because of REASON. You need to be a
440 trusted user to use a MASK.
441 `kickban' Yes Bans then kicks MASK or NICK out of
442 CHANNEL, because of REASON. You need
443 to be a trusted user to use a MASK.
444 `load' Reloads the userlist from disk.
445 `loadscript' *Only available if scripting
447 `lock' Locks topic on CHANNEL.
448 `mode' Yes Sends MODE STRING as mode for
451 `names' Yes Shows the nicknames and status of
453 `nextserver' Makes the bot connect to the next
454 server in its server list.
455 `nick' Makes the bot use nickname NICK.
456 `nslookup' Does a nameserver query about NICK
457 host, HOST or IP ADDRESS.
458 `op' Yes Ops NICK on CHANNEL.
459 `part' Yes Makes the bot leave CHANNEL.
460 `password' Changes your password on the bot.
461 Use `NONE' as password if you want
462 to clear it. Do not use this
464 `reconnect' Makes the bot reconnect to its
466 `rspymessage' Removes you from the spy list.
467 `save' Saves the userlist.
468 `say' Yes Makes the bot say MESSAGE on
470 `server' Select the server to connect to.
471 SERVER NUMBER is the number of the
472 server in the serverlist.
473 `serverlist' Shows the bot's serverlist.
476 `shitlist' Shows the bot's shitlist.
477 `spylist' Shows the bot's spylist.
478 `spymessage' Adds you to the spylist
479 `stats' Yes Gives CHANNEL's statistics.
480 `tban' Yes Bans NICK or MASK from CHANNEL for
482 `tkban' Yes Bans NICK or MASK from CHANNEL for
483 TIME seconds, then kicks him/them
485 `topic' Yes If no TOPICis given, prints
486 CHANNEL's topic. Otherwise, the bot
487 will change CHANNEL's topic to
489 `unlock' Yes Makes the bot unlock topic on
491 `userlist' Shows the bot's userlist
492 `who' Yes Show your level on CHANNEL
493 `whois' Yes Shows information about NICK on
497 File: bobot++.info, Node: Scripting, Next: Concept Index, Prev: Using the Bot, Up: Top
502 Bobot++'s most powerful feature is its scripting system. You write
503 scripts using Guile Scheme. This manual does not cover how to use Guile
504 or how to learn Scheme. *Note Guile Reference Manual: (guile)Top, for
505 the Guile reference manual and
506 `http://www.ccs.neu.edu/home/dorai/t-y-scheme/t-y-scheme.html' for a
507 good tutorial on Scheme.
509 Note that in previous versions the scripting commands where in the
510 form `bot-FUNCTION'. They are now in the form `bot:FUNCTION'. The old
511 names are still available, but are deprecated and will be removed in
512 Bobot++ 3.0. New commands are only available with the `bot:' prefix.
513 The command `perl -pi -e ``s/bot-/bot:/g'' YOUR-FILES' should be enough
514 to convert your code to use the new functions.
518 * Adding New Commands::
520 * Scheme User Levels::
522 * Misc Scripting Stuff::
525 File: bobot++.info, Node: Adding New Commands, Next: Hooks, Prev: Scripting, Up: Scripting
527 4.1 Adding New Commands
528 =======================
530 Adding a new command is simple. To register a new command use
533 -- Function: bot:addcommand name func needs-channel? num-of-args
535 The NAME is a string representing the name of the command being
536 added. FUNC is a function accepting NUM-OF-ARGS arguments.
537 NEEDS-CHANNEL? is a bool that is true if the function needs the
538 channel name as its first arg, and false otherwise. NUM-OF-ARGS
539 is the number of args FUNC will take and must be within zero (0)
540 and twenty (20). MIN-LEVEL is one of the *Note Scheme User
541 Levels::. A user must be at least a `min-level' user to use the
542 new command. None of the arguments are guaranteed to be passed;
543 if they aren't they are set to the empty string `""'. An example
544 of a new command would be:
546 (define (hello channel name)
547 (if (string=? name "")
548 (bot:say channel "Hello world!")
549 (bot:say channel (string-append "Hello " name "!")))
551 (bot:addcommand "hello" hello #t 2 0)
553 This will display "Hello World!" if called as `!hello' and "Hello
554 World `USER'" if called as `!hello USER'.
557 File: bobot++.info, Node: Hooks, Next: Scheme User Levels, Prev: Adding New Commands, Up: Scripting
562 Hooks are a powerful feature of Bobot++. Hooks are a hybrid of ircII
563 and tiny fugue (a MUD bot) hooks with a little bit of extra stuff added
564 in. A hook is called when a regular expression is matched against a
565 message sent to or by the bot.
567 Bobot++ uses different hook types for each IRC message type, and also
568 includes a hook for accessing raw irc messages. Hooks are tagged with a
569 priority and a flag that specifies whether to call the next hook that
570 matches after calling the current one or to stop processing.
572 Hooks are processed from the highest to lowest priority, with
573 fallthrough hooks of equal priority to non-fallthrough hooks being
582 File: bobot++.info, Node: Creating a Hook, Next: Hook Types, Prev: Hooks, Up: Hooks
584 4.2.1 Creating a Hook
585 ---------------------
587 To add a new hook you use the function `bot:addhook'.
589 -- Function: bot:addhook type regex function [pri fall name]
590 TYPE specifies the type of hook (the types of hooks are listed in
591 *Note Hook Types::). REGEX is a standard regular expression. If
592 REGEX is matched, FUNCTION will be called. FUNCTION will take a
593 different number of args depending on the hook type. PRI specifies
594 the priority of the hook--higher priority hooks are executed
595 first. This argument is optional and defaults to `0'. FALL is `#t'
596 if the hook is a fallthrough hook and `#f' is the hook is not a
597 fallthrough hook. This arg is also optional and default to `#t'.
598 NAME is the optional name of the hook that defaults to "DEFAULT".
599 If you set the name then you can have more than one hook that
600 matches the same regexp, as long as they have the same name. E.g.
601 in a log script you could have the regexps for the log function
602 all be `".*"' and set their names to `"log"' to avoid a conflict
606 File: bobot++.info, Node: Hook Types, Prev: Creating a Hook, Up: Hooks
611 Here is a list of the various hooks funtions and notes on each one. The
612 general format of each hook description is as if it was was function to
613 be defined, but these describe the function to be passwd to
614 `bot:add-hook'. Do _not_ name your functions these names.
616 [ Boy, that's clumsy. I want to say that the hook/xx functions
617 that are documented below are not funtions that you call. They
618 are the functions that needs to be passed to bot:addhook for that
621 Still clumsy. Oh well. ]
623 That said, here is the list of available hooks functions. FIXME:
626 -- Function: hooks/action from to action
627 This hook is triggered when someone performs an action. FROM is
628 the address of the person that performed the action in the form
629 `NICK ! USER @ HOST' (without the spaces). TO is the target of
630 the action, which is either a channel or the Bot's nick. ACTION
631 is the text of the action. E.g. if someone did `* foobar does
632 baz', then ACTION would be the string `"does baz"'.
634 -- Function: hooks/nickname old-nick new-nick
635 This hook gets called when someone changes thir nickname from
636 OLD-NICK to NEW-NICK.
638 -- Function: hooks/signoff nick rest
640 -- Function: hooks/ctcp nick to command rest
642 -- Function: hooks/ctcp-reply nick command rest
644 -- Function: hooks/disconnect server
645 This is called when the bot is disconnected from a server
646 unintentionally. `hooks/signoff' is called when the bot
647 purposefully disconnected. The hook function is passed the
648 hostname of the server it was disconnected from.
650 -- Function: hooks/flood nick
652 -- Function: hooks/invite nick channel
654 -- Function: hooks/join nick channel
656 -- Function: hooks/kick target from channel reason
658 -- Function: hooks/leave nick channel
659 -- Function: hooks/part nick channel
661 -- Function: hooks/mode nick channel modes
663 -- Function: hooks/message from message
665 -- Function: hooks/notice nick message
667 -- Function: hooks/public from to message
669 -- Function: hooks/public-notice nick to message
671 -- Function: hooks/raw raw-message
673 -- Function: hooks/timer time
674 This hook seems to be called once a minute. TIME is in `hh:mm'
677 -- Function: hooks/topic nick channel new-topic
679 -- Function: hooks/send/public mynick dest message
681 -- Function: hooks/send/message botnick message
683 -- Function: hooks/send/action mynick to message
685 -- Function: hooks/send/ctcp mynick to command message
687 -- Function: hooks/dcc/chat-begin from
688 This hook is triggered when a user begins a DCC CHAT with the bot.
689 FROM is the user's address in the form `nick!user@host'.
691 -- Function: hooks/dcc/chat-message from message
692 This hook is triggered when a user sends a message to the bot
693 through a DCC CHAT FROM is the user's address in the form
694 `nick!user@host'. MESSAGE is the message the user sent to the bot.
697 File: bobot++.info, Node: Scheme User Levels, Next: Sending Messages, Prev: Hooks, Up: Scripting
699 4.3 Scheme User Levels
700 ======================
702 There are five levels that a user may be when interfacing with a bot:
703 NONE, USER, TRUSTED_USER, FRIEND, MASTER. The Scheme variables for the
704 user levels are `bot:user-none', `bot:user-user', `bot:user-trusted',
705 `bot:user-friend', and `bot:user-master'. See *Note User Levels:: for
706 more information on User Levels.
708 When adding a new command, think about who should be able to use it.
709 Is your command a general purpose command that helps the channel (e.g.
710 `!seen') that everyone should be able to use? Or is it something that
711 should be restricted? See *Note User Levels:: for information on what
712 level users can do what with the built in bot commands and think about
713 what level a user your command is targetted towards. You must be _very_
714 careful when giving new commands to lower level users because you can
715 do basically everything the bot can do with a script. As the scripting
716 interface becomes more powerful, you must think more about what users
717 can use new commands you add.
720 File: bobot++.info, Node: Sending Messages, Next: Misc Scripting Stuff, Prev: Scheme User Levels, Up: Scripting
725 There are several types of messages you can send with Bobot++ from
726 scripts. There is the simple, but rather limited, `bot:say',
727 `bot:action' and `bot:msg', and the more powerful, but lower level,
728 `bot:send-MESSAGE' functions. Most bots will probably only need the
729 higher level functions, but for the sake of why-not Bobot++ lets you
730 use the lower level functions (in progress).
734 * High Level Message Functions::
735 * Low Level Message Functions::
738 File: bobot++.info, Node: High Level Message Functions, Next: Low Level Message Functions, Prev: Sending Messages, Up: Sending Messages
740 4.4.1 "High Level" Message Functions
741 ------------------------------------
743 -- Function: bot:say channel message
744 Send a public or private MESSAGE to CHANNEL.
746 Sends a normal text message, as if a user had typed it in. The
747 DEST can be a nickname or a channel.
749 -- Function: bot:action channel message
750 Send an "action" type MESSAGE to CHANNEL
752 -- Function: bot:msg nick message
753 The same as if a user typed `/msg nick message' to their IRC
756 -- Function: bot:notice target message
757 Sends MESSAGE as a NOTICE to TARGET. TARGET may be a user (nick)
758 or a channel. This returns 0 on success.
761 File: bobot++.info, Node: Low Level Message Functions, Prev: High Level Message Functions, Up: Sending Messages
763 4.4.2 "Low Level" Message Functions
764 -----------------------------------
766 The "Low Level" messaging functions allow you to do things like send
767 CTCP messages. You probably want to read rfc 2812 and the CTCP spec
768 before using these. If you have no idea what these do, read rfc 2812
769 (IRC Client Protocol) and CTCP spec. These functions all return
770 `*unspecified*' always, so don't use the return value for anything.
772 -- Function: bot:send-ctcp to command message
773 `to' is the target of your CTCP message, `command' is the CTCP
774 command, and `message' is the message (or arguments) of the
775 command. Make sure to `bot:ctcp-quote' the message!
777 -- Function: bot:send-ctcp-reply to command message
778 `to' is the target of your CTCP reply, `command' is the CTCP
779 command, and `message' is the message (or arguments) of the
780 command. Make sure to `bot:ctcp-quote' the message!
782 This is used to reply to a ctcp that the bot has received.
785 File: bobot++.info, Node: Misc Scripting Stuff, Prev: Sending Messages, Up: Scripting
787 4.5 Misc. Scripting Stuff
788 =========================
790 These are a few useful things that I thought people writing scripts
793 If you want to execute code when the bot exits, just do `add-hook!
794 bot:exit-hook THUNK' where THUNK is an argumentless procedure (a
795 thunk). When the bot exits your thunk will be called.
797 [ I didn't know where to put any of these, so I jsut stuck them in
800 There probably needs to be several sections added, like dealing
801 with users (kicking, added, etc), dealing with the bot (channels,
802 nickname of the bot, etc), server issues (serverlist), useful
803 tools (nslookup, whois), and do on. ]
805 -- Function: bot:adduser nick-or-mask cbannel-mask level prot auto-op
806 Adds an user to the userlist, for a `nick!user@host' matching the
807 one given, on a channel matching the CHANNELMASK given.
809 The LEVEL can be: The PROT can be: The AUTO-OP can be:
810 0 - No level 0 - No protection 0 - No auto-op
811 1 - User 1 - No ban 1 - Op on join
812 2 - Trusted User 2 - No kick
813 3 - Friend 3 - No deop
817 -- Function: bot:addserver hostname ip-address [portnumber]
818 Adds the server specified by HOSTNAME or IP-ADDRESS to the server
821 -- Function: bot:addshit nick-or-mask channel-mask level [time reason]
822 Adds an user to the shitlist, for a nick!user@host matching the
823 one given, on a channel matching the CHANNELMASK given.
828 2 - Kick and Ban on join
829 3 - Kick and Ban on join, no deban
832 -- Function: bot:ban channel mask-or-nick
833 Bans MASK or NICK from CHANNEL. You need to be a trusted user to
836 -- Function: bot:change-command-level nick-or-mask channel-mask
838 Gives NICK or MASK level NEW-LEVEL on channel(s) CHANNEL-MASK.
839 Note that you can not change level for someone whose level is
840 greater than yours, and that you can not give a level greater than
843 -- Function: bot:cycle channel
844 Makes the bot leave and join CHANNEL.
846 -- Function: bot:deban channel mask-or-nick
847 Debans MASK or NICK from CHANNEL. You need to be a trusted user to
850 -- Function: bot:delserver server-number
851 Deletes server from server list whose number in the server list is
854 -- Function: bot:deluser nick-or-mask channel-mask
855 Removes NICK or MASK from the userlist.
857 -- Function: bot:delshit nick-or-mask channel-mask
858 Removes NICK or MASK from the shitlist.
860 -- Function: bot:deop channel mask-or-nick
861 Deops MASK or NICK on CHANNEL.
863 -- Function: bot:die reason
864 Makes the bot stop immediately.
866 -- Function: bot:do ?
868 -- Function: bot:invite channel nick
869 Invites NICK on CHANNEL.
871 -- Function: bot:join channel
872 Makes the bot join CHANNEL.
874 -- Function: bot:keep channel modes
875 Sets the MODES that the bot will keep for CHANNEL. See also STATS.
877 -- Function: bot:kick channel mask-or-nick [reason]
878 Kicks MASK or NICK out of CHANNEL, because of REASON. You need to
879 be a trusted user to use a MASK.
881 -- Function: bot:kickban channel mask-or-nick [reason]
882 Bans then kicks MASK or NICK out of CHANNEL, because of REASON.
883 You need to be a trusted user to use a MASK.
885 -- Function: bot:lock channel
886 Locks topic on CHANNEL.
888 -- Function: bot:logport
889 [ Probably returns the log port? ]
891 -- Function: bot:mode channel mode-string
892 Sends MODE-STRING as mode for CHANNEL.
894 -- Function: bot:nextserver
895 Makes the bot connect to the next server in its server list.
897 -- Function: bot:nick nick
898 Makes the bot use nickname NICK.
900 -- Function: bot:op channel nick
903 -- Function: bot:part channel
904 Makes the bot leave CHANNEL.
906 -- Function: bot:reconnect
907 Makes the bot reconnect to its current server.
909 -- Function: bot:server server-number
910 Select the server to connect to. SERVER-NUMBER is the number of
911 the server in the serverlist.
913 -- Function: bot:setfloodrate ?
915 -- Function: bot:setversion ?
917 -- Function: bot:tban channel nick-or-mask time
918 Bans NICK or MASK from CHANNEL for TIME seconds.
920 -- Function: bot:tkban channel nick-or-mask time [reason]
921 Bans NICK or MASK from CHANNEL for TIME seconds, then kicks
922 him/them because of REASON.
924 -- Function: bot:topic channel topic
925 If no TOPIC is given, prints CHANNEL's topic. Otherwise, the bot
926 will change CHANNEL's topic to TOPIC.
928 -- Function: bot:unlock channel
929 Makes the bot unlock topic on CHANNEL.
931 -- Function: bot:getnickname
932 [ Gets the bot's nickname? ]
934 -- Function: bot:getserver
936 -- Function: bot:getserverlist
938 -- Function: bot:flush
939 [ Flushes the socket to the server? ]
941 -- Function: bot:flushport
942 [ Flushes the log port? ]
944 -- Function: bot:random ?
945 [ Returns a random number? What range? Why? ]
947 -- Function: bot:delcommand
948 [ Probably deletes a command added with `bot:addcommand' ? ]
950 -- Function: bot:addtimer ? ?
952 -- Function: bot:deltimer ?
954 -- Function: bot:dcc-chat-send ? ?
956 [ And what about the stuff defined in `bobot-utils.scm' ? I just
957 added it here so it could be somewhere. There should also be a
958 section dealing with modules. How to use them. What module
959 scripts are in. What module bobot++ provided primites are in.
962 -- Function: bot:log . messages
963 Write as many MESSAGES as you want to the log. If the arg is a
964 thunk it will be executed and it's output will be written to the
967 -- Function: bot:load file
969 -- Function: bot:load-module module-spec
971 -- Function: bot:use-module module-spec
973 -- Function: bot:match-not-channel regex
974 match-not-channel adds a prefix regex to your REGEX so it doesn't
975 match the sender or channel in a PUBLIC message
977 -- Function: bot:match-to-me regex
978 match-to-me matches text that was addressed to the bot with a ':',
979 ',', or nothing after the bot name.
981 -- Function: bot:sent-to-me? message
983 -- Function: bot:ctcp-quote message
984 Returns the CTCP quoted message Input _MUST NOT_ contain the
985 trailing `\r\n' (it is added by the message sending code).
987 -- Variable: %bot:loadpath
989 -- Function: %bot:load-extensions
992 File: bobot++.info, Node: Concept Index, Next: Function Index, Prev: Scripting, Up: Top