--- LuaIRC is a low-level IRC library for Lua.
-- All functions raise Lua exceptions on error.
--
-- Use new to create a new IRC object.
-- Example:
--
--require "irc"
module "irc"
--- Create a new IRC object. Use
--local sleep = require "socket".sleep
--
--local s = irc.new{nick = "example"}
--
--s:hook("OnChat", function(user, channel, message)
-- print(("[%s] %s: %s"):format(channel, user.nick, message))
--end)
--
--s:connect("irc.example.net")
--s:join("#example")
--
--while true do
-- s:think()
-- sleep(0.5)
--end
--irc:connect to connect to a server.
-- @param user Table with fields nick, username and realname.
-- The nick field is required.
--
-- @return Returns a new irc object.
function new(user)
--- Hook a function to an event.
-- @param name Name of event.
-- @param id Unique tag.
-- @param f Callback function. [defaults to id]
-- @see Hooks
function irc:hook(name, id, f)
--- Remove previous hooked callback.
-- @param name Name of event.
-- @param id Unique tag.
function irc:unhook(name, id)
--- Connect irc to an IRC server.
-- @param host Host address.
-- @param port Server port. [default 6667]
function irc:connect(server, port)
-- @param table Table of connection details
-- @see Connection
function irc:connect(table)
--- Disconnect irc from the server.
-- @param message Quit message.
function irc:disconnect(message)
--- Handle incoming data for irc, and invoke previously hooked callbacks based on new server input.
-- You should call this in some kind of main loop, or at least often enough to not time out.
function irc:think()
--- Look up user info.
-- @param nick Nick of user to query.
-- @return Table with fields userinfo, node, channels and account.
function irc:whois(nick)
--- Look up topic.
-- Use this to invoke the hooks OnTopic and OnTopicInfo at any time.
-- @param channel Channel to query.
function irc:topic(channel)
--- Send a IRC message to the server.
-- @param msg Message or raw line to send, excluding newline characters.
-- @param ... Format parameters for msg, with string.format semantics. [optional]
function irc:send(msg, ...)
--- Queue Message to be sent to the server.
-- @param msg Message to be sent.
function irc:queue(msg)
--- Send a message to a channel or user.
-- @param target Nick or channel to send to.
-- @param message Message text.
function irc:sendChat(target, message)
--- Send a notice to a channel or user.
-- @param target Nick or channel to send to.
-- @param message Notice text.
function irc:sendNotice(target, message)
--- Join a channel.
-- @param channel Channel to join.
-- @param key Channel key. [optional]
function irc:join(channel, key)
--- Leave a channel.
-- @param channel Channel to leave.
function irc:part(channel)
--- Turn user information tracking on or off. User tracking is enabled by default.
-- @param b Boolean whether or not to track user information.
function irc:trackUsers(b)
--- Add/remove modes for a channel or nick.
-- @param t Table with fields target, nick, add and/or rem. target or nick
-- specifies the user or channel to add/remove modes. add is a list of modes to add to the user or channel.
-- rem is a list of modes to remove from the user or channel.
-- @usage Example which sets +m (moderated) for #channel:
-- irc:setMode{target = "#channel", add = "m"}
function irc:setMode(t)
--internal
function irc:invoke(name, ...)
function irc:handle(msg)
function irc:shutdown()
--- Table with connection information.
--
host - Server host name.port - Server port. [defaults to 6667]timeout - Connect timeout. [defaults to 30]password - Server password.secure - Boolean to enable TLS connection, pass a params table (described, [luasec]) to controltoRFC1459() - Returns the message serialized in RFC 1459 format.PreRegister(connection)Useful for CAP commands and SASL.OnRaw(line) - (any non false/nil return value assumes line handled and will not be further processed)OnSend(line)OnDisconnect(message, errorOccurred)OnChat(user, channel, message)OnNotice(user, channel, message)OnJoin(user, channel)*OnPart(user, channel)*OnQuit(user, message)NickChange(user, newnick, channel)*†NameList(channel, names)OnTopic(channel, topic)OnTopicInfo(channel, creator, timeCreated)OnKick(channel, nick, kicker, reason)* (kicker is a user table)OnUserMode(modes)OnChannelMode(user, channel, modes)OnModeChange(user, target, modes, ...)* ('...' contains mode options such as banmasks)DoX(msg)'X' is any IRC command or numeric with the first letter capitalized (eg, DoPing and Do001)server - Server name.nick - User nickname.username - User username.host - User hostname.realname - User real name.access - User access, available in channel-oriented callbacks. A table containing boolean fields for each access mode that the server supports. Eg: 'o', and 'v'.