WeeChat.js
WeeChat Relay Protocol module for Node.js
npm
npm install weechat
Usage
.connect(host, port, password, [callback])
Connect to WeeChat:
(host, port password, ssl, callback)
var client = weechat.connect('localhost', 8000, 'test', false, function() { console.log('Connected!');});
Or with SSL support:
var client = weechat.connect('localhost', 9001, 'test', true, function() { console.log('Connected!');});
.send(message, [callback])
Send messages to WeeChat:
client.send('input irc.freenode.#weechat hello guys and girls!'); client.send('info version', function(version) { console.log(version.value);});
.on([type], callback) Listeners, when an even occurs in WeeChat:
client.on('_buffer_line_added', function(line) { console.log('Got line', line);}); client.on(function() { console.log('Anything happened', arguments);}); client.on('line', function(line) { console.log('Got line', line);});
Built in listeners
There are some built in aliases making listeners easier to add:
line: New line added
open: Buffer is opened
close: Buffer is closing
renamed: Buffer is renamed
localvar: Local var is added
title: Title (topic) is changed for a buffer
nicklist: Nicklist
Colorizing
The module return only pure WeeChat strings, including coding for colors.
Calling weechat.style(line);
will return an array of parts
, like this:
[ { text: 'Hello', fg: 'dark cyan', bg: undefined, attrs: [] }, { text: 'world!' } ]
fg
is foreground color, bg
is background color, attrs
is an array of attributes, such as underline.
The module supports stripping these codes away, returning a plain string, like this:
weechat.noStyle(line);
Full example
var weechat = require('weechat'); var client = weechat.connect('localhost', 8000, 'test', function() { console.log('Connected!'); client.send('info version', function(version) { console.log(version.value); });}); client.on('error', function(err) { console.error(err);}); client.on('end', function() { console.log('end');}); client.on('line', function(line) { var from = weechat.noStyle(line.prefix); var message = weechat.noStyle(line.message); console.log(from, message);});
License
MIT License (c) Eirik Brandtzæg