Description
This mIRC script can be used to automatically relay all activity from one channel to another. It has built in anti-flooding and anti-CTCP measures. I noticed renewed interest in it, so I figured I'd put it on here. Thanks to elevator and the CT relayers for helping out when I first wrote it, back in the day.
Bugs
If you find bugs, I would appreciate it if you could report them to me. I can be found on irc.netgamers.net, find me by using:
/msg P info mz
Licence
I release this (de)script(ion) into the public domain, so do whatever the hell you like.
Script
To make the script work, create a new remote script in mIRC, and copy paste the following script into it:
on *:JOIN:%fromchan: {
if ($nick == $me) {
set %who $true | .who $chan | .timerwho 1 3 set %who $false
resetrelay
}
writerelay %tochan Join: $nick - $address($nick,5)
}
on *:NICK: { if ($newnick ison %fromchan) { writerelay %tochan Nick: $nick -> $newnick - $address($newnick,5) } }
on *:QUIT: { if ($nick ison %fromchan) { writerelay %tochan Quit: $nick - $address($nick,5) } }
on *:PART:%fromchan: { writerelay %tochan Part: $nick - $address($nick,5) }
on *:NOTICE:*:%fromchan: { writerelay %tochan Notice: $nick - $1- }
on *:INPUT:%fromchan: {
if (($left($1,1) != $chr(47)) || ($ctrlenter)) { writerelay %tochan < $+ $me $+ > $1- }
elseif ($1 == /me) { writerelay %tochan * $me $2- }
}
on *:TEXT:*:%fromchan: { writerelay %tochan < $+ $nick $+ > $1- }
on *:ACTION:*:%fromchan: { writerelay %tochan * $nick $1- }
on *:TOPIC:%fromchan:{ writerelay %tochan Topic: $nick - $1- }
on *:MODE:%fromchan:{ writerelay %tochan Mode: $nick - $1- }
on *:SERVERMODE:%fromchan:{ writerelay %tochan Mode: $nick - $1- }
on *:OP:%fromchan:{ writerelay %tochan Op: $nick - $opnick }
on *:SERVEROP:%fromchan:{ writerelay %tochan Op: $nick - $opnick }
on *:DEOP:%fromchan:{ writerelay %tochan Deop: $nick - $opnick }
on *:VOICE:%fromchan:{ writerelay %tochan Voice: $nick - $vnick }
on *:SERVERVOICE:%fromchan:{ writerelay %tochan Voice: $nick - $vnick }
on *:DEVOICE:%fromchan:{ writerelay %tochan Devoice: $nick - $vnick }
on *:BAN:%fromchan:{ writerelay %tochan Ban: $nick - $banmask }
on *:UNBAN:%fromchan:{ writerelay %tochan Unban: $nick - $banmask }
on *:KICK:%fromchan:{ writerelay %tochan Kick: $nick - $kmask }
ctcp ^*:*:%tochan:{ echo 4 -st * $chan was CTCP'ed by $address($nick,5) $+ ! | halt }
raw ^352:*:{ if (%who) { haltdef } }
alias -l writerelay {
echo 3 -sg $timestamp Saving...
write relay.log $1-
if (%waiting) {
set %waiting $false
relayrelay
}
}
alias relayrelay {
if ($lines(relay.log) != 0) {
set %waiting $false
var %chantext = $read(relay.log,t,1)
write -dl1 relay.log
var %delay = $min(5000,$calc(%prevdelay / 2 + 500 + 2 * $len(%chantext)))
set %prevdelay %delay
.notice %chantext
echo 4 -sg $timestamp Relaying...
.timerrelay -m 1 %delay relayrelay
}
else {
set %waiting $true
set %prevdelay 0
echo 7 -sg $timestamp Waiting...
}
}
alias resetrelay {
echo 3 -sg $timestamp Resetting...
write -c relay.log
set %waiting $true
set %prevdelay 0
}
alias min return $iif($$1 < $$2,$1,$2)
Then go to your variables tab, and paste the following two lines into it:
%fromchan #private
%tochan #public
Change the channel names to get the behaviour you want. The above example relays from #private to #public.