1
0
mirror of https://github.com/irssi/irssi.git synced 2024-12-04 14:46:39 -05:00
irssi/docs/PERL

497 lines
14 KiB
Plaintext
Raw Normal View History

Functions that you can use in Irssi's Perl scripts
--------------------------------------------------
This is just my very first implementation and things will probably change.
Commands marked with (!!) mean that you shouldn't use it unless you
know what you're doing..
If there's a "Xxxx::" text before the command, it means that it belongs to
that package. Like "Server::command" means that you should either call it as
Irssi::Server::command($server, $cmd);
or more easily:
$server->command($cmd);
Commands that don't have the Xxxx prefix are called as Irssi::command();
A list of signals that irssi send can be found from SIGNALS file.
*** General
Channel cur_channel() - return current channel
Server cur_server() - return current server
channels() - return list of all channels
servers() - return list of all servers
commands() - return list of all commands
dccs() - return list of all dcc connections
logs() - return list of all log files
plugins() - return list of all plugins
print(str)
Print `str' to current window as "Irssi notice".
command(cmd, [Server server, [Channel channel]])
Send a command `cmd' (in current channel). This will work just as if you
had typed `cmd' in command line, so you'll need to use /COMMANDS or the
text will be sent to the channel.
Server::command(cmd, [Channel channel])
Just like above, except different calling method.
Channel::command(cmd)
Just like above, except different calling method.
Server::printtext(channel, level, str)
Print `str'.
*** Message levels
level2bits(level)
Level string -> number
bits2level(bits)
Level number -> string
combine_level(level, str)
Combine level number to level string ("+level -level").
Return new level number.
*** Signals / timeouts
signal_emit(signal, ...)
Send signal `signal'
signal_add(signal, func)
Bind `signal' to function `func'
signal_remove(signal, func)
Unbind `signal' from function `func'
tag timeout_add(msecs, func, data)
Call `func' every `msecs' milliseconds (1000 = 1 second) with
parameter `data'. Returns tag which can be used to stop the timeout.
timeout_remove(tag)
Remove timeout with tag.
*** Commands
Command::values()
Get some information about command. This function returns a reference to
hash table (FIXME: can't it return the hash table itself?!). Hash table
has keys:
"cmd" - Command
"category" - Category
command_bind(cmd, category, func)
Bind command `cmd' to call function `func'. `category' is the
category where the command is displayed in /HELP.
command_unbind(cmd, func)
Unbind command `cmd' from function 'func.
Server::command_split(cmd, arg, max_nicks)
Split the `cmd' into several commands so `arg' argument has only
`max_nicks' number of nicks.
Example: $server->command_split("KICK nick1,nick2,nick3 :byebye", 1, 2);
Irssi will send commands "KICK nick1,nick2 :byebye" and
"KICK nick3 :byebye" to server.
*** Server functions
Server::values()
Get some information about server. This function returns a reference to
hash table (FIXME: can't it return the hash table itself?!). Hash table
has keys:
"address" - Address where we connected (irc.blah.org)
"real_address" - Who the server thinks it is (irc1.blah.org)
"port" - Port where we connected
"tag" - Unique server tag.
"ircnet" - IRC network
"password" - Password we used in connection.
"nick" - Current nick
"wanted_nick" - Nick which we would prefer to use
"username" - User name
"realname" - Real name
"usermode" - Current user mode
"connected" - Is connection finished? 1|0
"connection_lost" - Did we lose the connection (1) or was
the connection meant to be disconnected (0)
Example:
%server_info = %{Irssi::cur_server->values()};
Irssi::print("Current server = ".$server_info{'address'});
Server server_connect(address, [port=6667, [password='', [nick='', [channels='']]]])
Create new server connection.
Server::disconnect()
Disconnect from server.
Server server_find_tag(tag)
Find server with tag
Server server_find_ircnet(ircnet)
Find first server that is in `ircnet'
Channel channel_find_any(channel)
Find `channel' from any server
Channel Server::channel_find_level(level)
Find channel with level `level' preferably from specified server, but
fallbacks to any channel the matching level.
Server::send_raw(cmd)
Send raw message to server, it will be flood protected so you
don't need to worry about it.
Server::ctcp_send_reply(data)
Send CTCP reply. This will be "CTCP flood protected" so if there's too
many CTCP requests in buffer, this reply might not get sent.
*** Server redirections
WARNING: It's easy to mess up the Irssi's internal server expectations with
these commands!
This is a powerful feature of Irssi that I can't seen in other IRC clients.
You can EASILY grab the server's reply for a command you send to server
without any horrible kludges.
Server::redirect_init(command, last, ...)
Initialize redirection for specified command. This needs to be done only
once. Irssi already initializes commands "WHOIS", "WHO", "LIST" and "ISON".
`command' is the whole name of the signal, like "command whois".
`last' specifies how many of the items in `...' is considered as the
"last event" from the command.
Example: $server->redirection_init('command who',
2, # 2 first events will finish the command
'event 401', # unknown nick (finished)
'event 315', # end of who (finished)
'event 352'); # who line (wait..)
Server::redirect_event(arg, last, ...)
Add redirection. `arg' is a space separated list of arguments that should
match before Irssi will redirect the event (think of /WHOIS nick nick and
doing another to different nick immediately after it, there's no way of
knowing which will return first. so, arg would be in this case 'nick').
`last' specifies how many of the following events are considered as
"last event" from command - just like in redirect_init().
`...' is `event, signal, argpos, ...`, where
`event' is the event we're waiting from server.
`signal' is the signal we will send after receiving the event. It should
always start with 'redir ' so that Irssi's perl handler knows to
send correct arguments to signal handler.
`argpos' is the argument position in event's data or -1 if it
should be ignored.
Example:
$server->send_raw('WHOIS :cras');
$server->redirect_event('cras', 2,
"event 318", "redir end_of_whois", -1,
"event 402", "redir no_such_server", -1,
"event 401", "redir no_such_nick", 1,
"event 311", "redir whois", 1,
"event 301", "redir whois_away", 1,
"event 312", "redir whois_server", 1,
"event 313", "redir whois_oper", 1,
"event 317", "redir whois_idle", 1,
"event 319", "redir whois_channels", 1);
In the 402-case we tried "/WHOIS nick nick" but nick didn't exist..
group Server::redirect_single_event(arg, last, group, event, signal, argpos)
Same as redirect_event() except you can set it up in pieces.
If `group' is 0, it will create new group and return it's id.
*** IRC masks
irc_mask_match(mask, nick, user, host)
Return 1 if `mask' matches nick!user@host.
irc_mask_match_address(mask, nick, address)
Return 1 if `mask' matches nick!address.
irc_masks_match(masks, nick, address)
Return 1 if any mask in the `masks' (string separated with spaces)
matches nick!address.
irc_get_mask(nick, host, flags)
Create IRC mask from nick!host.
flags = you need to combine these:
(FIXME: export the IRC_xxx defines to perl (or something))
IRC_MASK_NICK 0x01
IRC_MASK_USER 0x02
IRC_MASK_HOST 0x04
IRC_MASK_DOMAIN 0x08
*** Channels
Channel::values()
Get some information about channel. This function returns a reference to
hash table (FIXME: can't it return the hash table itself?!). Hash table
has keys:
"name" - channel name
"type" - channel type ("channel", "query", "dcc chat", "empty")
"password" - channel password
Channel Server::channel_create(channel, type, automatic)
Create new channel with name `channel'. `type' is one of:
(FIXME: export these to perl somehow)
CHANNEL_TYPE_CHANNEL 0
CHANNEL_TYPE_QUERY 1
CHANNEL_TYPE_DCC_CHAT 2
CHANNEL_TYPE_EMPTY 3
`automatic' means that channel is created "automatically" and
Irssi will NOT change the active window to it.
Channel::destroy()
Destroy channel.
Channel::change_name(name)
Change channel's name
Channel::get_mode()
Return channel's mode
Channel Server::channel_find(channel)
Find `channel' in server.
Channel Server::channel_find_closest(channel, level)
Find `channel' or if not found, some other channel that has
level `level' (number).
Channel channel_find_level(level)
Find channel with level `level'.
*** Channel modes
Ban::values()
Get some information about ban. This function returns a reference to
hash table (FIXME: can't it return the hash table itself?!). Hash table
has keys:
"ban" - The ban
"setby" - Nick of who set the ban
"time" - Timestamp when ban was set
Ban Channel::ban_add(ban, nick, time)
Add new ban. (!!)
Channel::ban_remove(ban)
Remove ban. (!!)
Ban Channel::ban_exception_add(ban, nick, time)
Add ban exception (!!)
Channel::ban_exception_remove(ban)
Remove ban exception (!!)
Channel::invitelist_add(mask)
Add invite (!!)
Channel::invitelist_remove(mask)
Remove invite (!!)
Channel::modes_parse_channel(setby, modestr)
Parse mode string (!!)
Channel::ban_get_mask(nick)
Get ban mask for `nick'.
Channel::modes_set(data, mode)
Set mode `mode' ("+o", "-o", etc.) to all nicks in `data'
separated with spaces.
*** Nick list
Nick::values()
Get some information about nick. This function returns a reference to
hash table (FIXME: can't it return the hash table itself?!). Hash table
has keys:
"nick" - Plain nick
"host" - Host (blah@there.org)
"name" - Real name
"op", "voice", "gone", "ircop" - 1 or 0
"last_check" - timestamp when last checked gone/ircop status.
"send_massjoin" - Waiting to be sent in a "massjoin" signal - 1 or 0
Nick Channel::nicklist_insert(nick, op, voice, send_massjoin)
Add nick to nicklist. (!!)
Channel::nicklist_remove(nick)
Remove nick from nicklist. (!!)
Nick Channel::nicklist_find(mask)
Find nick from nicklist.
Channel::nicklist_getnicks(channel)
Return a list of all nicks (Nick packages) in channel.
*** DCC
Dcc:destroy()
Destroy DCC connection. (!!)
dcc_type2str(type)
DCC type number to string
dcc_str2type(type)
DCC type string to number
Dcc dcc_find_item(type, nick, arg)
Find DCC connection.
Dcc dcc_find_by_port(nick, port)
Find DCC connection by port.
*** Netsplits
Netsplit::values()
Get some information about netsplit. This function returns a reference to
hash table (FIXME: can't it return the hash table itself?!). Hash table
has keys:
"nick" - Nick
"address" - Nick's host
"server" - The server nick was in
"destserver" - The other server where split occured.
"destroy" - Timestamp when this record should be destroyed
/*FIXME: add list of channels the nick was in;*/
Netsplit Server::netsplit_find(nick, address)
Check if nick!address is on the other side of netsplit. Netsplit records
are automatically removed after 30 minutes (current default)..
Nick Server::netsplit_find_channel(nick, address, channel)
Find nick record for nick!address in channel `channel'.
*** Notify list
notifylist_add(nick, ircnet)
Add `nick' to notify list in irc network `ircnet'
Server notifylist_ison(nick, ircnets)
Check if `nick' is in IRC. `ircnets' is a space separated
list of irc networks. If it's empty string, all servers will be checked.
Server::notifylist_ison_server(nick)
Check if `nick' is on IRC server.
*** Rawlog
Server::rawlog_input(str)
Send `str' to raw log as input text. (!!)
Server::rawlog_output(str)
Send `str' to raw log as output text. (!!)
Server::rawlog_redirect(str)
Send `str' to raw log as redirection text. (!!)
*** Ignores
Autoignore::values()
Get some information about autoignore. This function returns a reference to
hash table (FIXME: can't it return the hash table itself?!). Hash table
has keys:
"nick" - Ignored nick
"timeleft" - Seconds left to ignore
"level" - Ignoring level number
ignore_add(mask, level)
Ignore `mask' with level string
ignore_remove(mask, level)
Unignore level string from `mask'
Server::ignore_check(nick, host, type)
Return 1 if nick!host is ignored with level number `type'.
Server::autoignore_add(type, nick)
Autoignore `nick' in server with level number `type'.
Server::autoignore_remove(mask, level)
Remove autoignoring `nick' from server. `level' is a string.
*** Logging
Log::values()
Get some information about log. This function returns a reference to
hash table (FIXME: can't it return the hash table itself?!). Hash table
has keys:
"fname" - Log file name
"autoopen_log" - Automatically open log at startup
"last" - Timestamp when last write occured.
"level" - Global logging level.
/*FIXME: add list of Logitems;*/
Logitem::values()
Get some information about logitem. This function returns a reference to
hash table (FIXME: can't it return the hash table itself?!). Hash table
has keys:
"name" - Log item name.
"level" - Logging level number.
Log log_create(fname, data)
Create log file. `data' = logging level ("-all #channel +public")
Log log_create_with_level(fname, level)
Create log file with level number.
Log log_file_find(fname)
Find log file.
Log::destroy()
Destroy log file
Log::open()
Start logging
Log::close()
Stop logging
Log::append_item(name, level)
Append log item with level number `level' to log file. (!!)
Log::remove_item(log, name)
Remove log item. (!!)
*** Plugins
Plugin::values()
Get some information about plugin. This function returns a reference to
hash table (FIXME: can't it return the hash table itself?!). Hash table
has keys:
"name" - Plugin name
"description" - Plugin description
plugin_load(name, args)
Load plugin.
plugin_get_description(name)
Get plugin description string.
Plugin plugin_find(name)
Find plugin.