Merge Irssi 0.8.16-rc1
[silc.git] / apps / irssi / docs / perl.txt
1  Installation problems
2  ---------------------
3
4 You'll need to have perl support compiled with irssi. If "/LOAD"
5 doesn't show perl in list of loaded modules, you have a problem. See
6 INSTALL file for information about perl problems.
7
8
9  Running scripts
10  ---------------
11
12 Scripts are run with /SCRIPT LOAD command, or the default /RUN alias.
13 "/SCRIPT" shows list of running script, and /SCRIPT UNLOAD can unload
14 scripts.
15
16 Scripts should be placed to ~/.irssi/scripts/ or
17 /usr/local/lib/irssi/scripts/ (or depending on where irssi was
18 installed) directories. After that /RUN script_name should work, you
19 don't need to add the .pl suffix.
20
21
22  Irssi's signals
23  ---------------
24
25 Irssi is pretty much based on sending and handling different signals.
26 Like when you receive a message from server, say
27
28   :nick!user@there.org PRIVMSG you :blahblah
29
30 Irssi will first send a signal:
31
32   "server incoming", SERVER_REC, "nick!user@there PRIVMSG ..."
33
34 You probably don't want to use this signal. Default handler for this
35 signal interprets the header and sends a signal:
36
37   "server event", SERVER_REC, "PRIVMSG ...", "nick", "user@there.org"
38
39 You probably don't want to use this either, since this signal's default
40 handler parses the event string and sends a signal:
41
42   "event privmsg", SERVER_REC, "you :blahblah", "nick", "user@there.org"
43
44 You can at any point grab the signal, do whatever you want to do with
45 it and optionally stop it from going any further by calling
46 Irssi::signal_stop();
47
48 For example:
49
50   sub event_privmsg {
51     # $data = "nick/#channel :text"
52     my ($server, $data, $nick, $address) = @_;
53     my ($target, $text) = split(/ :/, $data, 2);
54
55     Irssi::signal_stop() if ($text =~ /free.*porn/ || $nick =~ /idiot/);
56   }
57
58 Irssi::signal_add("event privmsg", "event_privmsg")
59
60 This will hide all public or private messages that match the regexp
61 "free.*porn" or the sender's nick contain the word "idiot". Yes, you
62 could use /IGNORE instead for both of these :)
63
64 You can also use signal_add_last() if you wish to let the Irssi's internal
65 functions be run before yours.
66
67 A list of signals that irssi sends can be found from signals.txt file.
68
69
70  Creating/replacing /COMMANDS
71  ----------------------------
72
73 You can create your own commands, or replace existing ones with
74 Irssi::command_bind(). The command handling work internally pretty much
75 the same as signal handlers, so if you replace existing command and don't
76 wish to let it run, call Irssi::signal_stop().
77
78 Here's an example:
79
80   # Usage: /HELLO [<nick>]
81   sub cmd_hello {
82     # data - contains the parameters for /HELLO
83     # server - the active server in window
84     # witem - the active window item (eg. channel, query)
85     #         or undef if the window is empty
86     my ($data, $server, $witem) = @_;
87
88     if (!$server || !$server->{connected}) {
89       Irssi::print("Not connected to server");
90       return;
91     }
92
93     if ($data) {
94       $server->command("MSG $data Hello!");
95     } elsif ($witem && ($witem->{type} eq "CHANNEL" ||
96                         $witem->{type} eq "QUERY")) {
97       # there's query/channel active in window
98       $witem->command("MSG ".$witem->{name}." Hello!");
99     } else {
100       Irssi::print("Nick not given, and no active channel/query in window");
101     }
102   }
103
104   Irssi::command_bind('hello', 'cmd_hello');
105
106
107  Message levels
108  --------------
109
110 Several functions expect message levels. They're used to roughly
111 classify messages. They're used by a lot of things including logging,
112 ignoring, highlighting, etc. so you should use as good level as
113 possible. It's possible to have several levels in one message, like
114 ACTIONS+PUBLIC or ACTIONS+MSGS.
115
116 Here's all the levels that irssi supports currently:
117
118   CRAP, MSGS, PUBLIC, NOTICES, SNOTES, CTCPS, ACTIONS, JOINS, PARTS
119   QUITS, KICKS, MODES, TOPICS, WALLOPS, INVITES, NICKS, DCC, DCCMSGS,
120   CLIENTNOTICE, CLIENTCRAP, CLIENTERROR
121
122 And a few special ones that could be included with the levels above:
123
124   HILIGHT - text is highlighted
125   NOHILIGHT - don't check highlighting for this message
126   NO_ACT - don't trigger channel activity when printing this message
127   NEVER - never ignore or log this message (not a good idea usually)
128
129 You can use them with a MSGLEVEL_ prefix, for example:
130
131   $server->print("#channel", 'Hello, world', MSGLEVEL_CLIENTCRAP);
132
133 Writes text to #channel window with CLIENTCRAP level.
134
135
136  Window items
137  ------------
138
139 Meaning of "window" should be pretty clear, but "window item" is
140 something I couldn't really figure out a better name for :) They're
141 simply something that's inside a window, a channel or a query usually.
142 Windows can have multiple items inside them. It's possible to create
143 non-channel/query window items too, currently the third possible window
144 item is created by /EXEC -interactive.
145
146 In scripts, I think you can quite safely assume that the window item is
147 query or channel if the script is intended to be run in one of them.
148 Stupid users won't probably have other window items, and smart users
149 know where to run the script, or at least later figure out why it
150 didn't work :)
151
152
153  Functions that you can use in Irssi's Perl scripts
154  --------------------------------------------------
155
156 If there's a "Xxxx::" text before the command, it means that it belongs to
157 that package. Like "Server::command" means that you should either call it as
158   Irssi::Server::command($server, $cmd);
159 or more easily:
160   $server->command($cmd);
161
162 Commands that don't have the Xxxx prefix are called as Irssi::command();
163
164 Information from most objects can be fetched with $object->{data}, for
165 example current nick in server could be read with $server->{nick}. List
166 of all the information that are in objects are in "Object->{}" sections
167 below.
168
169 Commands are split in two groups, generic ones that could be used with
170 any chat protocol, and IRC specific commands. If you want to use IRC
171 specific commands, or use IRC specific ->{data} in your scripts, you'll
172 need to add "use Irssi::Irc" to your scripts. IRC specific commands are
173 listed after the generic ones.
174
175
176  *** General
177
178 Window active_win() - return active window
179 Server active_server() - return server in active window
180
181 windows() - return list of all windows
182 servers() - return list of all servers
183 reconnects() - return list of all server reconnections
184 channels() - return list of all channels
185 queries() - return list of all queries
186 commands() - return list of all commands
187 logs() - return list of all log files
188 ignores() - returns list of all ignores
189
190 Server::channels() - return list of channels in server
191 Server::queries() - return list of queries in server
192
193 print(str[, level])
194 Server::print(channel, str[, level])
195 Window::print(str[, level])
196 Windowitem::print(str[, level])
197   Print `str'. Default level is MSGLEVEL_CLIENTNOTICE.
198
199 command(cmd)
200 Server::command(cmd)
201 Window::command(cmd)
202 Windowitem::command(cmd)
203   Send a command `cmd' (in current channel). The '/' char isn't needed.
204
205
206  *** Themes
207
208 You can have user configurable texts in scripts that work just like
209 irssi's internal texts that can be changed in themes.
210
211 First you'll have to register the formats:
212
213 Irssi::theme_register([
214   'format_name', '{hilight my perl format!}',
215   'format2', 'testing.. nick = $0, channel = $1'
216 ]);
217
218 Printing happens with one of the functions:
219
220 printformat(level, format, ...)
221 Window::printformat(level, format, ...)
222 Server::printformat(target, level, format, ...)
223 Windowitem::printformat(level, format, ...)
224
225 For example:
226
227   $channel->printformat(MSGLEVEL_CRAP, 'format2',
228                         'nick', $channel->{name});
229
230
231  *** Settings
232
233 settings_get_str(key)
234 settings_get_int(key)
235 settings_get_bool(key)
236 settings_get_time(key)
237 settings_get_level(key)
238 settings_get_size(key)
239   Return value for setting.
240
241 settings_set_str(key, value)
242 settings_set_int(key, value)
243 settings_set_bool(key, value)
244 settings_set_time(key, value)
245 settings_set_level(key, value)
246 settings_set_size(key, value)
247   Set value for setting.
248   If you change the settings of another module/script with one of these, you
249   must emit a "setup changed" signal afterwards.
250
251 settings_add_str(section, key, def)
252 settings_add_int(section, key, def)
253 settings_add_bool(section, key, def)
254 settings_add_time(section, key, def)
255 settings_add_level(section, key, def)
256 settings_add_size(section, key, def)
257   Create new setting.
258
259 settings_remove(key)
260   Remove a setting.
261
262
263  *** Signals
264
265 signal_emit(signal, ...)
266   Send signal `signal'. You can give 6 parameters at maximum.
267
268 signal_continue(...)
269   Continue currently emitted signal with different parameters.
270
271 signal_add(signal, func)
272   Bind `signal' to function `func'.
273
274 signal_add_first(signal, func)
275   Bind `signal' to function `func'. Call `func' as soon as possible.
276
277 signal_add_last(signal, func)
278   Bind `signal' to function `func'. Call `func' as late as possible.
279
280 signal_remove(signal, func)
281   Unbind `signal' from function `func'.
282
283 signal_stop()
284   Stop the signal that's currently being emitted.
285
286 signal_stop_by_name(signal)
287   Stop the signal with name `signal' that's currently being emitted.
288
289 signal_register(hash)
290   Register parameter types for one or more signals.
291   `hash' must map one or more signal names to references to arrays
292   containing 0 to 6 type names. Some recognized type names include
293   int for integers, intptr for references to integers and string for
294   strings. For all standard signals see src/perl/perl-signals-list.h
295   in the source code (this is generated by src/perl/get-signals.pl).
296
297   Any signals that were already registered are unaffected.
298
299   Registration is required to get any parameters to signals written in
300   Perl and to emit and continue signals from Perl.
301
302   *** timeouts / IO listener / pidwait
303
304 timeout_add(msecs, func, data)
305   Call `func' every `msecs' milliseconds (1000 = 1 second) with
306   parameter `data'. Returns tag which can be used to stop the timeout.
307
308 timeout_add_once(msecs, func, data);
309   Call `func' once after `msecs' milliseconds (1000 = 1 second)
310   with parameter `data'. Returns tag which can be used to stop the timeout.
311
312 timeout_remove(tag)
313   Remove timeout with tag.
314
315 input_add(source, condition, func, data)
316   Call `func' with parameter `data' when specified IO happens.
317   `source' is the file handle that is being listened. `condition' can
318   be INPUT_READ, INPUT_WRITE or both. Returns tag which can be used to
319   remove the listener.
320
321 input_remove(tag)
322   Remove listener with tag.
323
324 pidwait_add(pid)
325   Adds `pid' to the list of processes to wait for. The pid must identify
326   a child process of the irssi process. When the process terminates, a
327   "pidwait" signal will be sent with the pid and the status from
328   waitpid(). This is useful to avoid zombies if your script forks.
329
330 pidwait_remove(pid)
331   Removes `pid' from the list of processes to wait for. Terminated
332   processes are removed automatically, so it is usually not necessary
333   to call this function.
334
335  *** Message levels
336
337 level2bits(level)
338   Level string -> number
339
340 bits2level(bits)
341   Level number -> string
342
343 combine_level(level, str)
344   Combine level number to level string ("+level -level").
345   Return new level number.
346
347
348  *** Commands
349
350 Command->{}
351   cmd - Command name
352   category - Category
353
354 command_bind(cmd, func[, category])
355   Bind command `cmd' to call function `func'. `category' is the
356   category where the command is displayed in /HELP.
357
358 command_runsub(cmd, data, server, item)
359   Run subcommands for `cmd'. First word in `data' is parsed as
360   subcommand. `server' is Irssi::Server rec for current
361   Irssi::Windowitem `item'.
362   
363   Call command_runsub in handler function for `cmd' and bind
364   with command_bind("`cmd' `subcmd'", subcmdfunc[, category]);
365
366 command_unbind(cmd, func)
367   Unbind command `cmd' from function `func'.
368
369 command_set_options(cmd, data)
370   Set options for command `cmd' to `data'. `data' is a string of
371   space separated words which specify the options. Each word can be
372   optionally prefixed with one of the following character:
373
374   '-': optional argument
375   '+': argument required
376   '@': optional numeric argument
377
378 command_parse_options(cmd, data)
379   Parse options for command `cmd' in `data'. It returns a reference to
380   an hash table with the options and a string with the remaining part
381   of `data'. On error it returns the undefined value.
382
383
384  *** Windows
385
386 UI::Window->{}
387   refnum - Reference number
388   name - Name
389
390   width - Width
391   height - Height
392
393   history_name - Name of named historylist for this window
394
395   active - Active window item
396   active_server - Active server
397
398   servertag - active_server must be either undef or have this same tag
399               (unless there's items in this window). This is used by
400               /WINDOW SERVER -sticky
401   level - Current window level
402
403   sticky_refnum - 1 if reference number is sticky
404
405   data_level - Current data level
406   hilight_color - Current activity hilight color
407
408   last_timestamp - Last time timestamp was written in window
409   last_line - Last time text was written in window
410
411   theme_name - Active theme in window, undef = default
412
413 UI::TextDest->{}
414   window - Window where the text will be written
415   server - Target server
416   target - Target channel/query/etc name
417   level - Text level
418
419   hilight_priority - Priority for the hilighted text
420   hilight_color - Color for the hilighted text
421
422
423 Window::items()
424   Return a list of items in window.
425
426 Window
427 window_create(automatic)
428 Windowitem::window_create(automatic)
429   Create a new window.
430
431 Window::destroy()
432   Destroy the window.
433
434 Irssi::Window
435 Windowitem::window()
436   Returns parent window for window item.
437
438 Window
439 window_find_name(name)
440   Find window with name.
441
442 Window
443 window_find_refnum(refnum)
444   Find window with reference number.
445
446 Window
447 window_find_level(level)
448 Server::window_find_level(level)
449   Find window with level.
450
451 Window
452 window_find_closest(name, level)
453 Server::window_find_closest(name, level)
454   Find window that matches best to given arguments. `name' can be either
455   window name or name of one of the window items.
456
457 Window
458 window_find_item(name)
459 Server::window_find_item(name)
460   Find window which contains window item with specified name/server.
461
462 Windowitem
463 window_item_find(name)
464 Server::window_item_find(name)
465 Window::item_find(server, name)
466   Find window item that matches best to given arguments.
467
468 window_refnum_prev(refnum, wrap)
469 window_refnum_next(refnum, wrap)
470   Return refnum for window that's previous/next in windows list.
471
472 windows_refnum_last()
473   Return refnum for last window.
474
475 Window::item_add(item, automatic)
476 Window::item_remove(item)
477 Window::item_destroy(item)
478   Add/remove/destroy window item
479
480 Window::set_active()
481   Set window active.
482
483 Window::change_server(server)
484 Window::set_refnum(refnum)
485 Window::set_name(name)
486 Window::set_history(name)
487 Window::set_level(level)
488   Change server/refnum/name/history/level in window.
489
490 Windowitem::set_active()
491   Change window item active in parent window.
492
493 Window::item_prev()
494 Window::item_next()
495   Change to previous/next window item.
496
497 Windowitem::change_server(server)
498   Change server in window item.
499
500 Windowitem::is_active()
501   Returns 1 if window item is the active item in parent window.
502
503 Window::get_active_name()
504   Return active item's name, or if none is active, window's name
505
506
507  *** Server Connects
508
509 Connect->{}
510   type - "SERVER CONNECT" text
511   chat_type - String ID of chat protocol, for example "IRC"
512
513   address - Address where we connected (irc.blah.org)
514   port - Port where we connected
515   chatnet - Chat network
516
517   password - Password we used in connection.
518   wanted_nick - Nick which we would prefer to use
519   username - User name
520   realname - Real name
521
522 Connect
523 server_create_conn(address[, port=6667[, password=''[, nick=''[, channels='']]]])
524   Create new server connection.
525
526
527  *** Server functions
528
529 Server->{}
530   type - "SERVER" text
531   chat_type - String ID of chat protocol, for example "IRC"
532
533   (..contains all the same data as Connect above..)
534
535   connect_time - Time when connect() to server finished
536   real_connect_time - Time when server sent "connected" message
537
538   tag - Unique server tag
539   nick - Current nick
540
541   connected - Is connection finished? 1|0
542   connection_lost - Did we lose the connection (1) or was
543                     the connection just /DISCONNECTed (0)
544
545   rawlog - Rawlog object for the server
546
547   version - Server version
548   last_invite - Last channel we were invited to
549   server_operator - Are we server operator (IRC op) 1|0
550   usermode_away - Are we marked as away? 1|0
551   away_reason - Away reason message
552   banned - Were we banned from this server? 1|0
553   lag - Current lag to server in milliseconds
554
555 Server
556 Connect::connect()
557   Connect to server.
558
559 Server::disconnect()
560   Disconnect from server.
561
562 Server
563 server_find_tag(tag)
564   Find server with tag
565
566 Server
567 server_find_chatnet(chatnet)
568   Find first server that is in `chatnet'
569
570 Server::isnickflag(flag)
571   Returns 1 if flag is a nick mode flag (@, + or % in IRC)
572
573 Server::ischannel(data)
574   Returns 1 if start of `data' seems to mean channel.
575
576 Server::get_nick_flags()
577   Returns nick flag characters in order: op, voice, halfop ("@+%" in IRC).
578
579 Server::send_message(target, msg, target_type)
580   Sends a message to nick/channel. target_type 0 = channel, 1 = nick
581
582
583  *** Server reconnections
584
585 Reconnect->{}
586   type - "RECONNECT" text
587   chat_type - String ID of chat protocol, for example "IRC"
588
589   (..contains all the same data as Connect above..)
590
591   tag - Unique numeric tag
592   next_connect - Unix time stamp when the next connection occurs
593
594
595  *** Chat networks
596
597 Chatnet->{}
598   type - "CHATNET" text
599   chat_type - String ID of chat protocol, for example "IRC"
600
601   name - name of chat network
602
603   nick - if not empty, nick preferred in this network
604   username - if not empty, username preferred in this network
605   realname - if not empty, realname preferred in this network
606
607   own_host - address to use when connecting this network
608   autosendcmd - command to send after connecting to this network
609
610 chatnet_find(name)
611   Find chat network with name.
612
613
614  *** Server redirections
615
616 This is a powerful feature of Irssi that I haven't seen in other IRC
617 clients. You can EASILY grab the server's reply for a command you send
618 to server without any horrible kludges.
619
620 redirect_register(command, remote, timeout, start, stop, opt)
621    Register new redirection command. By default irssi has already
622    registered at least: whois, whowas, who, list, ison, userhost, ping,
623    "mode channel" (/MODE #channel), "mode b" (/MODE #channel b), "mode e"
624    and "mode I".
625
626    `command' specifies the name of the command to register, it doesn't
627    have to be a real command name, but something you just specify to
628    redirect_event() when using this redirection.
629
630    `remote' specifies if the command is by default a remote command
631    (eg. sent to another server). redirect_event() may override this.
632
633    `timeout' - If remote is TRUE, specifies how many seconds to wait for
634    reply before aborting.
635
636    `start', `stop', `opt' - hash references with "event" => argpos entries.
637    List of events that start and stop this redirection.
638    Start event list may be empty, but there must be at least one
639    stop event. Optional events are checked only if they are received
640    immediately after one of the stop-events. `argpos' specifies the
641    word number in event string which is compared to wanted argument,
642    -1 = don't compare, TRUE always.
643
644   Example (already done by irssi):
645
646   Irssi::redirect_register('mode channel', 0, 0,
647         undef, # no start events
648         { # stop events
649           "event 324" => 1, # MODE-reply
650           "event 403" => 1, # no such channel
651           "event 442" => 1, # "you're not on that channel"
652           "event 479" => 1  # "Cannot join channel (illegal name)"
653         }, { # optional events
654           "event 329", 1 # Channel create time
655         } );
656
657 Server::redirect_event(command, count, arg, remote, failure_signal, signals)
658    Specify that the next command sent to server will be redirected.
659    NOTE: This command MUST be called before sending the command to server.
660
661    `command' - Name of the registered redirection that we're using.
662
663    `count' - How many times to execute the redirection. Some commands may
664    send multiple stop events, like MODE #a,#b.
665
666    `arg' - The argument to be compared in event strings. You can give multiple
667    arguments separated with space.
668
669    `remote' - Specifies if the command is a remote command, -1 = use default.
670
671    `failure_signal' - If irssi can't find the stop signal for the redirection,
672    this signal is called.
673
674    `signals' - hash reference with "event" => "redir signal" entries.
675    If the event is "", all the events belonging to the redirection but not
676    specified here, will be sent there.
677
678   Example:
679
680   # ignore all events generated by whois query, except 311.
681   $server->redirect_event("whois", 1, "cras", 0, undef, {
682                           "event 311" => "redir whois",
683                           "" => "event empty" });
684   $server->send_raw("WHOIS :cras");
685
686
687  *** Window items
688
689 Windowitem->{}
690   type - Type of the window item, for example "CHANNEL" or "QUERY"
691   chat_type - String ID of chat protocol, for example "IRC"
692
693   server - Active server for item
694   name - Name of the item
695
696   createtime - Time the window item was created
697   data_level - 0=no new data, 1=text, 2=msg, 3=highlighted text
698   hilight_color - Color of the last highlighted text
699
700
701  *** Channels
702
703 Channel->{}
704   type - "CHANNEL" text
705   chat_type - String ID of chat protocol, for example "IRC"
706
707   (..contains all the same data as Windowitem above..)
708
709   topic - Channel topic
710   topic_by - Nick who set the topic
711   topic_time - Timestamp when the topic was set
712
713   no_modes - Channel is modeless
714   mode - Channel mode
715   limit - Max. users in channel (+l mode)
716   key - Channel key (password)
717
718   chanop - You are channel operator
719   names_got - /NAMES list has been received
720   wholist - /WHO list has been received
721   synced - Channel is fully synchronized
722
723   joined - JOIN event for this channel has been received
724   left - You just left the channel (for "channel destroyed" event)
725   kicked - You was just kicked out of the channel (for
726            "channel destroyed" event)
727
728 Server::channels_join(channels, automatic)
729   Join to channels in server. `channels' may also contain keys for
730   channels just like with /JOIN command. `automatic' specifies if this
731   channel was joined "automatically" or if it was joined because join
732   was requested by user. If channel join is "automatic", irssi doesn't
733   jump to the window where the channel was joined.
734
735
736 Channel::destroy()
737   Destroy channel.
738
739 Channel
740 channel_find(channel)
741   Find channel from any server.
742
743 Channel
744 Server::channel_find(channel)
745   Find channel from specified server.
746
747
748  *** Nick list
749
750 Nick->{}
751   type - "NICK" text
752   chat_type - String ID of chat protocol, for example "IRC"
753
754   nick - Plain nick
755   host - Host address
756   realname - Real name
757   hops - Hop count to the server the nick is using
758
759   gone, serverop - User status, 1 or 0
760   op, voice, halfop - Channel status, 1 or 0
761
762   last_check - timestamp when last checked gone/ircop status.
763   send_massjoin - Waiting to be sent in a "massjoin" signal, 1 or 0
764
765 Nick
766 Channel::nick_insert(nick, op, voice, send_massjoin)
767   Add nick to nicklist.
768
769 Channel::nick_remove(nick)
770   Remove nick from nicklist.
771
772 Nick
773 Channel::nick_find(nick)
774   Find nick from nicklist.
775
776 Nick
777 Channel::nick_find_mask(mask)
778   Find nick mask from nicklist, wildcards allowed.
779
780 Channel::nicks()
781   Return a list of all nicks in channel.
782
783 Server::nicks_get_same(nick)
784   Return all nick objects in all channels in server. List is in format:
785   Channel, Nick, Channel, ...
786
787
788  *** Queries
789
790 Query->{}
791   type - "QUERY" text
792   chat_type - String ID of chat protocol, for example "IRC"
793
794   (..contains all the same data as Windowitem above..)
795
796   address - Host address of the queries nick
797   server_tag - Server tag used for this nick (doesn't get erased if
798                server gets disconnected)
799   unwanted - 1 if the other side closed or some error occured (DCC chats)
800
801 Query
802 query_create(chat_type, server_tag, nick, automatic)
803   Create a new query.
804
805 Query::destroy()
806   Destroy the query.
807
808 Query::query_change_server(server)
809   Change the active server of the query.
810
811 Query
812 query_find(nick)
813   Find query from any server.
814
815 Query
816 Server::query_find(nick)
817   Find query from specified server.
818
819
820  *** Masks
821
822 You should use the Server version of the function if possible, since
823 with different chat protocols the mask matching could be different.
824
825 mask_match(mask, nick, user, host)
826 Server::mask_match(mask, nick, user, host)
827   Return 1 if `mask' matches nick!user@host.
828
829 mask_match_address(mask, nick, address)
830 Server::mask_match_address(mask, nick, address)
831   Return 1 if `mask' matches nick!address.
832
833 masks_match(masks, nick, address)
834 Server::masks_match(masks, nick, address)
835   Return 1 if any mask in the `masks' (string separated with spaces)
836   matches nick!address.
837
838
839  *** Rawlog
840
841 Rawlog->{}
842   logging - The rawlog is being written to file currently
843   nlines - Number of lines in rawlog
844
845 Rawlog
846 rawlog_create()
847   Create a new rawlog.
848
849 Rawlog::destroy()
850   Destroy the rawlog.
851
852 Rawlog::get_lines()
853   Returns all lines in rawlog.
854
855 rawlog_set_size(lines)
856   Set the default rawlog size for new rawlogs.
857
858 Rawlog::open(filename)
859   Start logging new messages in rawlog to specified file.
860
861 Rawlog::close()
862   Stop logging to file.
863
864 Rawlog::save(filename)
865   Save the current rawlog history to specified file.
866
867 Rawlog::input(str)
868   Send `str' to raw log as input text.
869
870 Rawlog::output(str)
871   Send `str' to raw log as output text.
872
873 Rawlog::redirect(str)
874   Send `str' to raw log as redirection text.
875
876
877  *** Logging
878
879 Log->{}
880   fname - Log file name
881   real_fname - The actual opened log file (after %d.%m.Y etc. are expanded)
882   opened - Log file is open
883   level - Log only these levels
884   last - Timestamp when last message was written
885   autoopen - Automatically open log at startup
886   failed - Opening log failed last time
887   temp - Log isn't saved to config file
888   items - List of log items
889
890 Logitem->{}
891   type - 0=target, 1=window refnum
892   name - Name
893   servertag - Server tag
894
895 Log
896 log_create_rec(fname, level)
897   Create log file.
898
899 Log::update()
900   Add log to list of logs / save changes to config file.
901
902 Log
903 log_find(fname)
904   Find log with file name.
905
906 Log::close()
907   Destroy log file.
908
909 Log::start_logging()
910   Open log file and start logging.
911
912 Log::stop_logging()
913   Close log file.
914
915 Log::item_add(type, name, server)
916   Add log item to log.
917
918 Log::item_destroy(item)
919   Remove log item from log.
920
921 Logitem
922 Log::item_find(type, item, server)
923   Find item from log.
924
925
926  *** Ignores
927
928 Ignore->{}
929   mask - Ignore mask
930   servertag - Ignore only in server
931   channels - Ignore only in channels (list of names)
932   pattern - Ignore text pattern
933
934   level - Ignore level
935
936   exception - This is an exception ignore
937   regexp - Regexp pattern matching
938   fullword - Pattern matches only full words
939
940 ignore_add_rec(ignore)
941   Add ignore record.
942
943 ignore_update_rec(ignore)
944   Update ignore record in configuration
945
946 ignore_check(nick, host, channel, text, level)
947 Server::ignore_check(nick, host, channel, text, level)
948   Return 1 if ignoring matched.
949
950
951  *** /EXEC processes
952
953 Process->{}
954   id - ID for the process
955   name - Name for the process (if given)
956   args - The command that is being executed
957
958   pid - PID for the executed command
959   target - send text with /msg <target> ...
960   target_win - print text to this window
961
962   shell - start the program via /bin/sh
963   notice - send text with /notice, not /msg if target is set
964   silent - don't print "process exited with level xx"
965
966
967  ***
968  *** IRC specific functions. All objects below this are prefixed with Irc::
969  ***
970
971  *** IRC servers
972
973 Irc::Server->{}
974   (..contains all the same data as core Server object..)
975   real_address - Address the IRC server gives
976   usermode - User mode in server
977   userhost - Your user host in server
978
979 Irc::Connect->{}
980   (..contains all the same data as core Connect object..)
981   alternate_nick - Alternate nick to use if default nick is taken.
982
983 Connect::connect()
984   Connect to IRC server.
985
986 Server::get_channels(server)
987   Return a string of all channels (and keys, if any have them) in server,
988   like "#a,#b,#c,#d x,b_chan_key,x,x" or just "#e,#f,#g"
989
990 Server::send_raw(cmd)
991   Send raw message to server, it will be flood protected so you
992   don't need to worry about it.
993
994 Server::send_raw_now(cmd)
995   Send raw message to server immediately without flood protection.
996
997 Server::send_raw_split(cmd, nickarg, max_nicks)
998   Split the `cmd' into several commands so `nickarg' argument has only
999   `max_nicks' number of nicks.
1000
1001   Example:
1002     $server->send_raw_split("KICK #channel nick1,nick2,nick3 :byebye", 3, 2);
1003
1004   Irssi will send commands "KICK #channel nick1,nick2 :byebye" and
1005   "KICK #channel nick3 :byebye" to server.
1006
1007 Server::ctcp_send_reply(data)
1008   Send CTCP reply. This will be "CTCP flood protected" so if there's too
1009   many CTCP requests in buffer, this reply might not get sent. The data
1010   is the full raw command to be sent to server, like
1011     "NOTICE nick :\001VERSION irssi\001"
1012
1013 Server::isupport(name)
1014   Returns the value of the named item in the ISUPPORT (005) numeric to the
1015   script. If the item is not present returns undef, if the item has no value
1016   then "" is returned use defined $server->isupport("name") if you need to
1017   check whether a property is present.
1018   See http://tools.ietf.org/id/draft-brocklesby-irc-isupport-03.txt
1019   for more information on the ISUPPORT numeric.
1020
1021  *** IRC channels
1022
1023 Ban->{}
1024   ban - The ban
1025   setby - Nick of who set the ban
1026   time - Timestamp when ban was set
1027
1028 Channel::bans()
1029   Return a list of bans in channel.
1030
1031 Channel::ban_get_mask(nick)
1032   Get ban mask for `nick'.
1033
1034 Channel::banlist_add(ban, nick, time)
1035    Add a new ban to channel.
1036
1037 Channel::banlist_remove(ban)
1038    Remove a ban from channel.
1039
1040
1041  *** DCC
1042
1043 Dcc->{}
1044   type - Type of the DCC: chat, send, get
1045   orig_type - Original DCC type that was sent to us - same as type except
1046               GET and SEND are swapped
1047   created - Time stamp when the DCC record was created
1048
1049   server - Server record where the DCC was initiated.
1050   servertag - Tag of the server where the DCC was initiated.
1051   mynick - Our nick to use in DCC chat.
1052   nick - Other side's nick name.
1053
1054   chat - Dcc chat record if the request came through DCC chat
1055   target - Who the request was sent to - your nick, channel or empty
1056            if you sent the request
1057   arg - Given argument .. file name usually
1058
1059   addr - Other side's IP address.
1060   port - Port we're connecting in.
1061
1062   starttime - Unix time stamp when the DCC transfer was started
1063   transfd - Bytes transferred
1064
1065 Dcc::Chat->{}
1066   id - Unique identifier - usually same as nick
1067   mirc_ctcp - Send CTCPs without the CTCP_MESSAGE prefix
1068   connection_lost - Other side closed connection
1069
1070 Dcc::Get->{}
1071   (..contains all the same data as core Dcc object..)
1072   size - File size
1073   skipped - Bytes skipped from start (resuming file)
1074
1075   get_type - What to do if file exists? 0=default, 1=rename, 2=overwrite,
1076              3=resume
1077   file - The real file name which we use.
1078   file_quoted - 1 if file name was received quoted ("file name")
1079
1080 Dcc::Send->{}
1081   (..contains all the same data as core Dcc object..)
1082   size - File size
1083   skipped - Bytes skipped from start (resuming file)
1084
1085   file_quoted - 1 if file name was received quoted ("file name")
1086   waitforend - File is sent, just wait for the replies from the other side
1087   gotalldata - Got all acks from the other end
1088
1089
1090 dccs() - return list of all dcc connections
1091
1092 Dcc::destroy()
1093   Destroy DCC connection.
1094
1095 Dcc
1096 dcc_find_item(type, nick, arg)
1097   Find DCC connection.
1098
1099 Dcc
1100 dcc_find_by_port(nick, port)
1101   Find DCC connection by port.
1102
1103 Dcc
1104 Windowitem::get_dcc(item)
1105   If `item' is a query of a =nick, return DCC chat record of nick.
1106
1107 Dcc::chat_send(data)
1108   Send `data' to dcc chat.
1109
1110 Server::dcc_ctcp_message(target, notice, msg)
1111 Dcc::ctcp_message(target, notice, msg)
1112   Send a CTCP message/notify to target.
1113
1114
1115  *** Netsplits
1116
1117 Netsplit->{}
1118   nick - Nick
1119   address - Nick's host
1120   destroy - Timestamp when this record should be destroyed
1121   server - Netsplitserver object
1122   channels - list of channels (Netsplitchannel objects) the nick was in
1123
1124 Netsplitserver->{}
1125   server - The server nick was in
1126   destserver - The other server where split occured.
1127   count - Number of splits in server
1128
1129 Netsplitchannel->{}
1130   name - Channel name
1131   nick - Nick object
1132
1133 Netsplit
1134 Server::netsplit_find(nick, address)
1135   Check if nick!address is on the other side of netsplit. Netsplit records
1136   are automatically removed after 30 minutes (current default)..
1137
1138 Nick
1139 Server::netsplit_find_channel(nick, address, channel)
1140   Find nick record for nick!address in channel `channel'.
1141
1142
1143  *** Notify list
1144
1145 Notifylist->{}
1146   mask - Notify nick mask
1147   away_check - Notify away status changes
1148   idle_check_time - Notify when idle time is reset and idle was bigger
1149                     than this (seconds)
1150   ircnets - List of ircnets (strings) the notify is checked
1151
1152 notifies() - Return list of all notifies
1153
1154 Notifylist
1155 notifylist_add(mask, ircnets, away_check, idle_check_time)
1156   Add new item to notify list.
1157
1158 notifylist_remove(mask)
1159   Remove item from notify list.
1160
1161 Notifylist
1162 notifylist_find(mask, ircnet)
1163   Find notify.
1164
1165 Server
1166 notifylist_ison(nick, serverlist)
1167   Check if `nick' is in IRC. `serverlist' is a space separated
1168   list of server tags. If it's empty string, all servers will be checked.
1169
1170 Server::notifylist_ison_server(nick)
1171   Check if `nick' is on IRC server.
1172
1173 Notifylist::ircnets_match(ircnet)
1174   Returns 1 if notify is checked in `ircnet'.
1175
1176  *** Proxy clients
1177
1178 Client->{}
1179   nick - nick of the client
1180   host - host of the client
1181   proxy_address - address of the proxy server
1182   server - Irc::Server for which we proxy to this client
1183   pass_sent - whether the client already send a PASS command
1184   user_sent - whether the client already send a USER command
1185   connected - whether the client is connected and ready
1186   want_ctcp - whether the client wants to receive CTCPs
1187   ircnet - network tag of the network we proxy