By default, timers go belly-up when they come from a network which disconnects, unless you use the -o switch.

If you're going to have timers trying to survive past a disconnect event, you would need to handle the possibility that they trigger while that network is not in a connected state, or during the interval between on-connect and re-joining that channel. This is too much to easily do inside a timer, so instead of having the timer contain the message, it should call an alias while passing along the parameters needed to correctly handle things. Make an alias foobar then call it something like:

Code:
$+(timerzona.,$nick) -o 1 %randtime foobar $nick $chan msg .... 

alias foobar {
if (!$nick($2,$1)) {
if ($2 ischan) { echo $2 note: nick $1 is no longer in channel either due to quitting or changing nick | return }
$+(timer,$ctimer) -o 1 $rand(50,500) foobar $1 $unsafe( $2- )
return
}
msg $2 channelname is $2 and nick is $1 and message is $4-
}


Note the code now has code to verify whether the nick is still around. If you need to, you can also add code to deal with the situation where someone changes nick while you're in channel. You could check if you have a timer named after $nick and clone the timer to $newnick then kill the old timer