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/botpassword: The account's password- Optional
caps_ver: Name and version of the bot. Defaults toWobot:x.x. - Optional
debug: When set totrue, XMPP traffic will be printed. - Optional
host: The hostname of the server. Defaults tojidhost.
var wobot = require('wobot');
var bot = new wobot.Bot({
jid: '[email protected]/bot',
password: '??????'
});
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.
conditionis either a RegExp or a string which must match the message for the callback to be triggered.callbackin 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.
conditionis either a RegExp or a string which must match the message for the callback to be triggered.callbackin the form offunction(from, message[, matches]).
condition can also be omitted i.e. onPrivateMessage(callback).
Emitted whenever invited to a room.
callbackin the form offunction(roomJid, fromJid, reason).
Emitted everytime the bot pings the server (roughly every 30 seconds.)
Emitted whenever an error occurs. disconnect will be emitted afterwards.
callbackin the form offunction(condition, text, stanza)conditionis a string containing the XMPP stream error condition.textis a string containing a human-readable error message.stanzais 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.
roomJidis in the following format:[email protected].historyStanzas: Max number of history entries to request (default=0).
Part a channel.
Send a message to either a channel or a user.
targetJidis in the following format:[email protected]for a private message.[email protected]for a channel message.
Fetches the roster (buddy list).
callbackin the form offunction(err, roster, stanza)erris a string representation of the error, if any.rosteris an array of objects containing user data.stanzais the full response stanza, anxmpp.Element.
Example return value for roster:
[
{ name: 'Christian Joudrey', jid: '[email protected]', mention_name: 'ChristianJoudrey' },
{ name: 'The Bot', jid: '[email protected]', mention_name: 'TheBot' }
]Fetches the rooms available to the bot user. This is equivalent to what would show up in the HipChat lobby.
callback: Function to be triggered:function (err, items, stanza)err: Error condition (string) if anyrooms: Array of objects containing room datastanza: Full response stanza, anxmpp.Element
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 aloadfunction 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.
stanzais thexmpp.Elementto send.callbackin the form offunction (err, stanza).erris a string representation of the error, if any.stanzais 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.