30 lines
801 B
TypeScript
30 lines
801 B
TypeScript
|
import { IIRCLine } from '../types/irc.interfaces';
|
||
|
|
||
|
export interface WhoResponse {
|
||
|
channel?: string;
|
||
|
username?: string;
|
||
|
hostname?: string;
|
||
|
server?: string;
|
||
|
nickname?: string;
|
||
|
modes?: string[];
|
||
|
oper?: boolean;
|
||
|
hops?: number;
|
||
|
realname?: string;
|
||
|
}
|
||
|
|
||
|
export const parseWho = (lines: IIRCLine[]): WhoResponse[] => {
|
||
|
return lines
|
||
|
.filter(({ command }) => command === '352')
|
||
|
.map((line) => ({
|
||
|
channel: line.arguments[1],
|
||
|
username: line.arguments[2],
|
||
|
hostname: line.arguments[3],
|
||
|
server: line.arguments[4],
|
||
|
nickname: line.arguments[5],
|
||
|
modes: line.arguments[6].split(''),
|
||
|
oper: line.arguments[6].includes('*'),
|
||
|
hops: parseInt(line.trailing.split(' ')[0], 10),
|
||
|
realname: line.trailing.split(' ').slice(1).join(' '),
|
||
|
}));
|
||
|
};
|