send a SJOIN when receiving a SVSJOIN

This commit is contained in:
zefie
2025-06-16 16:35:03 -04:00
parent 8d0a074dda
commit 8035d12fa1

View File

@@ -888,6 +888,27 @@ class WTVIRC {
targetSocket.write(`:${nickname}!${username}@${hostname} JOIN ${channelName}\r\n`); targetSocket.write(`:${nickname}!${username}@${hostname} JOIN ${channelName}\r\n`);
this.broadcastChannel(channelName, `:${nickname}!${username}@${hostname} JOIN ${channelName}\r\n`, targetSocket); this.broadcastChannel(channelName, `:${nickname}!${username}@${hostname} JOIN ${channelName}\r\n`, targetSocket);
this.broadcastToAllServers(`:${sourceUniqueId} SVSJOIN ${channelName} ${targetUniqueId}\r\n`, socket); this.broadcastToAllServers(`:${sourceUniqueId} SVSJOIN ${channelName} ${targetUniqueId}\r\n`, socket);
var chan_modes = this.channelmodes.get(channelName) || [];
if (chan_modes === true) {
chan_modes = [];
}
let modeString = '';
let modeParams = [];
for (const m of chan_modes) {
if (m === 'k' && this.channelkeys.has(channelName)) {
modeString += 'k';
modeParams.push(this.channelkeys.get(channelName));
} else if (m === 'l' && this.channellimits.has(channelName)) {
modeString += 'l';
modeParams.push(this.channellimits.get(channelName));
} else if (typeof m === 'string' && m.length === 1 && m !== 'k' && m !== 'l') {
modeString += m;
}
}
if (modeString.length > 0) {
targetSocket.write(`:${this.servername} 324 ${nickname} ${channelName} +${modeString}${modeParams.length ? ' ' + modeParams.join(' ') : ''}\r\n`);
}
this.broadcastToAllServers(`:${this.serverId} SJOIN ${Math.floor(Date.now() / 1000)} ${channelName} +${modeString}${modeParams.length ? ' ' + modeParams.join(' ') : ''} ${targetUniqueId}\r\n`);
break; break;
case "SVSMODE": case "SVSMODE":
if (parts.length < 4) { if (parts.length < 4) {