Remove cruft from configure.ac
[clinton/bobotpp.git] / bobot++.info
CommitLineData
1c182346 1This is bobot++.info, produced by makeinfo version 4.8 from
2e20c3e1 2bobot++.texinfo.
3
4 This file documents Bobot++ by Clinton Ebadi and Etienne Bernard
e45daca1 5(The original author who no longer works on the program).
2e20c3e1 6
2e18045a 7 Copyright 2002,2004,2005 Clinton Ebadi
2e20c3e1 8
9 Permission is granted to copy, distribute and/or modify this document
10under the terms of the GNU Free Documentation License, Version 1.1 or
11any later version published by the Free Software Foundation; with no
12Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
13Texts.
14
15\1f
16File: bobot++.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir)
17
18 This document describes Bobot++ by Clinton Ebadi and Etienne Bernard
e45daca1 19(The original author who no longer works on the program).
2e20c3e1 20
e45daca1 21 This document applies to version 2.2 of the program named Bobot++.
2e20c3e1 22
ae97d6ec 23 Copyright 2002,2004,2005 Clinton Ebadi
439869bf 24
25 Permission is granted to copy, distribute and/or modify this document
26under the terms of the GNU Free Documentation License, Version 1.1 or
27any later version published by the Free Software Foundation; with no
28Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
29Texts.
30
2e20c3e1 31* Menu:
32
33* Introduction::
ad529fde 34* Configuration::
e07b6b46 35* Using the Bot::
ad529fde 36* Scripting::
37* Concept Index::
38* Function Index::
39* Variable Index::
2e20c3e1 40
c7d9fb19 41 --- The Detailed Node Listing ---
42
43Configuration
44
c7d9fb19 45* Configuration File Placement::
4679dc8b 46* Configuration Files::
c7d9fb19 47
48Configuration Files
49
50* bot.conf::
c8f13c06 51* bot.users::
9b2fe824 52* bot.init::
53* bot.autoexec::
528799bd 54* bot.shit::
c7d9fb19 55
56bot.conf
57
58* server syntax::
59* channel syntax::
60
61Using Bobot++
62
6b59e728 63* Starting the Bot::
9b2fe824 64* Concepts::
65* Built-In Commands::
66
67Concepts
68
5205c0b0 69* User List::
70* Shit List::
71* Spy List::
72* Levels::
73
74Levels
75
c7d9fb19 76* User Levels::
c8f13c06 77* Protection::
78* Automatic Op::
528799bd 79* Shit Levels::
c7d9fb19 80
3fed2165 81Built-In Commands
82
d15caa3b 83* Bot Control Commands::
3fed2165 84* Message Commands::
d15caa3b 85* Channel Control::
86* Spylist Commands::
3fed2165 87* User List Commands::
d15caa3b 88* Server List Commands::
89* Shit List Commands::
90* Channel Info::
91* Scripting Commands::
92* Authentication Commands::
93* Miscellaneous Commands::
3fed2165 94
c7d9fb19 95Scripting
96
97* Adding New Commands::
98* Hooks::
c7d9fb19 99* Sending Messages::
100* Misc Scripting Stuff::
3fed2165 101* Scheme Commands::
102* Query Functions::
c7d9fb19 103
104Hooks
105
106* Creating a Hook::
107* Hook Types::
108
ae97d6ec 109Hook Types
110
111* Received Message Hooks::
112* Sent Message Hooks::
113* DCC CHAT Hooks::
114* Miscellaneous Hooks::
115
c7d9fb19 116Sending Messages
117
118* High Level Message Functions::
119* Low Level Message Functions::
120
3fed2165 121Misc. Scripting Stuff
122
123* Scheme Commands::
124* Query Functions::
125
2e20c3e1 126\1f
ad529fde 127File: bobot++.info, Node: Introduction, Next: Configuration, Prev: Top, Up: Top
2e20c3e1 128
6b59e728 1291 Introduction
130**************
2e20c3e1 131
528799bd 132Bobot++ is a powerful IRC bot written in C++. It can be used standalone
133as a channel maintenence bot, or extended to do almost anything using
134Scheme scripts.
135
136 FIXME: Fill the intro in more?
2e20c3e1 137
ad529fde 138\1f
e07b6b46 139File: bobot++.info, Node: Configuration, Next: Using the Bot, Prev: Introduction, Up: Top
ad529fde 140
6b59e728 1412 Configuration
142***************
ad529fde 143
c8f13c06 144Bobot++ is easy to configure. See the `examples' directory for an
145example configuration.
ad529fde 146
e45daca1 147 The main configuration file is `bot.conf'. There are several
148auxiliary configuration files (a user list, aliases file, ban list, and
149a script autoexec).
150
ad529fde 151* Menu:
152
c7d9fb19 153* Configuration File Placement::
4679dc8b 154* Configuration Files::
155
156\1f
157File: bobot++.info, Node: Configuration File Placement, Next: Configuration Files, Prev: Configuration, Up: Configuration
158
1592.1 Configuration File Placement
160================================
161
162Bobot++ will look in `/etc/bobotpp/default/' for its default config if
163none is specified on the command line. Put the configuration files you
e45daca1 164want to be loaded by default in this directory. If you are not root, or
4679dc8b 165you want to have your own personal configuration, put it in
166`~/.bobotpp/config/default/'.
ad529fde 167
168\1f
4679dc8b 169File: bobot++.info, Node: Configuration Files, Prev: Configuration File Placement, Up: Configuration
ad529fde 170
4679dc8b 1712.2 Configuration Files
6b59e728 172=======================
ad529fde 173
e171dcce 174* Menu:
175
176* bot.conf::
c8f13c06 177* bot.users::
9b2fe824 178* bot.init::
179* bot.autoexec::
528799bd 180* bot.shit::
e171dcce 181
182\1f
c8f13c06 183File: bobot++.info, Node: bot.conf, Next: bot.users, Prev: Configuration Files, Up: Configuration Files
e171dcce 184
4679dc8b 1852.2.1 bot.conf
6b59e728 186--------------
e171dcce 187
e45daca1 188`bot.conf' contains key value pairs separated by `='.
c7d9fb19 189
190 `<key> = <value>'
191
192 Comments are started with a `#' and cause the entire line to be
193ignored. _Note that this only works when the `#' is the first character
194of the line_.
195
196 bot.conf is the main configuration file for a Bobot++. The available
e171dcce 197configuration variables are listed below in the format "VARIABLE
198<default-value>: description"
199
e45daca1 200 A few of the options have more complex syntax, they are documented in
201their own subsections.
202
203* Menu:
204
205* server syntax::
206* channel syntax::
207
528799bd 208 * MAXNICKLENGTH <9>: The maximum length a valid nickname may be.
209 This should be set before setting the bot's nickname if it will be
210 more than nine characters long. Most IRC servers support nicknames
211 longer than nine characters, but Bobot++ still follows the old spec
212 and defaults to nine.
213
e171dcce 214 * NICKNAME <Bobot>: The nickname of the bot (NICK is an alias for
215 NICKNAME)
216
217 * USERNAME <bobot>: The IRC username of the bot
218
219 * CMDCHAR <!>: The character that prefixes commands given to the bot
220 (COMMAND is an alias for CMDCHAR)
221
222 * IRCNAME <I'm a bobot++!>: The IRC name (or 'real name') of the bot
223 (REALNAME is an alias for IRCNAME)
224
225 * USERLIST <bot.users>: Name of the file where the userlist is stored
226
9b2fe824 227 * AUTOEXECFILE <bot.autoexec>: Name of the file containing Scheme
228 code to be executed when the bot starts (only used if the bot is
229 compiled with scripting support)
230
231 * INITFILE <bot.init>: Name of the file containing the default
232 command aliases
233
e45daca1 234 * SHITLIST <bot.shit>: Name of the file where the shitlist (ban
235 list) is stored
e171dcce 236
c7d9fb19 237 * LOGFILE <$LOGDIR/bot.log>: Location of the bot logfile (set this
238 to `/dev/null' to disable logging).
239
e45daca1 240 * SERVER <None>: This specifies the server to which the bot will
241 connect. Note that this has a special syntax *note server syntax::.
c7d9fb19 242
e45daca1 243 * CHANNEL <None>: This specifies the channels the bot will join when
244 it starts up. This has a special syntax *note channel syntax::.
c7d9fb19 245
246
c7d9fb19 247\1f
248File: bobot++.info, Node: server syntax, Next: channel syntax, Prev: bot.conf, Up: bot.conf
249
4679dc8b 2502.2.1.1 server syntax
6b59e728 251.....................
c7d9fb19 252
e45daca1 253The server syntax in `bot.conf' allows you to specify an alternate port
254to connect on, and a password to send the server.
255
256 You may use more than one server line; Bobot++ will attempt to
257connect to the first one, and will connect to the next one in the list
258if it fails. The bot will continue cycling through the server list
259until it is able to connect to one. There is a command (`!cycle') to
260make the bot to cycle servers.
261
262 SERVER = SERVER_NAME [PORT [PASSWORD]]
c7d9fb19 263
264 This will make Bobot++ attempt to connect to SERVER_NAME on port
265PORT with the password PASSWORD. SERVER_NAME should be the address of
e45daca1 266the server. PORT and PASSWORD are optional.
c7d9fb19 267
268\1f
269File: bobot++.info, Node: channel syntax, Prev: server syntax, Up: bot.conf
270
4679dc8b 2712.2.1.2 channel syntax
6b59e728 272......................
c7d9fb19 273
e45daca1 274The channel syntax in `bot.conf' allows you to specify the initial
275modes the bot should set on a channel, the modes the bot should
276maintain, and a key if the channel needs it.
c7d9fb19 277
278 You may have any number of channel lines. When Bobot++ starts it will
e45daca1 279attempt to join and gain operator status in every channel listed.
280
281 CHANNEL = NAME:INITIAL_MODES:MODES_TO_KEEP:CHANNEL_KEY
282
283 The bot will join NAME and set the channel modes to INITIAL_MODES
284(e.g. "nt") if it is able to gain operator status. It will then
285maintain MODES_TO_KEEP. If the channel requires a key to enter simply
286set CHANNEL_KEY. Every argument except for NAME is optional.
c7d9fb19 287
288 A few example lines:
289
e45daca1 290 CHANNEL = #foo:nt:nt:bar
c7d9fb19 291
292 The bot will join `#foo' with the channel key `bar' and will then
293maintain the modes `nt'.
294
e45daca1 295 CHANNEL = #bar:::
e171dcce 296
c7d9fb19 297 The bot will join `#bar' and will not set any modes nor will it
298attempt to maintain any modes.
ad529fde 299
c8f13c06 300\1f
9b2fe824 301File: bobot++.info, Node: bot.users, Next: bot.init, Prev: bot.conf, Up: Configuration Files
c8f13c06 302
528799bd 3032.2.2 bot.users (User List)
304---------------------------
c8f13c06 305
306`bot.users' is the default file name of the userlist. It may be changed
9b2fe824 307in `bot.conf' via the USERLIST option. *You must add an entry for
308yourself manually.* You will probably want to add other entries using
309the IRC command interface as it is more intuitive than editing the file
310by hand.
528799bd 311
312 The file contains lines with the format:
c8f13c06 313
528799bd 314 `HOST_MASK:CHANNEL_MASK:LEVEL:PROTECTION:AUTO-OP:EXPIRATION:PASSWORD'
c8f13c06 315
528799bd 316 * HOST_MASK is the host mask (e.g. `*!*username
c8f13c06 317 .domain.com') of the user
318
528799bd 319 * CHANNEL_MASK is a channel mask of the channels that the user has
c8f13c06 320 priviliges to use the bot in (e.g. `*' for all channels, `#*' for
321 all non-local channel, `#foo*' for all channels starting with
322 "foo," `#bar' for channel "#bar" only, etc.)
323
324 * LEVEL is the user level of the user (*Note User Levels::).
325
326 * PROTECTION is the protection level of the user (*Note
327 Protection::).
328
329 * AUTO-OP is set to control whether a user is automatically given
330 operator priviliges on channel entry (*Note Automatic Op::).
331
528799bd 332 * EXPIRATION is the UNIX timestamp of when the user entry becomes
333 invalid. Setting this to -1 will make the entry permanent.
334
335 * PASSWORD is the password the user must supply to the bot to
336 authenticate. This can be set to `*NONE*' to not have a password.
337
338
339\1f
9b2fe824 340File: bobot++.info, Node: bot.init, Next: bot.autoexec, Prev: bot.users, Up: Configuration Files
341
3422.2.3 bot.init (Command Aliases)
343--------------------------------
344
345This file stores a list of IRC command aliases. The filename may be
346changed in `bot.conf' via the INITFILE option. You use this file to set
347up aliases for IRC commands, e.g. to make `!a' call `!adduser'. This
348way you can save typing for commonly used commands.
349
350 The format of a line in the file is: ALIAS COMMAND
351
352 This will make ALIAS call COMMAND. e.g. `t topic' will make `!t New
353Topic' set the current channel's topic to "New Topic," just as if you
354had used `!topic New Topic'.
355
356\1f
357File: bobot++.info, Node: bot.autoexec, Next: bot.shit, Prev: bot.init, Up: Configuration Files
358
3592.2.4 bot.autoexec (Scheme Init File)
360-------------------------------------
361
362This file is only used when Bobot++ is compiled with scripting support.
363The name of the autoexec file can be changed in `bot.conf' via the
364AUTOEXECFILE option.
365
366 The contents of this file are evaluated by Guile when the bot
367starts. You can use this to do things like loading a few default
368modules when the bot starts.
369
370\1f
371File: bobot++.info, Node: bot.shit, Prev: bot.autoexec, Up: Configuration Files
528799bd 372
9b2fe824 3732.2.5 bot.shit (Ban/Shit List)
528799bd 374------------------------------
375
9b2fe824 376This file stores the ban list. The name may be changed in `bot.conf'
377via the SHITLIST option. You will most likely want to use the IRC
378command interface to edit this file instead of editing it directly.
528799bd 379
380 The file contains lines in the form:
381
382 `HOST_MASK:CHANNEL_MASK:LEVEL:EXPIRATION:REASON'
383
384 * HOST_MASK is the host mask (e.g. `*!*username
385 .domain.com') of the user
386
387 * CHANNEL_MASK is a channel mask of the channels that the user is
388 banned on (e.g. `*' for all channels, `#*' for all non-local
389 channel, `#foo*' for all channels starting with "foo," `#bar' for
390 channel "#bar" only, etc.
391
392 * LEVEL is a number specifying if the bot should not allow the user
393 to gain ops, to kick the user upon joining, or to prevent the user
394 from being debanned by other users. *Note Shit Levels:: for
395 information on the available levels.
396
397 * EXPIRATION is the UNIX timestamp of when the shit entry becomes
398 invalid. This may be set to -1 to make it valid forever.
399
400 * REASON is text that is sent to the user when they are kicked or
401 banned from the channel.
402
c8f13c06 403
ad529fde 404\1f
e07b6b46 405File: bobot++.info, Node: Using the Bot, Next: Scripting, Prev: Configuration, Up: Top
406
6b59e728 4073 Using Bobot++
408***************
e07b6b46 409
9b2fe824 410Using Bobot++ is easy. This chapter covers starting the bot, a few
411Bobot++ specific concepts, and using the built-in commands of the bot.
e07b6b46 412
413* Menu:
414
6b59e728 415* Starting the Bot::
9b2fe824 416* Concepts::
6b59e728 417* Built-In Commands::
e07b6b46 418
419\1f
9b2fe824 420File: bobot++.info, Node: Starting the Bot, Next: Concepts, Prev: Using the Bot, Up: Using the Bot
6b59e728 421
4223.1 Starting the Bot
423====================
424
425The bot is usually installed with the binary name `bobotpp'. It accepts
e45daca1 426the following command line arguments.
6b59e728 427
428 * `[--help][-h]' - Shows detailed help and exits
429
430 * `[--version][-v]' - Shows version information and exits
431
432 * `[--no-background][-b]' - Run bobot++ in the foreground
433
434 * `[--config-file file][-f]' - Use file instead of `bot.conf'
435
436 * `[--config-dir dir][-d]' - Use dir as dir to load config file from
437
438 * `[--config dir][-c]' - Search your config path (defaults to
439 `$HOME/.bobotpp/config/' and then `/etc/bobotpp/') for dir and
440 then loads your config data using dir
441
442 * `[--sys-config dir][-s]' - Looks for config in `/etc/bobotpp/dir'.
443 Note that the user dir is still searched first
444
445 * `[--user-config dir][-u]' - Looks for config in
446 `$HOME/.bobotpp/config/dir/'. Note that the system dir is still
447 searched after this if dir is not found.
448
449 * `[--debug][-D]' Makes Bobot++ print debugging info and run in the
450 foreground
e07b6b46 451
528799bd 452 * `[--debug-scripts][-S]' Enables the Guile debugging evaluator for
4da877a5 453 verbose script errors and backtraces while still running the bot
454 in the background.
455
6b59e728 456 The default configuration is read from
457`$HOME/.bobotpp/config/default/' and then `/etc/bobotpp/default/' if
458the user config is not found.
459
460 The bot defaults to running in the background as a daemon.
461
462\1f
9b2fe824 463File: bobot++.info, Node: Concepts, Next: Built-In Commands, Prev: Starting the Bot, Up: Using the Bot
464
4653.2 Concepts
466============
467
468There are a few general concepts that a user of Bobot++ should know
469about.
470
471* Menu:
472
5205c0b0 473* User List::
474* Shit List::
475* Spy List::
476* Levels::
477
478\1f
479File: bobot++.info, Node: User List, Next: Shit List, Prev: Concepts, Up: Concepts
480
4813.2.1 User List
482---------------
483
484\1f
485File: bobot++.info, Node: Shit List, Next: Spy List, Prev: User List, Up: Concepts
486
4873.2.2 Shit List
488---------------
489
490\1f
491File: bobot++.info, Node: Spy List, Next: Levels, Prev: Shit List, Up: Concepts
492
4933.2.3 Spy List
494--------------
495
496\1f
497File: bobot++.info, Node: Levels, Prev: Spy List, Up: Concepts
498
4993.2.4 Levels
500------------
501
502* Menu:
503
9b2fe824 504* User Levels::
505* Protection::
506* Automatic Op::
507* Shit Levels::
508
509\1f
5205c0b0 510File: bobot++.info, Node: User Levels, Next: Protection, Prev: Levels, Up: Levels
6b59e728 511
5205c0b0 5123.2.4.1 User Levels
513...................
e07b6b46 514
c8f13c06 515There are several user levels available in Bobot++ to provide gradated
516access to commands. `!adduser' and `bot.users' use the numeric code;
e45daca1 517Scheme uses the textual name for the level. By default (if the user is
518not found in the userlist) a user has access to commands with the level
519`bot:user-none'.
c8f13c06 520
521 0. `bot:user-none' - No *built-in* commands may be executed _by
522 default_ (commands may be added from Scheme that can be executed
523 by users of level none and the level required to execute a command
524 may be changed from Scheme).
525
526 1. `bot:user-user' - Will be able to execute most commands but not
527 all and cannot use masks on kicks and bans.
528
529 2. `bot:user-trusted' - For built-ins with a default configuration
530 this user has access to the same set of commands as an `user' but
531 may use masks on kicks and bans. Scheme commands may be added
532 which require a user to be of this level.
533
534 3. `bot:user-friend' - In the default configuration a user who is a
535 friend will be able to do everything short of stopping the bot.
536 Again, there may be user added commands that require a higher user
537 level.
538
539 4. `bot:user-master' - This is the highest user level and has access
540 to every feature of the bot.
541
542
543\1f
5205c0b0 544File: bobot++.info, Node: Protection, Next: Automatic Op, Prev: User Levels, Up: Levels
c8f13c06 545
5205c0b0 5463.2.4.2 Protection
547..................
c8f13c06 548
549A user added via Scheme, the `bot.users' file, or `!adduser' may be
e45daca1 550protected from being deoped, kicked, or banned. The user list and IRC
551commands use the numeric codes, Scheme uses the symbolic names.
c8f13c06 552
e45daca1 553 0. `bot:protection/none' No protection
c8f13c06 554
e45daca1 555 1. `bot:protection/no-ban' No ban. If a user is banned the bot will
556 unban him..
c8f13c06 557
e45daca1 558 2. `bot:protection/no-kick' No kick. The user may still be kicked but
559 the bot will kickban the user who kicked the protected user.
c8f13c06 560
e45daca1 561 3. `bot:protection/no-deop' No deop. The bot will ensure that the
562 user always maintains operator status.
c8f13c06 563
c8f13c06 564\1f
5205c0b0 565File: bobot++.info, Node: Automatic Op, Next: Shit Levels, Prev: Protection, Up: Levels
c8f13c06 566
5205c0b0 5673.2.4.3 Automatic Op
568....................
c8f13c06 569
570A user may be automatically given operator status upon entering a
e45daca1 571channel. Scheme uses the symbolic name, the user list (`bot.users') and
572IRC commands use the numeric value.
573
574 0. `bot:aop/no' Do not automatically op the user
575
576 1. `bot:aop/yes' Do automatically op the user
e07b6b46 577
6b59e728 578\1f
5205c0b0 579File: bobot++.info, Node: Shit Levels, Prev: Automatic Op, Up: Levels
6b59e728 580
5205c0b0 5813.2.4.4 Shit Levels
582...................
528799bd 583
584The shit list and shit list related commands use different levels to
585define how much the bot hates a user. Scheme uses the symbolic names,
586the shit list and IRC commands use the numbers.
587
588 0. `bot:shit/none' The bot doesn't hate the user (this is the normal
589 level)
590
591 1. `bot:shit/no-op' The bot will deop the user any time he gains
592 operator priviliges in the channel
593
594 2. `bot:shit/no-join' The bot will kick and ban the user when he
595 joins the channel
596
597 3. `bot:shit/no-deban' The bot will kick and ban usre when he joins
598 the channel, and will prevent other users from debanning him.
599
600\1f
9b2fe824 601File: bobot++.info, Node: Built-In Commands, Prev: Concepts, Up: Using the Bot
528799bd 602
9b2fe824 6033.3 Built-In Commands
6b59e728 604=====================
605
606Bobot++ has many built-in commands that make it useful without
607scripting support. The reference leaves off the command char; remember
5205c0b0 608to use whatever you defined the command char to be in `bot.conf'.
609
610 If a command needs the channel name then you must specify the channel
611as the first argument to the command when private messaging the bot a
2b0ae8fd 612command. If, however, you are using the command in a channel you may
613omit the channel argument, and the bot will use the current channel.
6b59e728 614
3fed2165 615* Menu:
616
d15caa3b 617* Bot Control Commands::
3fed2165 618* Message Commands::
d15caa3b 619* Channel Control::
620* Spylist Commands::
3fed2165 621* User List Commands::
d15caa3b 622* Server List Commands::
623* Shit List Commands::
624* Channel Info::
625* Scripting Commands::
626* Authentication Commands::
627* Miscellaneous Commands::
3fed2165 628
629\1f
d15caa3b 630File: bobot++.info, Node: Bot Control Commands, Next: Message Commands, Prev: Built-In Commands, Up: Built-In Commands
3fed2165 631
d15caa3b 6323.3.1 Bot Control Commands
633--------------------------
634
2b0ae8fd 635These commands are used to control the behaviour of the bot.
5205c0b0 636
2b0ae8fd 637 -- Command: cycle channel
638 Makes the bot leave and join CHANNEL.
5205c0b0 639
2b0ae8fd 640 -- Command: die
641 Makes the bot stop immediately.
5205c0b0 642
2b0ae8fd 643 -- Command: join channel
644 Makes the bot join CHANNEL.
5205c0b0 645
2b0ae8fd 646 -- Command: nick newnick
647 Makes the bot use nickname NEW-NICK.
5205c0b0 648
2b0ae8fd 649 -- Command: setfloodrate messages-per-second
650 Sets the flood rate to MESSAGES-PER-SECOND. The bot will consider
651 users sending more than MESSAGES-PER-SECOND messges in a second to
652 be flooding and will ignore them.
5205c0b0 653
2b0ae8fd 654 -- Command: setversion version-info
655 Sets the string returned when someone requestions the version info
656 of the bot.
d15caa3b 657
658\1f
659File: bobot++.info, Node: Message Commands, Next: Channel Control, Prev: Bot Control Commands, Up: Built-In Commands
660
6613.3.2 Message Commands
3fed2165 662----------------------
663
2b0ae8fd 664These commands cause the bot to send messages (e.g. sending a message
665to a channel or performing an action). For all commands TARGET may be
666either a user or a channel.
5205c0b0 667
2b0ae8fd 668 -- Command: action target do
669 Makes the bot to perform the action DO in a message sent to TARGET.
5205c0b0 670
2b0ae8fd 671 -- Command: do command
672 Sends a raw irc command. COMMAND is the IRC command you wish to
673 send (e.g. `PRIVMSG #foo Hello!').
5205c0b0 674
2b0ae8fd 675 -- Command: msg target message
676 -- Command: say target message
677 Makes the bot say MESSAGE to TARGET.
3fed2165 678
679\1f
d15caa3b 680File: bobot++.info, Node: Channel Control, Next: Spylist Commands, Prev: Message Commands, Up: Built-In Commands
3fed2165 681
d15caa3b 6823.3.3 Channel Control
683---------------------
3fed2165 684
2b0ae8fd 685 -- Command: ban channel mask
686 Bans MASK from CHANNEL. You must be a trusted user to ban using a
687 host mask, but a normal user may ban individual nicks.
5205c0b0 688
2b0ae8fd 689 -- Command: deban channel mask
1c182346 690 Debans MASK from CHANNEL. You must be a trusted user to deban with
691 a MASK.
5205c0b0 692
2b0ae8fd 693 -- Command: deop channel mask
694 Deops MASK on CHANNEL.
5205c0b0 695
2b0ae8fd 696 -- Command: invite nick channel
697 Invites NICK to CHANNEL.
5205c0b0 698
2b0ae8fd 699 -- Command: keep channel modes
700 Sets the MODES that the bot will keep for CHANNEL.
5205c0b0 701
2b0ae8fd 702 -- Command: kick channel mask reason
703 -- Command: kickban channel mask reason
704 Kicks MASK out of CHANNEL, because of REASON. `kickban' also bans
1c182346 705 MASK.You must be a trusted user to use a mask.
5205c0b0 706
2b0ae8fd 707 -- Command: lock channel
708 Locks topic on CHANNEL
5205c0b0 709
2b0ae8fd 710 -- Command: mode channel modes
711 Sets mode of CHANNEL to the mode string MODES.
5205c0b0 712
2b0ae8fd 713 -- Command: op channel nick
714 Ops NICK on CHANNEL
5205c0b0 715
2b0ae8fd 716 -- Command: part channel
717 Makes the bot leave CHANNEL.
5205c0b0 718
2b0ae8fd 719 -- Command: tban channel mask time
720 -- Command: tkban channel mask time
721 Bans MASK from CHANNEL for TIME seconds. `tkban' also kicks the
722 user. You must be a trusted user to use a mask.
5205c0b0 723
1c182346 724 -- Command: topic channel [topic]
725 Sets the topic in CHANNEL to TOPIC. If TOPIC is not supplied the
726 current topic is sent as a notice to the user calling the command.
5205c0b0 727
1c182346 728 -- Command: unlock channel
729 Unlocks the topic on CHANNEL
d15caa3b 730
731\1f
732File: bobot++.info, Node: Spylist Commands, Next: User List Commands, Prev: Channel Control, Up: Built-In Commands
733
7343.3.4 Spylist Commands
735----------------------
736
5205c0b0 737 * `spylist' Shows the bot's spylist.
738
739 * `spymessage' Adds you to the spylist
740
741 * `rspymessage' Removes you from the spy list.
742
d15caa3b 743
744\1f
745File: bobot++.info, Node: User List Commands, Next: Server List Commands, Prev: Spylist Commands, Up: Built-In Commands
746
7473.3.5 User List Commands
748------------------------
749
2b0ae8fd 750 -- Command: adduser mask
751 Adds the user
5205c0b0 752
2b0ae8fd 753 `deluser' Removes NICK or MASK from the userlist.
5205c0b0 754
2b0ae8fd 755 -- Command: save
756 Saves the userlist.
757
758 `userlist' Shows the bot's userlist
d15caa3b 759
760\1f
761File: bobot++.info, Node: Server List Commands, Next: Shit List Commands, Prev: User List Commands, Up: Built-In Commands
762
7633.3.6 Server List Commands
764--------------------------
765
5205c0b0 766 * `addserver' Adds the server specified by HOST NAME or IP
767 ADDRESS to the server list.
768
769 * `delserver' Deletes server from server list whose number in the
770 server list is SERVER NUMBER.
771
772 * `nextserver' Makes the bot connect to the next server in its
773 server list.
774
775 * `reconnect' Makes the bot reconnect to its current server.
776
777 * `server' Select the server to connect to. SERVER NUMBER is the
778 number of the server in the serverlist.
779
780 * `serverlist' Shows the bot's serverlist.
781
d15caa3b 782
783\1f
784File: bobot++.info, Node: Shit List Commands, Next: Channel Info, Prev: Server List Commands, Up: Built-In Commands
785
7863.3.7 Shit List Commands
787------------------------
788
5205c0b0 789 * `addshit'
790
791 * `delshit' Removes NICK or MASK from the shitlist
792
793 * `shitlist' Shows the bot's shitlist.
794
d15caa3b 795
796\1f
797File: bobot++.info, Node: Channel Info, Next: Scripting Commands, Prev: Shit List Commands, Up: Built-In Commands
798
7993.3.8 Channel Info
800------------------
801
5205c0b0 802 * `banlist'
803
804 * `channels' Prints the channel(s) where the bot is currently.
805
806 * `names' Yes Shows the nicknames and status of users on CHANNEL.
807
808 * `stats' Yes Gives CHANNEL's statistics.
d15caa3b 809
810\1f
811File: bobot++.info, Node: Scripting Commands, Next: Authentication Commands, Prev: Channel Info, Up: Built-In Commands
812
8133.3.9 Scripting Commands
814------------------------
815
5205c0b0 816 * `execute' *Only available if scripting support is enabled*
817
818 * `load' Reloads the userlist from disk.
819
820 * `loadscript' *Only available if scripting support is enabled*
821
d15caa3b 822
823\1f
824File: bobot++.info, Node: Authentication Commands, Next: Miscellaneous Commands, Prev: Scripting Commands, Up: Built-In Commands
825
8263.3.10 Authentication Commands
827------------------------------
828
5205c0b0 829 * `ident' Identifies you on the bot. Note that you should not use
830 this command in public ...
831
832 * `password' Changes your password on the bot. Use `NONE' as
833 password if you want to clear it. Do not use this command in
834 public!
835
d15caa3b 836
837\1f
838File: bobot++.info, Node: Miscellaneous Commands, Prev: Authentication Commands, Up: Built-In Commands
839
8403.3.11 Miscellaneous Commands
841-----------------------------
842
5205c0b0 843 * `alias' Makes an alias, and adds the function NEW NAME, that
844 will do exactly the same command as OLD NAME.
845
846 * `dcclist' Gives the list of all DCC Chat connections.
847
848 * `help'
849
850 * `nslookup' Does a nameserver query about NICK host, HOST or IP
851 ADDRESS.
852
853 * `who' Yes Show your level on CHANNEL
854
855 * `whois' Yes Shows information about NICK on CHANNEL
856
6b59e728 857
e07b6b46 858\1f
859File: bobot++.info, Node: Scripting, Next: Concept Index, Prev: Using the Bot, Up: Top
ad529fde 860
6b59e728 8614 Scripting
862***********
ad529fde 863
5a8b0ec6 864Bobot++'s most powerful feature is its scripting system. You write
ad529fde 865scripts using Guile Scheme. This manual does not cover how to use Guile
866or how to learn Scheme. *Note Guile Reference Manual: (guile)Top, for
867the Guile reference manual and
6b59e728 868`http://www.ccs.neu.edu/home/dorai/t-y-scheme/t-y-scheme.html' for a
ad529fde 869good tutorial on Scheme.
870
439869bf 871 Note that in previous versions the scripting commands where in the
872form `bot-FUNCTION'. They are now in the form `bot:FUNCTION'. The old
873names are still available, but are deprecated and will be removed in
c8f13c06 874Bobot++ 3.0. New commands are only available with the `bot:' prefix.
875The command `perl -pi -e ``s/bot-/bot:/g'' YOUR-FILES' should be enough
876to convert your code to use the new functions.
439869bf 877
ae97d6ec 878 *NOTE*: All arguments to functions and hooks called by the bot are
879strings unless otherwise specified.
880
439869bf 881* Menu:
882
883* Adding New Commands::
884* Hooks::
e07b6b46 885* Sending Messages::
91dddabd 886* Misc Scripting Stuff::
3fed2165 887* Scheme Commands::
888* Query Functions::
439869bf 889
890\1f
891File: bobot++.info, Node: Adding New Commands, Next: Hooks, Prev: Scripting, Up: Scripting
892
6b59e728 8934.1 Adding New Commands
894=======================
439869bf 895
5a8b0ec6 896Adding a new command is simple. To register a new command use
9efc3706 897`bot:addcommand'.
898
899 -- Function: bot:addcommand name func needs-channel? num-of-args
900 min-level
901 The NAME is a string representing the name of the command being
902 added. FUNC is a function accepting NUM-OF-ARGS arguments.
903 NEEDS-CHANNEL? is a bool that is true if the function needs the
904 channel name as its first arg, and false otherwise. NUM-OF-ARGS
905 is the number of args FUNC will take and must be within zero (0)
528799bd 906 and twenty (20). MIN-LEVEL is one of the *Note User Levels::. A
907 user must be at least a MIN-LEVEL user to use the new command.
908 None of the arguments are guaranteed to be passed; if they aren't
909 they are set to the empty string `""'. An example of a new
910 command would be:
9efc3706 911
912 (define (hello channel name)
913 (if (string=? name "")
914 (bot:say channel "Hello world!")
915 (bot:say channel (string-append "Hello " name "!")))
916
917 (bot:addcommand "hello" hello #t 2 0)
918
919 This will display "Hello World!" if called as `!hello' and "Hello
ae97d6ec 920 World USER" if called as `!hello USER'.
439869bf 921
922\1f
528799bd 923File: bobot++.info, Node: Hooks, Next: Sending Messages, Prev: Adding New Commands, Up: Scripting
439869bf 924
6b59e728 9254.2 Hooks
926=========
439869bf 927
5a8b0ec6 928Hooks are a powerful feature of Bobot++. Hooks are a hybrid of ircII
6530edbf 929and tiny fugue (a MUD bot) hooks with a little bit of extra stuff added
02341ea9 930in. A hook is called when a regular expression is matched against a
931message sent to or by the bot.
932
933 Bobot++ uses different hook types for each IRC message type, and also
934includes a hook for accessing raw irc messages. Hooks are tagged with a
935priority and a flag that specifies whether to call the next hook that
936matches after calling the current one or to stop processing.
937
938 Hooks are processed from the highest to lowest priority, with
939fallthrough hooks of equal priority to non-fallthrough hooks being
940executed first.
439869bf 941
942* Menu:
943
944* Creating a Hook::
945* Hook Types::
946
947\1f
948File: bobot++.info, Node: Creating a Hook, Next: Hook Types, Prev: Hooks, Up: Hooks
949
6b59e728 9504.2.1 Creating a Hook
951---------------------
439869bf 952
9efc3706 953To add a new hook you use the function `bot:addhook'.
954
955 -- Function: bot:addhook type regex function [pri fall name]
956 TYPE specifies the type of hook (the types of hooks are listed in
ae97d6ec 957 *Note Hook Types::).
958
959 REGEX is a standard regular expression. If REGEX is matched,
960 FUNCTION will be called.
961
962 FUNCTION will take a different number of args depending on the
963 hook type.
964
965 PRI specifies the priority of the hook--higher priority hooks are
966 executed first. This argument is optional and defaults to `0'.
967
968 FALL is `#t' if the hook is a fallthrough hook and `#f' is the
969 hook is not a fallthrough hook. This arg is also optional and
970 defaults to `#t'.
971
972 NAME is the optional name of the hook that defaults to
973 `"DEFAULT"'. If you set the name then you can have more than one
974 hook that matches the same regexp, as long as they have the same
975 name. E.g. in a log script you could have the regexps for the log
976 function all be `".*"' and set their names to `"log"' to avoid a
977 conflict with other hooks.
439869bf 978
979\1f
980File: bobot++.info, Node: Hook Types, Prev: Creating a Hook, Up: Hooks
981
6b59e728 9824.2.2 Hook Types
983----------------
439869bf 984
ae97d6ec 985The following sections document the different hooks Bobot++ exposes.
986
987 The general format of each hook description is as if it were a
c99c411a 988function to be defined, but these describe the function to be passed to
9efc3706 989`bot:add-hook'. Do _not_ name your functions these names.
439869bf 990
9efc3706 991 That said, here is the list of available hooks functions. FIXME:
992write docs
439869bf 993
ae97d6ec 994* Menu:
995
996* Received Message Hooks::
997* Sent Message Hooks::
998* DCC CHAT Hooks::
999* Miscellaneous Hooks::
1000
1001\1f
1002File: bobot++.info, Node: Received Message Hooks, Next: Sent Message Hooks, Prev: Hook Types, Up: Hook Types
1003
10044.2.2.1 Receieved Message Hooks
1005...............................
1006
1007The following hooks are triggered when a mesage is received by the bot.
1008
9efc3706 1009 -- Function: hooks/action from to action
ae97d6ec 1010 This hook is triggered when someone performs an action.
1011
1012 FROM is the nickname the person that performed the action.
1013
1014 TO is the target of the action, which is either a channel or the
1015 Bot's nick if the user private messages the bot.
1016
1017 ACTION is the text of the action. E.g. if someone did `* foobar
1018 does baz', then ACTION would be the string `"does baz"'.
439869bf 1019
9efc3706 1020 -- Function: hooks/nickname old-nick new-nick
ae97d6ec 1021 This hook is called when someone changes his nickname from
9efc3706 1022 OLD-NICK to NEW-NICK.
439869bf 1023
ae97d6ec 1024 -- Function: hooks/signoff nick message
1025 This hook is called when someone signs off of IRC.
1026
1027 NICK is the nickname of the person signing off.
1028
1029 MESSAGE is his quit message
439869bf 1030
9efc3706 1031 -- Function: hooks/ctcp nick to command rest
ae97d6ec 1032 This hook is called when a CTCP request is received by the bot.
1033
1034 NICK is the nickname of the sender.
1035
1036 TO is the target of the CTCP request. This will either be a
1037 channel the bot is in, or the nickname of the bot.
1038
1039 COMMAND is the CTCP command issued.
1040
1041 REST contains the arguments to the CTCP command.
439869bf 1042
9efc3706 1043 -- Function: hooks/ctcp-reply nick command rest
ae97d6ec 1044 This hook is called when a CTCP REPLY is received. This occurs when
1045 the bot has sent a CTCP request to another client. The CTCP REPLY
1046 is always addressed to the bot directly.
439869bf 1047
ae97d6ec 1048 NICK is the nickname of the person who replied.
439869bf 1049
ae97d6ec 1050 COMMAND is the command to which NICK is replying.
1051
1052 REST contains the body of the reply.
1053
1054 -- Function: hooks/disconnect server intentional
1055 This is called when the bot is disconnected from a server.
1056
1057 SERVER is the hostname of the server from which the bot was
1058 disconnected.
1059
1060 INTENTIONAL is a flag set to `#t' when the bot disonnected from
1061 the server as the result of a command (issued by a user from IRC,
1062 SIGHUP, or from a script), or `#f' when the bot disconnected from
1063 the server unintentionally..
439869bf 1064
9efc3706 1065 -- Function: hooks/invite nick channel
ae97d6ec 1066 This hook is called when a user invited the bot to join a channel.
1067
1068 NICK is the nickname of the user who sent the invite.
1069
1070 CHANNEL is the channel to which the bot was invited.
439869bf 1071
9efc3706 1072 -- Function: hooks/join nick channel
ae97d6ec 1073 This is called when a user or the bot joins a channel.
1074
1075 NICK is the nickname of the user who joined CHANNEL. This may be
1076 the bot's nickname (the IRC server sends the JOIN command back to
1077 the the bot after it joins a channel).
1078
1079 CHANNEL is the channel that was joined
439869bf 1080
9efc3706 1081 -- Function: hooks/kick target from channel reason
ae97d6ec 1082 This hook is called when a user, including the bot, is kicked out
1083 of a channel.
1084
1085 TARGET is the nick of the user who was kicked. This may be the
1086 bot's nick.
1087
1088 FROM is the nick of the user who issued the kick. This may also be
1089 the bot's nick.
1090
1091 CHANNEL is the channel the kick was issued in.
1092
1093 REASON is the reason the user was kicked.
439869bf 1094
9efc3706 1095 -- Function: hooks/part nick channel
ae97d6ec 1096 This hook is called when a user parts a channel.
1097
1098 NICK is the user who parted the channel. This may be the bot.
1099
1100 CHANNEL is the channel from which the user parted.
1101
1102 -- Function: hooks/mode nick target modes
1103 This hook is called when someone sets the modes of TARGET.
439869bf 1104
ae97d6ec 1105 NICK is the user who set the modes. This may be the bot.
439869bf 1106
ae97d6ec 1107 TARGET is the target of the MODE command. This may be a channel or
1108 a user. If it is a user, it may be the bot.
1109
1110 MODES is the MODE string.
1111
1112 -- Function: hooks/message nick message
1113 This hook is called when someone sends a private message to the
1114 bot.
1115
1116 NICK is the nickname of the user who sent the message.
1117
1118 MESSAGE is the message the user sent.
439869bf 1119
9efc3706 1120 -- Function: hooks/notice nick message
ae97d6ec 1121 This hook is called when a user send a private notice to the bot.
1122
1123 NICK is the user who sent the notice.
1124
1125 MESSAGE is the message the user sent.
439869bf 1126
ae97d6ec 1127 -- Function: hooks/public nick channel message
1128 This hook is called when a user sends a normal message to a
1129 channel.
439869bf 1130
ae97d6ec 1131 NICK is the user who sent the message.
1132
1133 CHANNEL is the channel to which the message was sent.
1134
1135 MESSAGE is the message that was sent.
1136
1137 -- Function: hooks/public-notice nick channel message
1138 This hook is called when a user send a notice to a channel.
1139
1140 NICK is the user who sent the notice.
1141
1142 CHANNEL is the channel to which the notice was sent.
1143
1144 MESSAGE is the message that was sent.
439869bf 1145
9efc3706 1146 -- Function: hooks/raw raw-message
ae97d6ec 1147 This hook is called every time a message is received. This matches
1148 on the raw message text and passes the hook function the raw IRC
1149 message.
439869bf 1150
ae97d6ec 1151 RAW-MESSAGE is the raw IRC message.
439869bf 1152
9efc3706 1153 -- Function: hooks/topic nick channel new-topic
ae97d6ec 1154 This hook is called when a user changes the topic in a channel.
1155
1156 NICK is the user who set the topic. This may be the bot.
1157
1158 CHANNEL is the channel that's topic was changed.
1159
1160 NEW-TOPIC is the new topic.
1161
1162\1f
1163File: bobot++.info, Node: Sent Message Hooks, Next: DCC CHAT Hooks, Prev: Received Message Hooks, Up: Hook Types
439869bf 1164
ae97d6ec 11654.2.2.2 Sent Message Hooks
1166..........................
439869bf 1167
ae97d6ec 1168These hooks are called when the bot sends a message. MYNICK is always
1169the bot's nick and will not be documented in each hook description.
1170
1171 -- Function: hooks/send/public mynick channel message
1172 This hook is called when the bot sends a normal message to a
1173 channel.
1174
1175 CHANNEL is the channel to which the bot sent the message.
1176
1177 MESSAGE is the message the bot sent.
1178
1179 -- Function: hooks/send/message mynick to message
1180 This hook is called when the bot sends a private message to a user.
1181
1182 TO is the nick of the user to whom the message was sent.
1183
1184 MESSAGE is the message that was sent.
439869bf 1185
9efc3706 1186 -- Function: hooks/send/action mynick to message
ae97d6ec 1187 This hook is called when the bot sents an action to a channel or a
1188 user.
1189
1190 TO is the channel or nick of the user to which the action was sent.
1191
1192 MESSAGE is the text of the action.
439869bf 1193
9efc3706 1194 -- Function: hooks/send/ctcp mynick to command message
ae97d6ec 1195 This hook is called when the bot sends a CTCP message _other than_
1196 an ACTION to a channel or user.
1197
1198 TO is the channel or nick of the user to which the CTCP was sent.
1199
1200 COMMAND is the CTCP command that was sent.
1201
1202 MESSAGE is a string containing the arguments to the CTCP command.
1203
528799bd 1204 -- Function: hooks/send/who who
1205 This is called when the bot sends a WHO message. The regex is
1206 matched on WHO, which is also passed as the only argument to your
1207 function.
1208
1209 WHO is the channel or nick that was WHOed.
1210
1211 -- Function: hooks/send/whois nick
1212 This is called when the bot sends a WHOIS message. The regex is
1213 matched on NICK, which is also passed as the only argument to your
1214 function.
1215
1216 NICK is the nickname of the person who was WHOISed.
1217
ae97d6ec 1218\1f
1219File: bobot++.info, Node: DCC CHAT Hooks, Next: Miscellaneous Hooks, Prev: Sent Message Hooks, Up: Hook Types
1220
12214.2.2.3 DCC CHAT Hooks
1222......................
1223
1224These hooks are called when a user initializes a DCC CHAT and when the
1225bot receives messages from the user in a DCC CHAT.
0b7a49e2 1226
9efc3706 1227 -- Function: hooks/dcc/chat-begin from
ae97d6ec 1228 This hook is called when a user begins a DCC CHAT with the bot.
9efc3706 1229 FROM is the user's address in the form `nick!user@host'.
0b7a49e2 1230
133eff7a 1231 -- Function: hooks/dcc/chat-end address
1232 This hook is called when a DCC CHAT is purged after being idle for
1233 a while, or when the user closes the DCC CHAT. As such, you cannot
1234 write any more data to the DCC CHAT.
1235
1236 ADDRESS is the address (nick!user@host) of the person on the other
1237 side of the DCC.
1238
9efc3706 1239 -- Function: hooks/dcc/chat-message from message
ae97d6ec 1240 This hook is called when a user sends a message to the bot through
1241 a DCC CHAT.
1242
1243 FROM is the user's address in the form `nick!user@host'.
1244
1245 MESSAGE is the message the user sent to the bot.
1246
1247\1f
1248File: bobot++.info, Node: Miscellaneous Hooks, Prev: DCC CHAT Hooks, Up: Hook Types
1249
12504.2.2.4 Miscellaneous Hooks
1251...........................
1252
1253 -- Function: hooks/flood nick
1254 This hook is called when a user is detected flooding the bot.
1255
1256 NICK is the nickname of the user flooding the bot.
1257
1258 -- Function: hooks/timer time
1259 This hook is called once a minute. The regex is *not* used.
1260
1261 TIME is the in zero-padded `hh:mm' format.
439869bf 1262
e07b6b46 1263\1f
528799bd 1264File: bobot++.info, Node: Sending Messages, Next: Misc Scripting Stuff, Prev: Hooks, Up: Scripting
e07b6b46 1265
528799bd 12664.3 Sending Messages
6b59e728 1267====================
e07b6b46 1268
5a8b0ec6 1269There are several types of messages you can send with Bobot++ from
528799bd 1270scripts. They are split into High and Low level message sending
1271functions. Most bots will only use the high level functions, but the
1272low level ones are provided for when a bot needs to do things like send
1273raw IRC messages or CTCP commands.
e07b6b46 1274
1275* Menu:
1276
1277* High Level Message Functions::
1278* Low Level Message Functions::
1279
1280\1f
1281File: bobot++.info, Node: High Level Message Functions, Next: Low Level Message Functions, Prev: Sending Messages, Up: Sending Messages
1282
528799bd 12834.3.1 "High Level" Message Functions
6b59e728 1284------------------------------------
e07b6b46 1285
9efc3706 1286 -- Function: bot:action channel message
1287 Send an "action" type MESSAGE to CHANNEL
1288
528799bd 1289 -- Function: bot:msg target message
1290 -- Function: bot:say target message
1291 Send a public or private message to TARGET.
1292
1293 TARGET may be a channel or a nickname.
1294
1295 In versions of Bobot++ prior to 2.1.8 `bot:say' could only send to
1296 channels, and `bot:msg' could only send private messages to users.
1297 They are aliases of the same command now, but it may be worth
1298 using them as they used to for clarity.
e07b6b46 1299
5aec4622 1300 -- Function: bot:notice target message
1301 Sends MESSAGE as a NOTICE to TARGET. TARGET may be a user (nick)
528799bd 1302 or a channel.
5aec4622 1303
e07b6b46 1304\1f
1305File: bobot++.info, Node: Low Level Message Functions, Prev: High Level Message Functions, Up: Sending Messages
1306
528799bd 13074.3.2 "Low Level" Message Functions
6b59e728 1308-----------------------------------
e07b6b46 1309
5a8b0ec6 1310The "Low Level" messaging functions allow you to do things like send
fed59248 1311CTCP messages. You probably want to read rfc 2812 and the CTCP spec
e07b6b46 1312before using these. If you have no idea what these do, read rfc 2812
1313(IRC Client Protocol) and CTCP spec. These functions all return
1314`*unspecified*' always, so don't use the return value for anything.
1315
c6e7af05 1316 -- Function: bot:ctcp to command message
4679dc8b 1317 TO is the target of your CTCP message, COMMAND is the CTCP
1318 command, and MESSAGE is the message (or arguments) of the command.
1319 Make sure to `bot:ctcp-quote' the message!
e07b6b46 1320
c6e7af05 1321 -- Function: bot:ctcp-reply to command message
4679dc8b 1322 TO is the target of your CTCP reply, COMMAND is the CTCP command,
1323 and MESSAGE is the message (or arguments) of the command. Make
1324 sure to `bot:ctcp-quote' the message!
d56bdd22 1325
1326 This is used to reply to a ctcp that the bot has received.
1327
91dddabd 1328\1f
3fed2165 1329File: bobot++.info, Node: Misc Scripting Stuff, Next: Scheme Commands, Prev: Sending Messages, Up: Scripting
91dddabd 1330
528799bd 13314.4 Misc. Scripting Stuff
6b59e728 1332=========================
91dddabd 1333
5a8b0ec6 1334These are a few useful things that I thought people writing scripts
91dddabd 1335might want to know.
1336
1337 If you want to execute code when the bot exits, just do `add-hook!
1338bot:exit-hook THUNK' where THUNK is an argumentless procedure (a
1339thunk). When the bot exits your thunk will be called.
1340
3fed2165 1341* Menu:
9efc3706 1342
3fed2165 1343* Scheme Commands::
1344* Query Functions::
1345
1346\1f
1347File: bobot++.info, Node: Scheme Commands, Next: Query Functions, Prev: Misc Scripting Stuff, Up: Scripting
1348
13494.5 Scheme Commands
1350===================
1351
1352These scheme functions are the same as the commands. They allow you to
1353execute bot commands from scheme scripts.
9efc3706 1354
1355 -- Function: bot:adduser nick-or-mask cbannel-mask level prot auto-op
1356 Adds an user to the userlist, for a `nick!user@host' matching the
1357 one given, on a channel matching the CHANNELMASK given.
1358
1359 The LEVEL can be: The PROT can be: The AUTO-OP can be:
1360 0 - No level 0 - No protection 0 - No auto-op
1361 1 - User 1 - No ban 1 - Op on join
1362 2 - Trusted User 2 - No kick
1363 3 - Friend 3 - No deop
1364 4 - Master
1365
1366
1367 -- Function: bot:addserver hostname ip-address [portnumber]
1368 Adds the server specified by HOSTNAME or IP-ADDRESS to the server
1369 list.
1370
1371 -- Function: bot:addshit nick-or-mask channel-mask level [time reason]
1372 Adds an user to the shitlist, for a nick!user@host matching the
1373 one given, on a channel matching the CHANNELMASK given.
1374
1375 The LEVEL can be:
1376 0 - No shit
1377 1 - No op
1378 2 - Kick and Ban on join
1379 3 - Kick and Ban on join, no deban
1380
1381
1382 -- Function: bot:ban channel mask-or-nick
1c182346 1383 Bans MASK or NICK from CHANNEL. You must be a trusted user to ban
1384 with a MASK.
9efc3706 1385
1386 -- Function: bot:change-command-level nick-or-mask channel-mask
1387 new-level
1388 Gives NICK or MASK level NEW-LEVEL on channel(s) CHANNEL-MASK.
1389 Note that you can not change level for someone whose level is
1390 greater than yours, and that you can not give a level greater than
1391 yours.
1392
1393 -- Function: bot:cycle channel
1394 Makes the bot leave and join CHANNEL.
1395
1396 -- Function: bot:deban channel mask-or-nick
1c182346 1397 Debans MASK or NICK from CHANNEL. You must be a trusted user to
9efc3706 1398 deban with a MASK.
1399
1400 -- Function: bot:delserver server-number
1401 Deletes server from server list whose number in the server list is
1402 SERVER-NUMBER
1403
1404 -- Function: bot:deluser nick-or-mask channel-mask
1405 Removes NICK or MASK from the userlist.
1406
1407 -- Function: bot:delshit nick-or-mask channel-mask
1408 Removes NICK or MASK from the shitlist.
1409
1410 -- Function: bot:deop channel mask-or-nick
1411 Deops MASK or NICK on CHANNEL.
1412
1413 -- Function: bot:die reason
1414 Makes the bot stop immediately.
1415
1416 -- Function: bot:do ?
1417
1418 -- Function: bot:invite channel nick
1419 Invites NICK on CHANNEL.
1420
1421 -- Function: bot:join channel
1422 Makes the bot join CHANNEL.
1423
1424 -- Function: bot:keep channel modes
1425 Sets the MODES that the bot will keep for CHANNEL. See also STATS.
1426
1427 -- Function: bot:kick channel mask-or-nick [reason]
1c182346 1428 Kicks MASK or NICK out of CHANNEL, because of REASON. You must be
1429 a trusted user to use a MASK.
9efc3706 1430
1431 -- Function: bot:kickban channel mask-or-nick [reason]
1432 Bans then kicks MASK or NICK out of CHANNEL, because of REASON.
1c182346 1433 You must be a trusted user to use a MASK.
9efc3706 1434
1435 -- Function: bot:lock channel
1436 Locks topic on CHANNEL.
1437
9efc3706 1438 -- Function: bot:mode channel mode-string
1439 Sends MODE-STRING as mode for CHANNEL.
1440
1441 -- Function: bot:nextserver
1442 Makes the bot connect to the next server in its server list.
1443
1444 -- Function: bot:nick nick
1445 Makes the bot use nickname NICK.
1446
1447 -- Function: bot:op channel nick
1448 Ops NICK on CHANNEL.
1449
1450 -- Function: bot:part channel
1451 Makes the bot leave CHANNEL.
1452
1453 -- Function: bot:reconnect
1454 Makes the bot reconnect to its current server.
1455
1456 -- Function: bot:server server-number
1457 Select the server to connect to. SERVER-NUMBER is the number of
1458 the server in the serverlist.
1459
1460 -- Function: bot:setfloodrate ?
1461
1462 -- Function: bot:setversion ?
1463
1464 -- Function: bot:tban channel nick-or-mask time
1465 Bans NICK or MASK from CHANNEL for TIME seconds.
1466
1467 -- Function: bot:tkban channel nick-or-mask time [reason]
1468 Bans NICK or MASK from CHANNEL for TIME seconds, then kicks
1469 him/them because of REASON.
1470
1471 -- Function: bot:topic channel topic
1472 If no TOPIC is given, prints CHANNEL's topic. Otherwise, the bot
1473 will change CHANNEL's topic to TOPIC.
1474
1475 -- Function: bot:unlock channel
1476 Makes the bot unlock topic on CHANNEL.
1477
c6e7af05 1478 -- Function: bot:who target
1479 Sends a WHO command to TARGET. TARGET may be either a channel or a
1480 user.
1481
1482 -- Function: bot:whois nick
1483 Sends a WHOIS command to NICK. NICK *must* be a nickname, you
1484 cannot send a WHOIS to a channel.
1485
3fed2165 1486 -- Function: bot:delcommand
1487 [ Probably deletes a command added with `bot:addcommand' ? ]
1488
1489\1f
1490File: bobot++.info, Node: Query Functions, Prev: Scheme Commands, Up: Scripting
1491
14924.6 Query Functions
1493===================
1494
1495 [ I didn't know where to put any of these, so I just stuck them in
1496 here.
1497
1498 There probably needs to be several sections added, like dealing
1499 with users (kicking, added, etc), dealing with the bot (channels,
1500 nickname of the bot, etc), server issues (serverlist), useful
1501 tools (nslookup, whois), and do on. ]
1502
1503 These functions allow scripts to get various bits of information.
1504
1505 -- Function: bot:logport
1506 [ Probably returns the log port? ]
1507
9efc3706 1508 -- Function: bot:getnickname
1509 [ Gets the bot's nickname? ]
1510
1511 -- Function: bot:getserver
1512
1513 -- Function: bot:getserverlist
1514
1515 -- Function: bot:flush
1516 [ Flushes the socket to the server? ]
1517
1518 -- Function: bot:flushport
1519 [ Flushes the log port? ]
1520
1521 -- Function: bot:random ?
1522 [ Returns a random number? What range? Why? ]
1523
9efc3706 1524 -- Function: bot:addtimer ? ?
1525
1526 -- Function: bot:deltimer ?
1527
1528 -- Function: bot:dcc-chat-send ? ?
1529
1530 [ And what about the stuff defined in `bobot-utils.scm' ? I just
1531 added it here so it could be somewhere. There should also be a
1532 section dealing with modules. How to use them. What module
1533 scripts are in. What module bobot++ provided primites are in.
1534 And so on. ]
1535
1536 -- Function: bot:log . messages
1537 Write as many MESSAGES as you want to the log. If the arg is a
1538 thunk it will be executed and it's output will be written to the
1539 log.
1540
1541 -- Function: bot:load file
1542
1543 -- Function: bot:load-module module-spec
1544
1545 -- Function: bot:use-module module-spec
1546
1547 -- Function: bot:match-not-channel regex
3fed2165 1548 `bot:match-not-channel' adds a prefix regex to your REGEX so it
1549 doesn't match the sender or channel in a PUBLIC message
9efc3706 1550
1551 -- Function: bot:match-to-me regex
3fed2165 1552 `bot:match-to-me' matches text that was addressed to the bot with a
1553 ':', ',', or nothing after the bot name.
9efc3706 1554
1555 -- Function: bot:sent-to-me? message
1556
1557 -- Function: bot:ctcp-quote message
1558 Returns the CTCP quoted message Input _MUST NOT_ contain the
1559 trailing `\r\n' (it is added by the message sending code).
1560
1561 -- Variable: %bot:loadpath
1562
1563 -- Function: %bot:load-extensions
1564
ad529fde 1565\1f
1566File: bobot++.info, Node: Concept Index, Next: Function Index, Prev: Scripting, Up: Top
1567
1568Concept Index
1569*************
1570
6b59e728 1571\0\b[index\0\b]
ad529fde 1572* Menu:
e07b6b46 1573
6b59e728 1574* Background on Hooks: Hooks. (line 6)
e07b6b46 1575
ad529fde 1576\1f
1577File: bobot++.info, Node: Function Index, Next: Variable Index, Prev: Concept Index, Up: Top
1578
1579Function Index
1580**************
1581
6b59e728 1582\0\b[index\0\b]
ad529fde 1583* Menu:
e07b6b46 1584
3fed2165 1585* %bot:load-extensions: Query Functions. (line 75)
2b0ae8fd 1586* action: Message Commands. (line 11)
1587* adduser: User List Commands. (line 7)
1588* ban: Channel Control. (line 7)
9efc3706 1589* bot:action: High Level Message Functions.
2b0ae8fd 1590 (line 7)
9efc3706 1591* bot:addcommand: Adding New Commands. (line 11)
1592* bot:addhook: Creating a Hook. (line 9)
3fed2165 1593* bot:addserver: Scheme Commands. (line 22)
1594* bot:addshit: Scheme Commands. (line 26)
1595* bot:addtimer: Query Functions. (line 36)
1596* bot:adduser: Scheme Commands. (line 10)
1597* bot:ban: Scheme Commands. (line 37)
1598* bot:change-command-level: Scheme Commands. (line 42)
c6e7af05 1599* bot:ctcp: Low Level Message Functions.
1600 (line 13)
3fed2165 1601* bot:ctcp-quote: Query Functions. (line 69)
c6e7af05 1602* bot:ctcp-reply: Low Level Message Functions.
1603 (line 18)
3fed2165 1604* bot:cycle: Scheme Commands. (line 48)
1605* bot:dcc-chat-send: Query Functions. (line 40)
1606* bot:deban: Scheme Commands. (line 51)
1607* bot:delcommand: Scheme Commands. (line 141)
1608* bot:delserver: Scheme Commands. (line 55)
1609* bot:delshit: Scheme Commands. (line 62)
1610* bot:deltimer: Query Functions. (line 38)
1611* bot:deluser: Scheme Commands. (line 59)
1612* bot:deop: Scheme Commands. (line 65)
1613* bot:die: Scheme Commands. (line 68)
1614* bot:do: Scheme Commands. (line 71)
1615* bot:flush: Query Functions. (line 27)
1616* bot:flushport: Query Functions. (line 30)
1617* bot:getnickname: Query Functions. (line 20)
1618* bot:getserver: Query Functions. (line 23)
1619* bot:getserverlist: Query Functions. (line 25)
1620* bot:invite: Scheme Commands. (line 73)
1621* bot:join: Scheme Commands. (line 76)
1622* bot:keep: Scheme Commands. (line 79)
1623* bot:kick: Scheme Commands. (line 82)
1624* bot:kickban: Scheme Commands. (line 86)
1625* bot:load: Query Functions. (line 53)
1626* bot:load-module: Query Functions. (line 55)
1627* bot:lock: Scheme Commands. (line 90)
1628* bot:log: Query Functions. (line 48)
1629* bot:logport: Query Functions. (line 17)
1630* bot:match-not-channel: Query Functions. (line 59)
1631* bot:match-to-me: Query Functions. (line 63)
1632* bot:mode: Scheme Commands. (line 93)
9efc3706 1633* bot:msg: High Level Message Functions.
2b0ae8fd 1634 (line 10)
3fed2165 1635* bot:nextserver: Scheme Commands. (line 96)
1636* bot:nick: Scheme Commands. (line 99)
5aec4622 1637* bot:notice: High Level Message Functions.
2b0ae8fd 1638 (line 21)
3fed2165 1639* bot:op: Scheme Commands. (line 102)
1640* bot:part: Scheme Commands. (line 105)
1641* bot:random: Query Functions. (line 33)
1642* bot:reconnect: Scheme Commands. (line 108)
9efc3706 1643* bot:say: High Level Message Functions.
2b0ae8fd 1644 (line 11)
3fed2165 1645* bot:sent-to-me?: Query Functions. (line 67)
1646* bot:server: Scheme Commands. (line 111)
1647* bot:setfloodrate: Scheme Commands. (line 115)
1648* bot:setversion: Scheme Commands. (line 117)
1649* bot:tban: Scheme Commands. (line 119)
1650* bot:tkban: Scheme Commands. (line 122)
1651* bot:topic: Scheme Commands. (line 126)
1652* bot:unlock: Scheme Commands. (line 130)
1653* bot:use-module: Query Functions. (line 57)
1654* bot:who: Scheme Commands. (line 133)
1655* bot:whois: Scheme Commands. (line 137)
2b0ae8fd 1656* cycle: Bot Control Commands.
1657 (line 9)
1658* deban: Channel Control. (line 11)
1659* deop: Channel Control. (line 15)
1660* die: Bot Control Commands.
1661 (line 12)
1662* do: Message Commands. (line 14)
ae97d6ec 1663* hooks/action: Received Message Hooks.
1664 (line 9)
1665* hooks/ctcp: Received Message Hooks.
1666 (line 31)
1667* hooks/ctcp-reply: Received Message Hooks.
1668 (line 43)
1669* hooks/dcc/chat-begin: DCC CHAT Hooks. (line 10)
133eff7a 1670* hooks/dcc/chat-end: DCC CHAT Hooks. (line 14)
1671* hooks/dcc/chat-message: DCC CHAT Hooks. (line 22)
ae97d6ec 1672* hooks/disconnect: Received Message Hooks.
1673 (line 54)
1674* hooks/flood: Miscellaneous Hooks. (line 7)
1675* hooks/invite: Received Message Hooks.
1676 (line 65)
1677* hooks/join: Received Message Hooks.
1678 (line 72)
1679* hooks/kick: Received Message Hooks.
1680 (line 81)
1681* hooks/message: Received Message Hooks.
1682 (line 112)
1683* hooks/mode: Received Message Hooks.
1684 (line 102)
1685* hooks/nickname: Received Message Hooks.
1686 (line 20)
1687* hooks/notice: Received Message Hooks.
1688 (line 120)
1689* hooks/part: Received Message Hooks.
1690 (line 95)
1691* hooks/public: Received Message Hooks.
1692 (line 127)
1693* hooks/public-notice: Received Message Hooks.
1694 (line 137)
1695* hooks/raw: Received Message Hooks.
1696 (line 146)
1697* hooks/send/action: Sent Message Hooks. (line 25)
1698* hooks/send/ctcp: Sent Message Hooks. (line 33)
1699* hooks/send/message: Sent Message Hooks. (line 18)
1700* hooks/send/public: Sent Message Hooks. (line 10)
528799bd 1701* hooks/send/who: Sent Message Hooks. (line 43)
1702* hooks/send/whois: Sent Message Hooks. (line 50)
ae97d6ec 1703* hooks/signoff: Received Message Hooks.
1704 (line 24)
1705* hooks/timer: Miscellaneous Hooks. (line 12)
1706* hooks/topic: Received Message Hooks.
1707 (line 153)
2b0ae8fd 1708* invite: Channel Control. (line 18)
1709* join: Bot Control Commands.
1710 (line 15)
1711* keep: Channel Control. (line 21)
1712* kick: Channel Control. (line 24)
1713* kickban: Channel Control. (line 25)
1714* lock: Channel Control. (line 29)
1715* mode: Channel Control. (line 32)
1716* msg: Message Commands. (line 18)
1717* nick: Bot Control Commands.
1718 (line 18)
1719* op: Channel Control. (line 35)
1720* part: Channel Control. (line 38)
1721* save: User List Commands. (line 12)
1722* say: Message Commands. (line 19)
1723* setfloodrate: Bot Control Commands.
1724 (line 21)
1725* setversion: Bot Control Commands.
1726 (line 26)
1727* tban: Channel Control. (line 41)
1728* tkban: Channel Control. (line 42)
1c182346 1729* topic: Channel Control. (line 46)
1730* unlock: Channel Control. (line 50)
e07b6b46 1731
ad529fde 1732\1f
1733File: bobot++.info, Node: Variable Index, Prev: Function Index, Up: Top
1734
1735Variable Index
1736**************
1737
6b59e728 1738\0\b[index\0\b]
ad529fde 1739* Menu:
2e20c3e1 1740
3fed2165 1741* %bot:loadpath: Query Functions. (line 73)
1742* exit-hook: Misc Scripting Stuff. (line 9)
e07b6b46 1743
1744
2e20c3e1 1745\1f
1746Tag Table:
e45daca1 1747Node: Top\7f538
5205c0b0 1748Node: Introduction\7f2446
1749Node: Configuration\7f2758
1750Node: Configuration File Placement\7f3202
1751Node: Configuration Files\7f3703
1752Node: bot.conf\7f3939
1753Node: server syntax\7f6125
1754Node: channel syntax\7f6923
1755Node: bot.users\7f7967
1756Node: bot.init\7f9428
1757Node: bot.autoexec\7f10087
1758Node: bot.shit\7f10588
1759Node: Using the Bot\7f11840
1760Node: Starting the Bot\7f12172
1761Node: Concepts\7f13678
1762Node: User List\7f13953
1763Node: Shit List\7f14076
1764Node: Spy List\7f14199
1765Node: Levels\7f14317
1766Node: User Levels\7f14487
1767Node: Protection\7f15866
1768Node: Automatic Op\7f16585
1769Node: Shit Levels\7f16999
1770Node: Built-In Commands\7f17725
2b0ae8fd 1771Node: Bot Control Commands\7f18601
1772Node: Message Commands\7f19456
1773Node: Channel Control\7f20141
1c182346 1774Node: Spylist Commands\7f21695
1775Node: User List Commands\7f22009
1776Node: Server List Commands\7f22377
1777Node: Shit List Commands\7f23092
1778Node: Channel Info\7f23387
1779Node: Scripting Commands\7f23755
1780Node: Authentication Commands\7f24120
1781Node: Miscellaneous Commands\7f24572
1782Node: Scripting\7f25133
1783Node: Adding New Commands\7f26222
1784Node: Hooks\7f27533
1785Node: Creating a Hook\7f28371
1786Node: Hook Types\7f29577
1787Node: Received Message Hooks\7f30141
1788Node: Sent Message Hooks\7f35368
1789Node: DCC CHAT Hooks\7f37252
1790Node: Miscellaneous Hooks\7f38292
1791Node: Sending Messages\7f38741
1792Node: High Level Message Functions\7f39273
1793Node: Low Level Message Functions\7f40136
1794Node: Misc Scripting Stuff\7f41189
1795Node: Scheme Commands\7f41687
1796Node: Query Functions\7f46331
1797Node: Concept Index\7f48557
1798Node: Function Index\7f48776
1799Node: Variable Index\7f59377
2e20c3e1 1800\1f
1801End Tag Table