diff --git a/lib/irc.js b/lib/irc.js index e70f6cd..2286fcb 100644 --- a/lib/irc.js +++ b/lib/irc.js @@ -364,6 +364,13 @@ export function parseCTCP(msg) { return ctcp; } +function unescapeISUPPORTValue(s) { + return s.replace(/\\x[0-9A-Z]{2}/gi, (esc) => { + let hex = esc.slice(2); + return String.fromCharCode(parseInt(hex, 16)); + }); +} + export function parseISUPPORT(tokens, params) { let changed = []; tokens.forEach((tok) => { @@ -377,7 +384,7 @@ export function parseISUPPORT(tokens, params) { let k = tok, v = ""; if (i >= 0) { k = tok.slice(0, i); - v = tok.slice(i + 1); + v = unescapeISUPPORTValue(tok.slice(i + 1)); } k = k.toUpperCase();