import { IIRCLine } from '../types/irc.interfaces'; export interface WhoisResponse { nickname?: string; hostmask?: string; realname?: string; channels?: string[]; connectingFrom?: string; usingModes?: string; server?: string; serverName?: string; title?: string; loggedInAs?: string; bot?: boolean; registered?: boolean; secure?: boolean; signOnTime?: number; idleSeconds?: number; } export function parseWhois(lines: IIRCLine[]) { const data: WhoisResponse = {}; lines.forEach((line) => { switch (line.command) { case '311': data.nickname = line.arguments![1]; data.hostmask = `${line.arguments![2]}@${line.arguments![3]}`; data.realname = line.trailing || ''; break; case '319': data.channels = line.trailing?.split(' '); break; case '378': data.connectingFrom = line.trailing; break; case '379': data.usingModes = line.trailing; break; case '312': data.server = line.arguments![2]; data.serverName = line.trailing || ''; break; case '313': data.title = line.trailing; break; case '330': data.loggedInAs = line.arguments![2]; break; case '335': data.bot = true; break; case '307': data.registered = true; break; case '671': data.secure = true; break; case '317': data.signOnTime = parseInt(line.arguments![3], 10); data.idleSeconds = parseInt(line.arguments![2], 10); break; } }); return data; }