Nice 8)
Sharing a modification that was requested to handle the case where the ban list is not populated for the source channel, and also bot trigger:
on *:text:!bansync*:#: { if (($nick isop $chan) || ($nick ishop $chan)) { bansync $2 $$3 } }
alias bansync {
if (($me !isop $1) && ($me !ishop $1)) { echo -a Not an operator on $1 | return }
if ($me !ison $$2) { echo -a Not on channel $2 | return }
echo -a Synchronizing the banlist of $1 to the banlist of $+($2,.)
if (!$chan($2).ibl) { set -e %BanSync $1 $2 | .enable #BanSync | .timerBanSyncTimeout 1 8 modesync $1 $2 timeout | mode $2 +b }
else { modesync $1 $2 }
}
#BanSync off
raw 368:*: { .timerBanSyncTimeout off | .disable #BanSync | if (%BanSync) { modesync %BanSync | unset %BanSync } }
#BanSync end
alias -l modesync {
if ($3) { .disable #BanSync }
var %x $ibl($2,0)
while %x {
var %y $addtok(%y,$ibl($2,%x),32)
if $numtok(%y,32) == $modespl { mode $1 + $+ $str(b,$modespl) %y | var %y $null }
dec %x
}
if %y { mode $1 + $+ $str(b,$modespl) %y }
}