A plugin-based HipChat bot written in Node.js.
The easiest way to obtain Wobot is through npm:
npm install wobot
Keep in mind this module depends on node-xmpp
which cannot be built without:
- libexpat1-dev:
apt-get install libexpat1-dev
- libicu-dev:
apt-get install libicu-dev
Instantiate the wobot.Bot
class by passing it a hash containing:
jid
: Jabber ID followed by/bot
password
: The account's passwordname
: The name of the bot as it appears in HipChat. This is usuallyfirstname + lastname[0]
.- Optional
host
: The hostname of the server.
var wobot = require('wobot');
var bot = new wobot.Bot({
jid: '????_????@chat.hipchat.com/bot',
password: '??????',
name: '???? ????'
});
bot.connect();
The following events can be binded to:
Emitted whenever the bot connects to the server.
Emitted whenever a message is sent to a channel the bot is in.
condition
is either a RegExp or a string which must match the message for the callback to be triggered.callback
in the form offunction(channel, from, message[, matches])
.
condition
can also be omitted i.e. onMessage(callback)
.
Emitted whenever a message is sent privately to the bot.
condition
is either a RegExp or a string which must match the message for the callback to be triggered.callback
in the form offunction(from, message[, matches])
.
condition
can also be omitted i.e. onPrivateMessage(callback)
.
Emitted everytime the bot pings the server (roughly every 30 seconds.)
Emitted whenever an error occurs. disconnect
will be emitted afterwards.
callback
in the form offunction(message[, stanza])
message
is a string representation of the error.stanza
is an instance ofxmpp.Element
, when available.
Emitted whenever the bot disconnects from the server.
Instances of wobot.Bot
have the following methods:
Join a channel.
roomJid
is in the following format:????_????@conf.hipchat.com
.
Part a channel.
Send a message to either a channel or a user.
targetJid
is in the following format:????_????@chat.hipchat.com
for a private message.????_????@conf.hipchat.com
for a channel message.
Fetches the roster (buddy list).
callback
in the form offunction(err, roster, stanza)
err
is a string representation of the error, if any.roster
is an array of objects containing user data.stanza
is the full response stanza, anxmpp.Element
.
Example return value for roster
:
[
{ name: 'Christian Joudrey', jid: '1111_12345@chat.hipchat.com' },
{ name: 'The Bot', jid: '1111_12346@chat.hipchat.com' }
]
Connect to the server.
Disconnect from the server.
Load a plugin.
identifier
: A unique string that identifies the plugin. This will be used to unload it.plugin
: Object with aload
function as so:function load (bot)
.options
: Will be passed as the second argument toload
.
Sends an IQ stanza and stores a callback to be called when its response is received.
stanza
is thexmpp.Element
to send.callback
in the form offunction (err, stanza)
.err
is a string representation of the error, if any.stanza
is the full response stanza, anxmpp.Element
.
Copyright (c) 2011 Christian Joudrey. See LICENSE for details.
Node.js is an official trademark of Joyent. This module is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.