Performant, streaming IRC message parser
irc-message provides an object stream capable of parsing RFC1459-compliant IRC messages, with support for IRCv3 message tags. This also includes server-to-server protocols such as TS6, Spanning Tree, and the UnrealIRCd protocol.
npm install irc-message
Returns an object stream, taking in Buffer
s/String
s of raw IRC data. Data should not be line-buffered, this stream handles splitting and buffering automatically. and pushing objects containing the following keys.
raw
- unparsed IRC message (string)tags
- IRCv3 message tagsprefix
- message prefix/sourcecommand
- message command/verbparams
- an array of middle and trailing parameters
Optional options
object supports
parsePrefix
- replace the prefix with an object generated by irc-prefix-parser. Defaults tofalse
.convertTimestamp
- if the message has a time tag, convert it into a JavaScriptDate
object (see server-time spec for reference). Defaults tofalse
.
var net = require('net')
var ircMsg = require('irc-message')
net.connect(6667, 'irc.freenode.net')
.pipe(ircMsg.createStream())
.on('data', function(message) {
console.log(message)
})
You can also access the message parser directly. The parser function expects a string without any CRLF sequences. If the string is malformed, null
is returned. Otherwise, an object representing the message is returned (see createStream()
for format).
var parse = require('irc-message').parse
console.log(parse(':hello!sir@madam PRIVMSG #test :Hello, world!'))
/* {
* raw: ':hello!sir@madam PRIVMSG #test :Hello, world!',
* tags: {},
* prefix: 'hello!sir@madam',
* command: 'PRIVMSG',
* params: ['#test', 'Hello, world!']
* }
*/