This is the new home of the egghelp.org community forum.
All data has been migrated (including user logins/passwords) to a new phpBB version.


For more information, see this announcement post. Click the X in the top right-corner of this box to dismiss this message.

How to exempt ops and voiced users

Help for those learning Tcl or writing their own scripts.
Post Reply
s
sutkida
Voice
Posts: 12
Joined: Wed Nov 19, 2008 6:06 am

How to exempt ops and voiced users

Post by sutkida »

Code: Select all

proc filter_bad_words {nick uhost handle channel args} {
 global badwords badreason banmask botnick bwduration
 set args [ccodes:filter $args] 
  set handle [nick2hand $nick]
   set banmask "*![lindex [split $uhost @] 0]@[lindex [split $uhost @] 1]" 
	foreach badword [string tolower $badwords] {     
	if {[string match *$badword* [string tolower $args]]}  {
       if {[matchattr $nick +f]} {
           putlog "-Anti Abuse Script- $nick ($handle) with +f flags said $args on $channel"
       } elseif {[matchattr $nick +o]} {
           putlog "-Anti Abuse Script- $nick ($handle) with +o flags said $args on $channel"
       } else {
           putlog "-Anti Abuse Script- KICKED $nick on $channel matched by $args"
           putquick "KICK $channel $nick :$badreason"
           newchanban $channel $banmask $botnick $badreason $bwduration
       }
    }
  }
}
What to change so that chan ops and voiced are exempted when they speak badwords? In the code only the users that are added to the bot are exempted. A little help please. TYIA.
User avatar
Getodacul
Voice
Posts: 20
Joined: Thu Jun 07, 2007 2:32 pm

Post by Getodacul »

Something like that:

Code: Select all

# Protect ops (1=on 0=off)
set protops 1  

# Protect voices (1=on 0=off)
set protvoices 1

# Protect flags (1=on 0=off)
set protflags 1
set pflags "of|of"


proc filter_bad_words {nick uhost handle channel args} {
 global badwords badreason banmask botnick bwduration protops protvoices protflags pflags
 set args [ccodes:filter $args]
  set handle [nick2hand $nick]
   set banmask "*![lindex [split $uhost @] 0]@[lindex [split $uhost @] 1]"
   foreach badword [string tolower $badwords] {     
   if {[string match *$badword* [string tolower $args]]}  {
   if {(($protops == 1) && ([isop $nick $chan])) || (($protvoices == 1) && ([isvoice $nick $chan])) || (($protflags == 1) && ([matchattr $hand $pflags $chan]))} { 
   putlog "-Anti Abuse Script- $nick ($handle) said $args on $channel" 
   return 0 
        } else {
           putlog "-Anti Abuse Script- KICKED $nick on $channel matched by $args"
           putquick "KICK $channel $nick :$badreason"
           newchanban $channel $banmask $botnick $badreason $bwduration
       }
    }
  }
}
It's not tested.
s
sutkida
Voice
Posts: 12
Joined: Wed Nov 19, 2008 6:06 am

Post by sutkida »

tried the code but didn't worked.but it's ok now..found an alternative to that.here's the full code btw.

Code: Select all

### Features:
# * Sets a 2 Minute Channel ban on user who writes any of the
#   defined bad words
# * Doesn't ban users with +o OR +f flags
# * Logs ALL user/op messages containing the defined words
# * Strips Character Codes from Messages

### Set Bad Words that you want the Bot to Kick on
set badwords { 
blah.blah
}

### Set Your Ban Reason
set badreason "Badword Detected"

### Set Ban Time
set bwduration 24h

### Begin Script:
## (Don't change anything below here... Unless you know tcl)


## Binding all Public Messages to our Process
bind pubm - * filter_bad_words

### Borrowed from awyeahs tcl scripts (www.awyeah.org) ###
## awyeah said: Thanks to user and ppslim for this control code removing filter
proc ccodes:filter {str} {
  regsub -all -- {\003([0-9]{1,2}(,[0-9]{1,2})?)?|\017|\037|\002|\026|\006|\007} $str "" str
  return $str
}

## Starting Process
proc filter_bad_words {nick uhost handle channel args} {
 global badwords badreason banmask botnick bwduration
 set args [ccodes:filter $args] 
  set handle [nick2hand $nick]
   set banmask "*!*[lindex [split $uhost @] 0]@[lindex [split $uhost @] 1]" 
	foreach badword [string tolower $badwords] {     
	if {[string match *$badword* [string tolower $args]]}  {
       if {[matchattr $handle +f]} {
           putlog " $nick ($handle) with +f flags said $args on $channel"
       } elseif {[matchattr $handle +o]} {
           putlog " $nick ($handle) with +o flags said $args on $channel"
       } else {
           putlog "KICKED $nick on $channel matched by $args"
           putquick "KICK $channel $nick :$badreason" 
           newchanban $channel $banmask $botnick $badreason $bwduration 
       }
    }
  }
}
# bind pubm - * filter_bad_words
putlog "Anti Badwords Script Loaded"
Now how to change the hours into minutes.The script base its bans on the bot's ban-time settings.I don't want to change the bot's ban-time settings.I just want the script to base its ban time within it.
Post Reply