fix WHO :D
This commit is contained in:
@@ -2122,6 +2122,10 @@ class WTVIRC {
|
|||||||
let found = false;
|
let found = false;
|
||||||
for (const [sock, nick] of this.nicknames.entries()) {
|
for (const [sock, nick] of this.nicknames.entries()) {
|
||||||
if (maskRegex.test(nick)) {
|
if (maskRegex.test(nick)) {
|
||||||
|
const usermodes = this.usermodes.get(nick) || [];
|
||||||
|
if (usermodes.includes('s')) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
found = true;
|
found = true;
|
||||||
socket.write(`:${this.servername} 352 ${socket.nickname} * ${nick} ${sock.host} ${this.servername} ${nick} H :0 ${nick}\r\n`);
|
socket.write(`:${this.servername} 352 ${socket.nickname} * ${nick} ${sock.host} ${this.servername} ${nick} H :0 ${nick}\r\n`);
|
||||||
}
|
}
|
||||||
@@ -2131,6 +2135,23 @@ class WTVIRC {
|
|||||||
}
|
}
|
||||||
socket.write(`:${this.servername} 315 ${socket.nickname} ${target} :End of /WHO list\r\n`);
|
socket.write(`:${this.servername} 315 ${socket.nickname} ${target} :End of /WHO list\r\n`);
|
||||||
break;
|
break;
|
||||||
|
} else {
|
||||||
|
const whoisSocket = Array.from(this.nicknames.keys()).find(
|
||||||
|
s => this.nicknames.get(s).toLowerCase() === target.toLowerCase()
|
||||||
|
);
|
||||||
|
if (whoisSocket) {
|
||||||
|
const usermodes = this.usermodes.get(whoisSocket.nickname) || [];
|
||||||
|
if (usermodes.includes('s')) {
|
||||||
|
// Skip invisible users
|
||||||
|
socket.write(`:${this.servername} 315 ${socket.nickname} ${target} :End of /WHO list\r\n`);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
socket.write(`:${this.servername} 352 ${socket.nickname} * ${whoisSocket.nickname} ${whoisSocket.host} ${this.servername} ${whoisSocket.nickname} H :0 ${whoisSocket.nickname}\r\n`);
|
||||||
|
} else {
|
||||||
|
socket.write(`:${this.servername} 401 ${socket.nickname} ${target} :No such nick/channel\r\n`);
|
||||||
|
}
|
||||||
|
socket.write(`:${this.servername} 315 ${socket.nickname} ${target} :End of /WHO list\r\n`);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user