MoonScript IRC — File Browser

MoonScriptIRCv3.0 / MoonScriptIRCv3.0 / system / kicks2.mrc

kicks2.mrc — 16.7 KB — Download this file

on @3:JOIN:#: {
  if ( %badnick == ON ) { goto badnick }
  else { goto clones }
  :badnick
  if ( %badwerd.1 isin $nick ) || ( %badwerd.2 isin $nick ) || ( %badwerd.3 isin $nick ) || ( %badwerd.4 isin $nick ) || ( %badwerd.5 isin $nick ) || ( %badwerd.6 isin $nick ) || ( %badwerd.7 isin $nick ) || ( %badwerd.8 isin $nick ) || ( %badwerd.9 isin $nick ) || ( %badwerd.10 isin $nick ) {
    inc %knum 1
    if ( $remove(%bantime,-u) > 0 ) { ban %bantime $chan $nick 3 | mode # +b $nick }
    kick $chan $nick Unacceptable Nick $kicklogo
    goto end
  }
  else { goto clones } 
  :clones
  if ( %clonekick == ON ) {
    if ( $ialchan($address($nick,2),$chan,0) > %maxclones ) {
      %clone.which = 0
      %clone.total = $ialchan($address($nick,2),$chan,0)
      goto clonelist
    }
    else { goto revolve }
  }
  else { goto revolve }
  :clonelist 
  inc %clone.which 1
  if ( %clone.which > %clone.total ) { goto cloneopcheck }
  else { 
    %clone.nicks = %clone.nicks $gettok($ialchan($address($nick,2),$chan,%clone.which),1,33)
    goto clonelist
  }
  :cloneopcheck
  %clone.which = 0
  %clone.total = $ialchan($address($nick,2),$chan,0)
  goto cloneopcheckloop
  :cloneopcheckloop
  inc %clone.which 1
  if ( %clone.which > %clone.total ) { goto clonekick }
  elseif ( $gettok($ialchan($address($nick,2),$chan,%clone.which),1,33) isop $chan ) { echo -a 4>>> 12Op'd Clones in $chan $+ : %clone.nicks ( $+ $gettok($address($nick,2),2,64) $+ ) 12<<< | goto revolve }
  else { goto cloneopcheckloop }
  :clonekick
  .notice $nick Clones are not allowed in $chan ( $+ %clone.nicks $+ ) $irc
  if ( $nick ison $chan ) && ( $nick !isop $chan ) { inc %knum 1 }
  if ( $nick ison $chan ) && ( $nick !isop $chan ) && ( $remove(%bantime,-u) > 0 ) { ban %bantime $chan $nick 3 } 
  if ( $nick ison $chan ) && ( $nick !isop $chan ) { kick $chan $nick Clones Detected: %clone.nicks ( $+ $gettok($address($nick,2),2,64) $+ ) $kicklogo }
  goto end
  :revolve
  if ( %rdoor = ON ) {
    if ( %revolve. [ $+ [ $wildsite ] ] == $null ) { set %revolve. [ $+ [ $wildsite ] ] 1 | .timer 1 5 unset %revolve. [ $+ [ $wildsite ] ] | goto end }
    elseif ( %revolve. [ $+ [ $wildsite ] ] isnum 1-3 ) { inc %revolve. [ $+ [ $wildsite ] ] 1 | .timer 1 5 unset %revolve. [ $+ [ $wildsite ] ] | goto end }
    elseif ( %revolve. [ $+ [ $wildsite ] ] == 4 ) {
      inc %knum 1 
      if ( $remove(%bantime,-u) > 0 ) { ban %bantime $chan $nick 3 }
      .timer 1 05 if ( $nick ison $chan ) { kick $chan $nick Revolving Door Flood $kicklogo }
      unset %revolve. [ $+ [ $wildsite ] ] 
      goto end 
    }
    else { goto end }
  } 
  else { goto end }
  :end
  unset %clone.*
}
on @3:PART:#: {
  if ( %rdoor == ON ) {
    if ( %revolve. [ $+ [ $wildsite ] ] == $null ) { set %revolve. [ $+ [ $wildsite ] ] 1 | .timer 1 5 unset %revolve. [ $+ [ $wildsite ] ] | goto end }
    elseif ( %revolve. [ $+ [ $wildsite ] ] isnum 1-2 ) { inc %revolve. [ $+ [ $wildsite ] ] 1 | .timer 1 5 unset %revolve. [ $+ [ $wildsite ] ] | goto end }
    elseif ( %revolve. [ $+ [ $wildsite ] ] == 3 ) { 
      inc %knum 1
      if ( $remove(%bantime,-u) > 0 ) { ban %bantime $chan $nick 3 }
      .timer 1 05 if ( $nick ison $chan ) { kick $chan $nick Revolving Door Flood $kicklogo }
      unset %revolve. [ $+ [ $wildsite ] ] 
      goto end 
    }
    else { goto end } 
  }
  else { goto end }
  :end
}
on @3:NICK: {
  if ( %badnick == ON ) { goto badnick }
  else { goto nickflood }
  :badnick
  if ( %badwerd.1 isin $newnick ) || ( %badwerd.2 isin $newnick ) || ( %badwerd.3 isin $newnick ) || ( %badwerd.4 isin $newnick ) || ( %badwerd.5 isin $newnick ) || ( %badwerd.6 isin $newnick ) || ( %badwerd.7 isin $newnick ) || ( %badwerd.8 isin $newnick ) || ( %badwerd.9 isin $newnick ) || ( %badwerd.10 isin $newnick ) {
    set %badnick.total $comchan($newnick,0)
    set %badnick.which 0
    goto { kicknick }
  }
  else { goto nickflood }
  :kicknick
  if ( %badnick.which > %badnick.total ) { goto end }
  else {
    inc %badnick.which 1
    if ( $me isop $comchan($newnick,%badnick.which)) && ( $newnick !isop $comchan($newnick,%badnick.which)) {
      inc %knum 1
      if ( $remove(%bantime,-u) > 0 ) { ban %bantime $comchan($newnick,%badnick.which)) $newnick 4 }
      kick $comchan($newnick,%badnick.which)) $nick Unacceptable Nick Change $kicklogo
      goto kicknick
    }   
    else { goto kicknick } 
  }
  :nickflood
  if (( %nickflood [ $+ [ $wildsite ] ] == $null ) && ( %nickflood == ON )) { set %nickflood [ $+ [ $wildsite ] ] 1 | .timer 1 5 unset %nickflood [ $+ [ $wildsite ] ] | goto end }
  elseif (( %nickflood [ $+ [ $wildsite ] ] >= 1 ) && ( %nickflood [ $+ [ $wildsite ] ] <= 2 ) && ( %nickflood == ON )) { inc %nickflood [ $+ [ $wildsite ] ] 1 | .timer 1 5 unset %nickflood [ $+ [ $wildsite ] ] | goto end }
  elseif (( %nickflood [ $+ [ $wildsite ] ] == 3 ) && ( %nickflood == ON )) { 
    set %floodnick.total $comchan($newnick,0)
    set %floodnick.which 0
    goto { floodkick }
  }
  else { goto end }
  :floodkick
  if ( %floodnick.which > %floodnick.total ) { goto end }
  else {
    inc %floodnick.which 1
    if ( $me isop $comchan($newnick,%floodnick.which)) && ( $newnick !isop $comchan($newnick,%floodnick.which)) {
      inc %knum 1
      if ( $remove(%bantime,-u) > 0 ) { mode $comchan($newnick,%floodnick.which)) +b $wildsite | .timer 1 $remove(%bantime,-u) mode $comchan($newnick,%floodnick.which)) -b $wildsite  }
      kick $comchan($newnick,%floodnick.which)) $nick Nick Flood $kicklogo
      goto floodkick
    }   
    else { goto floodkick } 
  }
  :end
  unset %badnick.*
  unset %floodnick.*
}
on @3:INVITE:#: {
  if ( %invite == ON ) { 
    set %invite.total $comchan($nick,0)
    set %invite.which 0  
    goto invite 
  }
  else { goto end }
  :invite
  if ( %invite.which > %invite.total ) { goto end }
  else {
    inc %invite.which 1
    if ( $me isop $comchan($nick,%invite.which)) && ( $nick !isop $comchan($nick,%invite.which)) {
      inc %knum 1
      if ( $remove(%bantime,-u) > 0 ) { ban %bantime $comchan($nick,%invite.which)) $nick 4 }
      kick $comchan($nick,%invite.which)) $nick Invites $kicklogo
      goto invite
    }   
    else { goto invite } 
  }
  :end
  unset %invite.*
}
on @3:NOTICE:*:#: {
  if ( $nick isop $chan ) { goto end }
  elseif ( %ad.1 isin $strip($1-)) || ( %ad.2 isin $strip($1-)) || ( %ad.3 isin $strip($1-)) || ( %ad.4 isin $strip($1-)) || ( %ad.5 isin $strip($1-)) || ( %ad.6 isin $strip($1-)) || ( %ad.7 isin $strip($1-)) || ( %ad.8 isin $strip($1-)) || ( %ad.9 isin $strip($1-)) || ( %ad.10 isin $strip($1-)) && ( $chan !isin $strip($1-)) && ( %advertise == ON ) {
    inc %knum 1
    if ( $remove(%bantime,-u) > 0 ) { ban %bantime $chan $nick 3 }
    kick $chan $nick Channel Notice Advertising $kicklogo
    goto end     
  }
  else { goto end }
  :end
}
on @3:TEXT:*:#: {
  if ( %swear == OFF ) { goto end }
  if  ( $nick isop $chan ) { goto end }
  else { goto swear }
  :swear
  if ( %badwerd.1 isin $strip($1-) ) || ( %badwerd.2 isin $strip($1-) ) || ( %badwerd.3 isin $strip($1-) ) || ( %badwerd.4 isin $strip($1-) ) || ( %badwerd.5 isin $strip($1-) ) || ( %badwerd.6 isin $strip($1-) ) || ( %badwerd.7 isin $strip($1-) ) || ( %badwerd.8 isin $strip($1-) ) || ( %badwerd.9 isin $strip($1-) ) || ( %badwerd.10 isin $strip($1-) ) && ( .mp3 !isin $strip($1-)) {
    inc %knum 1
    if ( $remove(%bantime,-u) > 0 ) { ban %bantime $chan $nick 3 }
    kick $chan $nick Offensive Language $kicklogo
    goto end
  }
  else { goto advertise }
  :advertise
  if ( %ad.1 isin $strip($1-)) || ( %ad.2 isin $strip($1-)) || ( %ad.3 isin $strip($1-)) || ( %ad.4 isin $strip($1-)) || ( %ad.5 isin $strip($1-)) || ( %ad.6 isin $strip($1-)) || ( %ad.7 isin $strip($1-)) || ( %ad.8 isin $strip($1-)) || ( %ad.9 isin $strip($1-)) || ( %ad.10 isin $strip($1-)) && ( $chan !isin $strip($1-)) && ( %advertise == ON ) {
    inc %knum 1
    if ( $remove(%bantime,-u) > 0 ) { ban %bantime $chan $nick 3 }
    kick $chan $nick Channel Advertising $kicklogo
    goto end     
  }
  else { goto longtext }
  :longtext
  if ( $len($strip($1-)) >= %lenmax ) && ( %longtext == ON ) {
    inc %knum 1
    if ( $remove(%bantime,-u) > 0 ) { ban %bantime $chan $nick 3 }
    kick $chan $nick Long Text Flood $kicklogo
    goto end
  } 
  else { goto ccodes }
  :ccodes
  if ( %ccodes == ON ) {
    %ccodes.text = $1-
    %ccodes.total = $count(%ccodes.text,)
    %ccodes.total = $calc(%ccodes.total + $count(%ccodes.text,))
    %ccodes.total = $calc(%ccodes.total + $count(%ccodes.text,))
    %ccodes.total = $calc(%ccodes.total + $count(%ccodes.text,))
    if ( %ccodes.total > %maxcodes ) {
      inc %knum 1
      if ( $remove(%bantime,-u) > 0 ) { ban %bantime $chan $nick 3 }
      kick $chan $nick Excessive Control Codes $kicklogo
      unset %ccodes.*
      goto end
    }
    else { unset %ccodes.* | goto caps }
  }
  else { goto caps }
  :caps
  if ( %caps == OFF ) { goto repeat } 
  .set %caps.len $calc($capkick($parms)/$len($parms)*100)
  if ( %caps.len >= %maxcaps ) && ( $len($parms) >= %maxlen ) { goto capskick }
  else { goto repeat }
  :capskick
  if ( %capswarn. [ $+ [ $chan [ $+ [ $nick ] ] ] ] == YES ) {
    inc %knum 1
    if ( $remove(%bantime,-u) > 0 ) { ban %bantime $chan $nick 3 }
    kick $chan $nick Excessive Caps ( $+ $round(%caps.len,2) $+ $chr(37) caps >= $round(%maxcaps,2) $+ $chr(37) limit) $kicklogo
    .unset %caps.*
    .unset %capswarn. [ $+ [ $chan [ $+ [ $nick ] ] ] ]
    halt
  }
  else {
    .notice $nick $nick $+ , The use of caps is considered YELLING and/or being rude. Do not use excessive caps or you will be kicked from $chan $irc 
    ;.onotice $chan $irc Warning sent to $nick in $chan for Excessive Caps
    .set %capswarn. [ $+ [ $chan [ $+ [ $nick ] ] ] ] YES
    .timer 1 600 unset %capswarn. [ $+ [ $chan [ $+ [ $nick ] ] ] ]
    .unset %caps.*
  }
  :capsdone
  .unset %caps.*
  :repeat
  if (( %2 [ $+ [ $chan [ $+ [ $nick ] ] ] ] == $null ) && ( %repeat == ON )) { set %2 [ $+ [ $chan [ $+ [ $nick ] ] ] ] $strip($1-) | /.timer 1 5 unset %2 [ $+ [ $chan [ $+ [ $nick ] ] ] ] | goto flood }
  elseif (( %2 [ $+ [ $chan [ $+ [ $nick ] ] ] ] == $strip($1-)) && ( %3 [ $+ [ $chan [ $+ [ $nick ] ] ] ] == $null ) && ( %repeat == ON )) { set %3 [ $+ [ $chan [ $+ [ $nick ] ] ] ] $strip($1-) | /.timer 1 5 unset %3 [ $+ [ $chan [ $+ [ $nick ] ] ] ] | goto flood }
  elseif (( %3 [ $+ [ $chan [ $+ [ $nick ] ] ] ] == $strip($1-)) && ( %repeat == ON )) { 
    inc %knum 1 
    if ( $remove(%bantime,-u) > 0 ) { ban %bantime $chan $nick 3 }
    kick $chan $nick Repeat Flood $kicklogo
    goto end 
  }
  else { goto flood }
  :flood
  if (( %floodcheck [ $+ [ $nick [ $+ [ $chan ] ] ] ] == $null ) && ( %flood == ON )) { set %floodcheck [ $+ [ $nick [ $+ [ $chan ] ] ] ] 1 | .timer 1 5 unset %floodcheck [ $+ [ $nick [ $+ [ $chan ] ] ] ] | goto end }
  elseif (( %floodcheck [ $+ [ $nick [ $+ [ $chan ] ] ] ] >= 1 ) && ( %floodcheck [ $+ [ $nick [ $+ [ $chan ] ] ] ] <= 5 ) && ( %flood == ON )) { inc %floodcheck [ $+ [ $nick [ $+ [ $chan ] ] ] ] 1 | .timer 1 5 unset %floodcheck [ $+ [ $nick [ $+ [ $chan ] ] ] ] | goto end }
  elseif (( %floodcheck [ $+ [ $nick [ $+ [ $chan ] ] ] ] == 6 ) && ( %flood == ON )) { 
    inc %knum 1 
    if ( $remove(%bantime,-u) > 0 ) { ban %bantime $chan $nick 3 }
    kick $chan $nick Text Flood $kicklogo
    unset %floodcheck [ $+ [ $nick [ $+ [ $chan ] ] ] ]
    goto end 
  }
  else { goto end }
  :end
}   
on @3:ACTION:*slaps*trout*:#: {
  if ( $nick isop $chan ) { goto end }
  elseif ( %troutslap == ON ) && ( $me isin $strip($1-)) { 
    inc %knum 1
    if ( $remove(%bantime,-u) > 0 ) { ban %bantime $chan $nick 3 }
    kick $chan $nick Trout Kick $kicklogo
    goto end
  }
  else { goto end }
  :end
}
on @3:ACTION:*:#: {
  if ( %swear == OFF ) { goto end }
  if ( $nick isop $chan ) { goto end }
  else { goto swear }
  :swear
  if ( %badwerd.1 isin $strip($1-) ) || ( %badwerd.2 isin $strip($1-) ) || ( %badwerd.3 isin $strip($1-) ) || ( %badwerd.4 isin $strip($1-) ) || ( %badwerd.5 isin $strip($1-) ) || ( %badwerd.6 isin $strip($1-) ) || ( %badwerd.7 isin $strip($1-) ) || ( %badwerd.8 isin $strip($1-) ) || ( %badwerd.9 isin $strip($1-) ) || ( %badwerd.10 isin $strip($1-) ) && ( .mp3 !isin $strip($1-)) {
    inc %knum 1
    if ( $remove(%bantime,-u) > 0 ) { ban %bantime $chan $nick 3 }
    kick $chan $nick Offensive Language $kicklogo
    goto end
  }
  else { goto advertise }
  :advertise
  if ( %ad.1 isin $strip($1-)) || ( %ad.2 isin $strip($1-)) || ( %ad.3 isin $strip($1-)) || ( %ad.4 isin $strip($1-)) || ( %ad.5 isin $strip($1-)) || ( %ad.6 isin $strip($1-)) || ( %ad.7 isin $strip($1-)) || ( %ad.8 isin $strip($1-)) || ( %ad.9 isin $strip($1-)) || ( %ad.10 isin $strip($1-)) && ( $chan !isin $strip($1-)) && ( %advertise == ON ) {
    inc %knum 1
    if ( $remove(%bantime,-u) > 0 ) { ban %bantime $chan $nick 3 }
    kick $chan $nick Channel Advertising $kicklogo
    goto end     
  }
  else { goto longtext }
  :longtext
  if ( $len($strip($1-)) >= %lenmax ) && ( %longtext == ON ) {
    inc %knum 1
    if ( $remove(%bantime,-u) > 0 ) { ban %bantime $chan $nick 3 }
    kick $chan $nick Long Text Flood $kicklogo
    goto end
  } 
  else { goto ccodes }
  :ccodes
  if ( %ccodes == ON ) {
    %ccodes.text = $1-
    %ccodes.total = $count(%ccodes.text,)
    %ccodes.total = $calc(%ccodes.total + $count(%ccodes.text,))
    %ccodes.total = $calc(%ccodes.total + $count(%ccodes.text,))
    %ccodes.total = $calc(%ccodes.total + $count(%ccodes.text,))
    if ( %ccodes.total > %maxcodes ) {
      inc %knum 1
      if ( $remove(%bantime,-u) > 0 ) { ban %bantime $chan $nick 3 }
      kick $chan $nick Excessive Control Codes $kicklogo
      unset %ccodes.*
      goto end
    }
    else { unset %ccodes.* | goto caps }
  }
  else { goto caps }
  :caps
  if ( %caps == OFF ) { goto repeat } 
  .set %caps.len $calc($capkick($parms)/$len($parms)*100)

  if ( %caps.len >= %maxcaps ) && ( $len($parms) >= %maxlen ) { goto capskick }
  else { goto repeat }
  :capskick
  if ( %capswarn. [ $+ [ $chan [ $+ [ $nick ] ] ] ] == YES ) {
    inc %knum 1
    if ( $remove(%bantime,-u) > 0 ) { ban %bantime $chan $nick 3 }
    kick $chan $nick Excessive Caps ( $+ $round(%caps.len,2) $+ $chr(37) caps >= $round(%maxcaps,2) $+ $chr(37) limit) $kicklogo
    .unset %caps.*
    .unset %capswarn. [ $+ [ $chan [ $+ [ $nick ] ] ] ]
    halt
  }
  else {
    .notice $nick $nick $+ , The use of caps is considered YELLING and/or being rude. Do not use excessive caps or you will be kicked from $chan $irc 
    ;.onotice $chan $irc Warning sent to $nick in $chan for Excessive Caps
    .set %capswarn. [ $+ [ $chan [ $+ [ $nick ] ] ] ] YES
    .timer 1 600 unset %capswarn. [ $+ [ $chan [ $+ [ $nick ] ] ] ]
    .unset %caps.*
  }
  :capsdone
  .unset %caps.*
  :repeat
  if (( %2 [ $+ [ $chan [ $+ [ $nick ] ] ] ] == $null ) && ( %repeat == ON )) { set %2 [ $+ [ $chan [ $+ [ $nick ] ] ] ] $strip($1-) | /.timer 1 5 unset %2 [ $+ [ $chan [ $+ [ $nick ] ] ] ] | goto flood }
  elseif (( %2 [ $+ [ $chan [ $+ [ $nick ] ] ] ] == $strip($1-)) && ( %3 [ $+ [ $chan [ $+ [ $nick ] ] ] ] == $null ) && ( %repeat == ON )) { set %3 [ $+ [ $chan [ $+ [ $nick ] ] ] ] $strip($1-) | /.timer 1 5 unset %3 [ $+ [ $chan [ $+ [ $nick ] ] ] ] | goto flood }
  elseif (( %3 [ $+ [ $chan [ $+ [ $nick ] ] ] ] == $strip($1-)) && ( %repeat == ON )) { 
    inc %knum 1 
    if ( $remove(%bantime,-u) > 0 ) { ban %bantime $chan $nick 3 }
    kick $chan $nick Repeat Flood $kicklogo
    goto end 
  }
  else { goto flood }
  :flood
  if (( %floodcheck [ $+ [ $nick [ $+ [ $chan ] ] ] ] == $null ) && ( %flood == ON )) { set %floodcheck [ $+ [ $nick [ $+ [ $chan ] ] ] ] 1 | .timer 1 5 unset %floodcheck [ $+ [ $nick [ $+ [ $chan ] ] ] ] | goto end }
  elseif (( %floodcheck [ $+ [ $nick [ $+ [ $chan ] ] ] ] >= 1 ) && ( %floodcheck [ $+ [ $nick [ $+ [ $chan ] ] ] ] <= 5 ) && ( %flood == ON )) { inc %floodcheck [ $+ [ $nick [ $+ [ $chan ] ] ] ] 1 | .timer 1 5 unset %floodcheck [ $+ [ $nick [ $+ [ $chan ] ] ] ] | goto end }
  elseif (( %floodcheck [ $+ [ $nick [ $+ [ $chan ] ] ] ] == 6 ) && ( %flood == ON )) { 
    inc %knum 1 
    if ( $remove(%bantime,-u) > 0 ) { ban %bantime $chan $nick 3 }
    kick $chan $nick Action Flood $kicklogo
    unset %floodcheck [ $+ [ $nick [ $+ [ $chan ] ] ] ]
    goto end 
  }
  else { goto end }
  :end
}   

alias capkick {
  set %caps.temp $remove($parms,$chr(32))
  set %inc 1
  set %caps.total 0
  :capscheck
  set %caps.num $mid(%caps.temp,%inc,1)
  if ( %caps.num == $null ) { goto end }
  elseif ( $asc(%caps.num) isnum 65-90 ) { inc %caps.total 1 | inc %inc 1 | goto capscheck }
  else { inc %inc 1 | goto capscheck }
  :end
  return %caps.total
}