irccloud
v1.2.1
Published
Client module for IRCCloud.com hosted IRC service
Downloads
8
Readme
IRCCloud Client for Node.js
This is a client module for IRCCloud. It allows you to operate an IRC bot via IRCCloud. You will need at least a free IRCCloud account to use this module. All normal IRCCloud limits apply if you haven't upgraded your account.
This isn't quite complete just yet, so some things might be missing or the documentation might be a bit unclear at times.
Methods
All post-connection methods take an optional callback. If provided, this will be called with a single object argument
when the method has been successfully executed by IRCCloud. This object will always have a boolean success
property.
connect(email, password[, reconnectAllConnections])
email
- Your account's email addresspassword
- Your account's passwordreconnectAllConnections
- Optional. Pass true here to automatically reconnect all connections that have a status ofdisconnected
once we connect to IRCCloud. Default false.
Start the process of logging in and connecting to IRCCloud. You will get a connect
event once connected,
and loaded
once data is fully loaded.
If you have a free account which is subject to being diconnected from IRC after 2 hours of inactivity, you could pass
true
to reconnectAllConnections
to automatically reconnect to IRC once your bot starts back up. If you use this
functionality, the reconnect process will be initiated after loaded
is emitted.
disconnect()
Disconnect an established connection.
listConnections([getHostnames])
getHostnames
- true if you want to return hostnames (e.g. "chat.freenode.net") instead of network names (e.g. "freenode")
Returns an array containing the names or hostnames of all connections on your account. Should only be used after loaded
is emitted.
This method does not consult the network; it merely pulls data from memory therefore it returns the data immediately.
getConnection(networkName)
networkName
- Either the name of the network (e.g. "freenode") or the hostname you connected to (e.g. "chat.freenode.net"), case-insensitive
Gets a connection object and returns it, if it exists. Returns null
if no matching connection is found on your account.
This method does not consult the network; it merely pulls data from memory therefore it returns the data immediately.
createConnection(options[, callback])
options
- An object containing all or some of these properties:hostname
- Required. The hostname of the server (either a domain name or an IP address)nick
- Required. Your desired nickname on this network.port
- Optional. The port number to connect to. Defaults to 6667.ssl
- Optional.true
to use SSL,false
or omitted to not.realName
- Optional. Your "real name" on the network, or empty if omitted.channels
- Optional. An array of channel names to auto-join on connection. Omit to not auto-join anything.joinCommands
- Optional. An array of commands to automatically execute on connection.nickservPassword
- Optional. Your NickServ password, if applicable.serverPassword
- Optional. The password to use to connect to the server, if applicable. You need a paid account for this.
callback
- Optional. In addition to the defaultsuccess
property, the response object also hascid
which is the new connection's ID.
Creates a new IRC connection and connects to that server. You need a paid account to have more than 2 (in addition to irc.irccloud.com).
reconnectConnection(connection[, callback])
connection
- Either a connection ID or an object with acid
property (e.g. a connection object)callback
- Optional. Just the normal method callback.
Re-connects to an existing connection which has previously been disconnected.
disconnectConnection(connection[, msg][, callback])
connection
- Either a connection ID or an object with acid
property (e.g. a connection object)msg
- Optional. A quit message.callback
- Optional. Just the normal method callback.
Disconnects and quits an IRC connection. The connection object will remain in your account which you can reconnect later or delete.
deleteConnection(connection[, callback])
connection
- Either a connection ID or an object with acid
property (e.g. a connection object)callback
- Optional. Just the normal method callback.
Deletes a connection. This connection must be disconnected first.
getBuffer(networkName, bufferName) {
networkName
- Either the name of the network (e.g. "freenode") or the hostname you connected to (e.g. "chat.freenode.net"), case-insensitivebufferName
- The name of the buffer you're looking for (e.g. "#channel" or "somenick"), case-insensitive
Finds a buffer, if it exists, and returns its object. If not, returns null
.
This method does not consult the network; it merely pulls data from memory therefore it returns the data immediately.
setArchived(buffer, archived[, callback])
buffer
- A buffer object (or an object containingcid
andbid
properties)archived
-true
if you want to archive it, orfalse
if you want to unarchive itcallback
- Optional. Just the normal method callback.
Archives or unarchives a buffer. If you're archiving a buffer for a channel you're in, this will part that channel.
deleteBuffer(buffer[, callback])
buffer
- A buffer object (or an object containingcid
andbid
properties)callback
- Optional. Just the normal method callback.
Deletes a buffer. If it's a buffer for a channel you're currently in, this will part it before deleting it.
join(connection, channel[, key][, callback])
connection
- A connection object (or an object containing acid
property)channel
- A string containing the name of the channel to joinkey
- Optional. If you need a key to join this channel, provide it here as a string.callback
- Optional. Just the normal method callback.
Join a channel. Listen for channelInit
to know when you've successfully joined.
part(connection, channel[, msg][, callback])
connection
- A connection object (or an object containing acid
property)channel
- A string containing the name of the channel you want to leavemsg
- Optional. A part message to display to the rest of the channelcallback
- Optional. Just the normal method callback.
Leave a channel. Listen for youPart
to know when you've successfully parted.
message(connection, recipient, message[, callback])
connection
- A connection object (or an object containing acid
property)recipient
- A string containing the name of the channel (or nick of the recipient if it's a PM) you're sending this message tomessage
- The message textcallback
- Optional. Just the normal method callback.
Send a message to a recipient (either a channel or a nick to send a PM).
action(connection, recipient, message[, callback])
connection
- A connection object (or an object containing acid
property)recipient
- A string containing the name of the channel (or nick of the recipient if it's a PM) you're sending this message tomessage
- The message textcallback
- Optional. Just the normal method callback.
Identical to the message
method except prefixes the message
with /me
.
topic(buffer, text[, callback])
buffer
- An object representing the buffer whose topic you want to change. Must havecid
(connection ID) andbid
(buffer ID) propertiestext
- The new topiccallback
- Optional. Just the normal method callback.
Sets a channel's topic, provided you have permission to do so.
paste(options[, callback])
options
- An object with the following properties:contents
- Required. The contents of your pastename
- Optional. A filename for your pasteextension
- Optional. A file extension for your paste
callback
- Optional. Normal method callback. Properties of interest:url
- The URL where your paste can be viewed. This is what you should send over IRC.id
- The ID for your pastesize
- Paste size in byteslines
- Number of lines in paste
Create a pastebin.
Events
error
err
- An Error object
Emitted when an error occurs either during connection (e.g. bad email or password) or if there's some kind of error that drops our connection. This is always fatal to the connection.
connect
Emitted after a WebSocket connection is successfully established to IRCCloud, but before any data is loaded.
disconnect
code
- A WebSocket status codereason
- A reason string for the disconnection (may be empty)initiatedByUs
-true
if this disconnect was intentionally initiated by us, orfalse
if it was the result of an error or the server closing the connection
Emitted when the WebSocket connection is lost. At the present moment, this module will not automatically reconnect.
loaded
Emitted after all connections and buffers have been fully loaded from IRCCloud after connection.
accountDetails
details
- An object containing your IRCCloud account's details
Emitted shortly after connection to IRCCloud with your account's details. This is (partially) documented here.
newConnection
connection
- An object containing the connection's details.
Emitted when a new connection is created either by your session or by another session logged into your account.
A "connection" is a connection to a specific IRC server. Each connection has its own nick and set of channels, even if it's connected to the same server as another connection. Free accounts can only have two connections at a time.
The connection
object is (partially) documented here.
Note that this module also adds a buffers
property which is an object containing the buffers which are owned by this
connection (see below).
newBuffer
buffer
- An object containing the buffer's details.
Emitted when a new buffer is created. This might be a result of your joining a new channel, as a result of your creating a new connection (e.g. the console/status buffer), as a result of someone new PMing you, or something else.
A "buffer" is a "chat window". Buffers show up as tabs in the sidebar of the IRCCloud client. There are three types of buffers:
console
- Each connection has exactly one console buffer, which is where notices and server messages are routed.channel
- Each channel you're in has its own buffer.conversation
- Each user who has privately messaged you (or who you've privately messaged) has their own buffer. These can be renamed if the other party changes their nick.
Channel buffers have a users
property which is an array of users who we know to be in the channel. Channel buffers
also have an initialized
property which is false
if you're not currently in the channel, or true
if you are.
connectionStatus
connection
- A connection objectnewStatus
- The connection's new statusfailInfo
- An object containing the connection's new fail info (may be empty object)
Emitted when a connection changes state. Possible states are:
- queued
- connecting
- connected
- connected_joining
- connected_ready
- quitting
- disconnected
- waiting_to_retry
- ip_retry - Indicates that one IP failed but the host resolved to more, so IRCCloud will try another one soon
failInfo
will be defined when the state unexpectedly changes to disconnected
. Possible keys and values for failInfo
are:
type
- Indicates what type of disconnect this wasconnecting_restricted
- Your subscription level restricted this connectionsocket_closed
- The network connection went awayconnecting_failed
- IRCCloud couldn't establish a connection in the first placekilled
- You were booted off IRC (killed) by an IRCOp
reason
- A more specific failure reasonpool_lost
- Connection pool failedno_pool
- No available connection poolsenetdown
- Network downetimedout
- Connection timed outtimeout
- Connection timed outehostunreach
- Host unreachableeconnrefused
- IRC server refused the connectionnxdomain
- Invalid hostname (domain doesn't exist)ssl_certificate_error
- SSL certificate errorssl_error
- Generic SSL errorcrash
- Connection crashed
timestamp
- ADate
object for when the disconnect happenedretry_timeout
- Number if seconds after which IRCCloud will try againattempts
- How many times IRCCloud has already tried to connectgive_up
- Only defined, andtrue
, if IRCCloud has attempted many times and has now given up
connectionChanged
oldConnection
- Connection object containing old connection datanewConnection
- Connection object containing new connection data
Emitted when a connection's options are changed by you.
connectionDeleted
connection
- A connection object
Emitted when a connection is permanently deleted. It must have already been disconnected.
channelInit
buffer
- A buffer object
Emitted when you successfully join a new channel and load its details. At this point you can safely chat to the channel, and you can retrieve all data about the channel.
archived
buffer
- A buffer object
Emitted when a buffer is successfully archived (hidden from view). Archived buffers are not deleted, and can be unarchived at any time. Note that if a channel is archived while you're in it, you are automatically parted from it.
unarchived
buffer
- A buffer object
Emitted when a buffer is unarchived. This doesn't automatically rejoin the channel if it's a channel buffer.
deleted
buffer
- A buffer object
Emitted when a buffer is deleted. This is not reversible and all history from the buffer is permanently deleted.
mode
buffer
- A buffer objectchanges
- An object with two properties:add
- An array of objects for modes which were added, each with two properties:mode
- The mode letter which was addedparam
- The parameter for the mode, if applicable, or empty string if not
remove
- An array of objects identical toadd
for modes which were removed
newMode
- A string of mode characters representing the channel's up-to-date modeactor
- A user object for the person who changed the mode
Emitted when a channel's mode is changed.
userMode
buffer
- A buffer objectuser
- A user object for the person whose mode was changedchanges
- Same aschanges
inmode
newMode
- Same asnewMode
inmode
actor
- A user object for the person who changed the mode
Emitted when another user's channel mode is changed. For example, when a user is voiced or opped.
youMode
Emitted when your connection-wide user mode changes.
topic
buffer
- A buffer objectactor
- A user object for the person who changed the modetext
- The new topic, as a stringtime
- ADate
object representing the time and date when this mode was set (should be just now)
Emitted when a channel's topic changes.
join
buffer
- A buffer objectuser
- A user object for the person who joined
Emitted when someone joins one of your channels.
part
buffer
- A buffer objectuser
- A user object for the person who leftmsg
- The user's part message (may be empty)
Emitted when someone leaves one of your channels voluntarily.
youPart
buffer
- A buffer objectmsg
- Your part message (may be empty)
Emitted when you leave one of your channels voluntarily (or perhaps not, as some networks allow channel ops to force-part a user instead of kicking them, e.g. to defeat auto-rejoin mechanisms).
kick
buffer
- A buffer objectuser
- A user object for the person who was kickedmsg
- The kick reason (may be empty)actor
- A user object for the person who did the kicking
Emitted when someone is kicked out of one of your channels.
youKick
buffer
- A buffer objectmsg
- The kick reason (may be empty)actor
- A user object for the person who kicked you
Emitted when you are kicked out of a channel.
quit
buffer
- A buffer objectuser
- A user object for the person who quitmsg
- The quit message (may be empty)
Emitted once per buffer when a user quits the IRC server for each buffer you see that user in, potentially including a
conversation
type buffer (a PM).
message
buffer
- A buffer objectsender
- A user object for the person who sent the messagemsg
- The message texthighlight
-true
if this message highlighted you based on your highlight rules, orfalse
if not
Emitted when someone sends a message to either a channel you're in or to you directly.
action
buffer
- A buffer objectsender
- A user object for the person who sent the messagemsg
- The message text (not including their nick)highlight
-true
if this message highlighted you based on your highlight rules, orfalse
if not
Emitted when someone sends an action-message (/me) to either a channel you're in or to you directly.
highlight
buffer
- A buffer objectsender
- A user object for the person who sent the messagemsg
- The message text
Emitted for either message
or action
when you're highlighted only.
notice
buffer
- A buffer objectsender
- A user object for the person who sent the noticemsg
- The notice texttarget
- If this notice was sent to a channel, this is the channel name
Emitted when someone sends a notice to either a channel you're in or to you directly.
messageEcho
buffer
- A buffer objectsender
- A user object for the sender of the message (you!)msg
- The message text
Same as message
, except for messages we sent ourselves (potentially on another client session).
actionEcho
buffer
- A buffer objectsender
- A user object for the sender of the message (you!)msg
- The message text (not including your nick)
Same as action
, except for messages we sent ourselves (potentially on another client session).
noticeEcho
buffer
- A buffer objectsender
- A user object for the sender of the message (you!)msg
- The notice text
Same as notice
, except for messages we sent ourselves (potentially on another client session).
accessDenied
buffer
- A buffer object (the connection's console buffer)channel
- The name of the channel to which you were deniedmsg
- The error message
Emitted when you try to do something that requires channel operator (or similar) access, which you don't have.
nick
buffer
- A buffer objectoldNick
- The old nick of the user who changed their nicknewNick
- The new nick to which the user changed
Emitted once per buffer you share with this user when someone changes their nick.
youNick
buffer
- A buffer objectoldNick
- Your old nicknewNick
- Your new nick
Emitted when you change your own nick (or it's changed forcefully by the server).
conversationRenamed
buffer
- A buffer objectnewName
- The new name of the buffer
Emitted when a conversation
buffer is renamed because the other party changed their nick.
unknownCommand
buffer
- A buffer objectcommand
- The command that was unknown
Emitted when you try to run an unknown /command on a server. The provided buffer is the buffer in which the command was run.