Silence on Flood

By Slite89 on Mar 03, 2008

After submitting 8 lines of text within 5 seconds, a user will be silenced in the channel for two minutes, as well as given a warning to not flood.

Also, the script will send a message to #staff notifying users in #staff that the user has been silenced in the channel. This is obviously an optional feature.

Additionally, if the user is an operator on the channel, then it will have no effect.

on *:TEXT:*:#:{
  if ($nick == $me) {
    halt
  }
  if ($nick isop $chan) {
    halt
  }
  inc -u5 %flood. [ $+ [ $nick ] ]
  if (%flood. [ $+ [ $nick ] ] == 8) {
    /mode $chan +b ~q: $+ $address( $nick , 2 )
    /msg $chan $nick You have been silenced for two minutes. Please don't flood.
    /msg #staff $nick has been silenced in $chan for flooding.
    /timer 5 120 /mode $chan -b ~q: $+ $address( $nick , 2 )
  }
}

Comments

Sign in to comment.
napa182   -  Aug 31, 2008

you can use it this way so you can turn it on in channels you want it to run in

on @*:TEXT:*:#:{
  if ($nick(#,$nick,r) && $istok(%sflood,$chan,44))  {
    inc -u5 $+(%,flood.,$nick)
    if ($($+(%,flood.,$nick),2) = 8) {
      mode $chan +b ~q: $+ $address($nick,2)
      msg $chan $nick You have been silenced for two minutes. Please don't flood.
      msg #staff $nick has been silenced in $chan for flooding.
      $+(.,timersilenced,.,$nick) 1 120 mode $chan -b ~q: $+ $address($nick,2)
    }
  }
}
menu channel {
  .Silence on Flood
  .. $iif($istok(%sflood,$chan,44),Turn Off in Room # ,Turn On in Room # ):{ set %sflood $iif(!$istok(%sflood,$chan,44),$addtok(%sflood,$chan,44),$remtok(%sflood,$chan,1,44)) | echo -a $iif($istok(%sflood,$chan,44),Silence on Flood is now On in room # .,Silence on Flood is now Off in room # .) } 
}

Doodle said:

whats the proper 'if' if they're voiced?
um you can do it like this

 if ($nick isvoice #) or you can do it like this if ($nick(#,$nick,v) or you can add both voiced and reg users to it like this
if ($nick(#,$nick,vr)
 Respond  
AlexHopper   -  Aug 30, 2008

this is a good one =3

menu channel { 
  .$iif($group(#flood-kick).status iswm on, flood-kick is on, flood-kick is off) 
  ..Turn flood-kick off:disable #flood-kick
  ..Turn flood-kick on:enable #flood-kick
}

#flood-kick on
on *:TEXT:*:#:{
  if ($nick == $me) {
    halt
  }
  if ($nick isop $chan) {
    halt
  }
  inc -u5 %flood. [ $+ [ $nick ] ]
  if (%flood. [ $+ [ $nick ] ] == 8) {
    /mode $chan +q $+ $address( $nick , 2 )
    /msg $chan $nick You have been silenced for two minutes. Please don't flood.
    /msg #staff $nick has been silenced in $chan for flooding.
    /timer 1 120 /mode $chan -q $+ $address( $nick , 2 )
  }
}
#flood-kick end
 Respond  
Doodle   -  Aug 18, 2008

hmm

whats the proper 'if' if they're voiced?

 Respond  
Doodle   -  Aug 18, 2008

Hi slite.

 Respond  
Slite89   -  Mar 03, 2008

Thanks napa182

 Respond  
napa182   -  Mar 03, 2008

that will set a timer to each nick that floods ;)

 Respond  
napa182   -  Mar 03, 2008

you can try this Oh and also you can not set off ur own on text events so you dont need to use if ($nick == $me) { halt

on @*:TEXT:*:#:{
  if ($nick(#,$nick,r))  {
    inc -u5 $+(%,flood.,$nick)
    if ($($+(%,flood.,$nick),2) = 8) {
      mode $chan +b ~q: $+ $address($nick,2)
      msg $chan $nick You have been silenced for two minutes. Please don't flood.
      msg #staff $nick has been silenced in $chan for flooding.
      $+(.,timersilenced,.,$nick) 1 120 mode $chan -b ~q: $+ $address($nick,2)
    }
  }
}
 Respond  
Slite89   -  Mar 03, 2008

I was mostly wondering if there is a way to undo the silence without using the timer. It seems to me as if more than one person were flooding in the same two minute period, the timer would reset itself and the first silence would not be removed in the allotted two minutes.

 Respond  
Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.