I'm not sure if it was because I had it set to any channel rather than a specified channel. But replace the text in green with your channel and see if that has any effect. It is working fine here. I was testing it with Kick though, between you and I I don't like people idling. wink

Code:
on !*:Join:[color:green]#chan[/color]: {   
  if ($timer(idlechk)) {      
    return   
  }  
  else {     
    .timeridlechk 0 30 check.idle 
  }
}

alias check.idle { 
  var %nicks = $nick([color:green]#chan[/color],0)   
  while (%nicks) {    
    if ($nick([color:green]#chan[/color],%nicks).idle > 60) {
      if ($me isop [color:green]#chan[/color]) {
        if ($me isin $nick([color:green]#chan[/color],%nicks)) { return }      
        mode #Help +v $nick([color:green]#chan[/color],%nicks)        
      }    
    }
    dec %nicks 
  }
}


I have noticed that when you copy & paste from these forums, that you get all the text on one line so it is vital that you make sure the code is exactly as we see it. Otherwise it wont work, period.

The above code triggers when someone joins the channel #chan. The timers check every 30 seconds to see who has an idle time greater than 60 seconds, if they do they'll get voiced. It works fine for me here other than that I really don't know what else to suggest. /timeridlechk off possibly. That halts the timers for the script, and when someone joins it starts again. If its already started it is left and the command is halted.