https://github.com/tmijs/irc-parser
https://github.com/tmijs/irc-parser
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/tmijs/irc-parser
- Owner: tmijs
- License: mit
- Created: 2024-08-01T06:53:22.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-01-18T06:43:26.000Z (6 months ago)
- Last Synced: 2025-04-04T01:03:24.177Z (3 months ago)
- Language: JavaScript
- Size: 53.7 KB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# @tmi.js/irc-parser
IRC parsing package for the `@tmi.js/chat` library
# Install
```bash
npm i @tmi.js/irc-parser
```# Usage
```ts
import {
parse, parseTagsFromString, parseTag, parsePrefix,
format, formatTags, formatChannel, formatPrefix,
unescapeIrc, escapeIrc
} from '@tmi.js/irc-parser';
import type {
IrcMessage, ChannelString,
ParsedTags, ParsedTagData, ParseTagCallbackFn,
FormatMessage
} from '@tmi.js/irc-parser';handleMessage('@a-number-key=123;a-boolean-key=true :[email protected] PRIVMSG #channel :Hello, world!');
// [#channel] Hello, world!function handleMessage(ircString: string) {
const ircMessage = parse(ircString, (key, value, params) => {
switch(key) {
case 'a-number-key':
return [ key, parseInt(value, 10) ];
case 'a-boolean-key':
return [ key, value === '1' || value === 'true' ];
}
return [ key, value ];
});
const { channel, command, params, prefix, tags } = ircMessage;
switch(command) {
case 'PING':
ws.send(format({ command: 'PONG' }));
break;
case 'PRIVMSG':
console.log(`[${channel}] <${prefix.user}> ${params[0]}`);
if(params[0].startsWith('!help')) {
ws.send(format({
command: 'PRIVMSG',
channel,
params: [ helpString ]
}));
}
break;
}
}
```