All pastes #1649476 Raw Edit

Channel Limit Revised

public text v1 · immutable
#1649476 ·published 2009-10-30 17:31 UTC
rendered paste body
on *:input:#:{
  if ($1 == +ml) {
    set %chanl $chan
    set %autolimit $calc($nick($chan,0,a)+1)
    mode $chan +l %autolimit
  }
  if ($1 == -ml) {
    unset %autolimit
    unset %chanl
    mode $chan -l
  }
  if ($1 == :block) {
    unset %autolimit
    mode $chan +l $calc($nick($chan,0,a))
    mode $chan +im
  }
  if ($1 == :deblock) {
    mode $chan -im
    set %autolimit $calc($nick($chan,0,a)+1)
    mode $chan +l %autolimit
  }
}
on *:join:%chanl:{
  if ( $me isop $chan) {
    if (%channel.limit == on) { halt }
    set -u60 %channel.limit on
    .inc %autolimit
    .timer1 1 1 /mode # +l %autolimit
  }
}

on *:part:%chanl:{
  if ( $me isop $chan) {
    .dec %autolimit
    .timer2 1 1 /mode # +l %autolimit
  }
}
on *:kick:%chanl:{
  if ( $me isop $chan) {
    .dec %autolimit
    .timer3 1 1 /mode # +l %autolimit
  }
}
on *:quit:{
  var %i 1, %c $comchan($nick,0)
  while %i <= %c {
    if ($me isop $comchan($nick,%i)) && ($comchan($nick,%i) == %chanl) { timer4 1 1 mode $comchan($nick,%i) +l $calc($nick($comchan($nick,%i),0,a)+1) }
    inc %i
  }
}