The +f channel mode provides comprehensive flood protection for a channel. This mode allows you to prevent join, nick change, CTCP, text, and knock floods. The syntax for this mode’s parameter is as follows:

/mode #channel +f [{#}{,…}]:

The amount specifies the number of times the specified flood must occur before action is taken. Below are the available types:

Type Name Default Actions Other Actions
c CTCP +C (no channel CTCPs allowed) m (only voiced users can speak), M (only registered users can speak)
j Join +i (invite only) R (only registered users can join)
k Knock +K (no knocks allowed)  
m Messages +m (only voiced users can speak) +M (only registered users can speak)
n Nickname Change +N (no nickname changes allowed)  
t Text User is kicked from the channel +b (user is banned from the channel)

The difference between type m and t is that m is tallied for the entire channel whereas t is tallied per user.

If you choose to specify an action for a mode, you may also specify a time (in minutes) after which the specific action will be reversed.

An example of the use of this command is:

/mode #albachat +f [2c#C5,6j#R3,3k#K10,15m#m5,5n#N3,5t#b60]:5

This means…

  • If there are 2 channel CTCP messages (2c) in 5 seconds(:5) set mode +C for 5 mins (#C5)
  • If there are 6 joins (6j) in 5 seconds (:5) set mode +R for 3 mins (#R3)
  • If there are 3 /KNOCK commands on the channel (3k) in 5 seconds (:5) set mode +K for 10 mins (#K10)
  • If there are 15 messages in total from all users (15m) in 5 seconds (:5) set mode +m for 5 mins (#m5)
  • If there are 5 nickname changes (n5) in 5 seconds (:5) set mode +N for 3 mins (#N3)
  • If there are 5 messages from any single user (5t) in 5 seconds (:5) ban the user for 60 mins (#b60)

It has been observed lately that bot nets are joining channels and rapidly joining and parting. In order to prevent this, you can use channel mode j. This mode will allow only x joins to your channel in y seconds for each client. The recommended setting for this is 1 join in 1 second as this will entirely eradicate join/part flooding from botnets. An example of the use of this is:

/mode #albachat +j 1:1



If you need any help, come and see us in #ndihme on irc.zemra.org



Channel Flood Protection Addon


on *:text:*:albachat: {
  if ($nick isop #) || ($network != Zemra) { RETURN }
  set -u3 %fld. [ $+ [ $chan ] $+ . $+ [ $nick ] ] $calc( %fld. [ $+ [ $chan ] $+ . $+ [ $nick ] ] + 1)
  if (%fld. [ $+ [ $chan ] $+ . $+ [ $nick ] ] >= 4) {
    ban -u60 # $nick 11
    kick # $nick Please do not flood
  }
}

Bad Nick Kicker


on *:NICK: {
  if ($nick !isop #Albachat) {
    if (*fuck* iswm $nick) || (*xxl* iswm $nick) { 
      var %i = 0
      while (%i < $comchan($newnick,0)) { 
        inc %i 
        ban -u120 $comchan($newnick,%i) $newnick 3 | inc %knum 1
        kick #AlbaChat $newnick Nick i palejuar - merni nick tjeter! 
      }      
    }      
  }
}
 

Protection on IRC

Many users need protection and channel management tools, here we supply everyone with the tools and knowledge you'll need to IRC safely and securely operate your channel. There are two sections, one for channel protection and the other for personal protection.

Channel Protection

  • Guest Nick Kicker
  • !list Kicker
  • Mass Clone Flood Protection
  • Mass Kick Protection
  • Repeat Flood Protection
  • Ban Protection
  • Long Text Kicker
  • Spam/Advertisement Kicker [Fixed]
  • Clone Protection
  • Revolving Door Kicker
  • Seen Script Kicker
  • Swear Kicker
  • Control Code Kicker
  • Excess Punctuation Kicker
  • Caps Kicker
  • Caps Kicker #2
  • Control Code Kicker #2
  • Repeat Kicker
  • Personal Protection

  • Ctcp Flood Protection
  • Dcc Flood Protection
  • Query Window Flood Protection
  • Notice Flood Protection
  • Internet/PC Protection
  •  


    mIRC Deop Protection

    The below event replaces mIRC's standard output by using the /haltdef command:
    
    on ^*:DEOP:#:{
      echo $colour(mode) # [[ $+ $fulladdress $+ ]] deopped $opnick
      haltdef
    }
    The below event only allows people with the userlevel MASTER to deop others:
    
    on @*:DEOP:#:{
      IF ($level($nick) != MASTER) && ($nick != $opnick) && ($me != $nick) {
        mode # +o $opnick 
        .notice $nick Only Masters are allowed to deop others in # 
      }
    }
    The below yells at the person who deopped you:
    
    on *:DEOP:#:{ 
      IF (($opnick == $Me) && ($nick != $me)) {
        .msg # Oi! What do you think you are doing?!?
      }
    }
    The below event tries to reop yourself using chanserv if anyone deops you:
    
    on *:DEOP:#: { 
      IF ($me == $opnick) { 
        chanserv op # $me 
      } 
    }
    The below event colour's the nickname on the nicklist when they are deopped:
    
    on *:DEOP:#:{
      IF($nick !isvo #) { cline 1 # $opnick }
      ELSE { cline 12 # $opnick }
    }

    Events Reference: ON BAN

    The below event changes the default screen output for a ban:

    on ^*:BAN:#: echo $colour(mode) # [[ $+ $fulladdress $+ ]] mode +b $banmask | haltdef

    The below event unbans the banmask if it matches or affects an OP userlevel:

    on @*:BAN:#: {
      if ($level($banmask) == OP) {
        .mode # -b $banmask
        .notice $nick Please don't ban an OP in my userlist!
      }
    }

    The below event unbans a banmask that affects you:

    on *:BAN:#: {
      if ($banmask iswm $address($me,5)) {
        if ($me isop #) .mode # -b $banmask
        else chanserv unban # $me
        .notice $nick Please don't ban me!
      }
    }

    The below event colours everyone who was banned red (in the nicklist):

    on *:BAN:#: {
      ; This event requires your IAL list to be on and full 
      ; That is, /ial ON, /who #channel
      var %i = 0 | var %t = $ialchan($banmask,#,0)
      while (%i < %t) { inc %i | cline 4 # $ialchan($banmask,#,%i).nick }
    }

    The below event lists everyone who was banned by the banmask:

    on *:BAN:#: {
      ; This event requires your IAL list to be on and full 
      ; That is, /ial ON, /who #channel
      ; Note: Large channels may break the script as %nicks has a limited size (c.950 chrs)
      var %i = 0 | var %t = $ialchan($banmask,#,0)
      while (%i < %t) { inc %i | set %nicks $addtok(%nicks,$ialchan($banmask,#,%i).nick,44) }
      echo $colour(mode) # [[ $+ $banmask $+ ]] affects: %nicks
    }
    

    mIRC Ban on Deop code

    on *:deop:#:{