rendered paste bodyon *:CONNECT: {
var %i = 1 | while ($var(%i.limit*,%i)) { check.timerstart $mid($v1,9) | inc %i }
}
alias check.timerstart {
if (!%i.interval [ $+ [ $1 ] ]) { set %i.interval $+ $1 180 }
.timercheckidle. $+ $1 0 %i.interval [ $+ [ $1 ] ] check.idle $1
}
alias check.timerstop { .timercheckidle. $+ $1 OFF }
alias check.idle {
if ($me !isop $1) { return }
var %chan = $1
if (!%i.limit [ $+ [ $1 ] ]) {
.echo 4 -a Idle Check is not set for %chan
return
}
var %i = $nick(%chan,0,o), %chunk
while (%i) {
var %n = $nick(%chan,%i,o)
if (%n != $me) && ($nick(%chan,%i,o).idle > %i.limit [ $+ [ %chan ] ]) {
.msg %n Idle Time Limit is : %i.limit [ $+ [ %chan ] ]
var %chunk = $addtok(%chunk,%n,32)
if ($numtok(%chunk,32) == $modespl) {
mode %chan $+(-,$str(o,$modespl)) %chunk
var %chunk
}
}
dec %i
}
if (%chunk) { mode %chan $+(-,$str(o,$numtok(%chunk,32))) %chunk }
}
menu channel {
-
Idle Limiter
.Set :set %i.limit $+ $chan $$?="Idle limit? (60 = 1 minute) "
.Reset :unset %i.limit $+ $chan
.Check Now: { check.idle $chan }
.-
.Start Auto Check: { check.timerstart $chan }
.Stop Auto Check: { check.timerstop $chan }
.Interval ( $+ %i.interval [ $+ [ $chan ] ] $+ ): {
set %i.interval $+ $chan $$?="Interval in sec for $chan ?"
var %n = checkidle. $+ $chan | if (!$timer(%n)) { return }
check.timerstart $chan
}
-
}