Badword Filter — File Browser

BadwordFilterv1.0 / BadwordFilterv1.0 / badword.mrc

badword.mrc — 6.06 KB — Download this file

;----------------------------------------
; > Badword Filter v1.0
; > By Jake
; > jake78@bellsouth.net
;----------------------------------------

alias badwords dialog -m badword.filter.v1 badword.filter.v1
alias -l bwf_add { 
  :word
  var %word $$?="Enter new badword"
  if ($chr(32) isin %word) { var %input $input(Badwords cannot contain spaces,oi) | goto word }
  else goto end
  :end
  bwf_write %word punops 0
  bwf_write %word punvos 0
  bwf_write %word echo 1
  bwf_write %word deov 0
  bwf_write %word ban 0/sc
  bwf_write %word kick 0
  did -a badword.filter.v1 1 %word
  bwf_edit e %word
  set %bwf.active %word
}
alias -l bwf_addchan {
  :chan
  var %chan $$?="Enter new channel"
  if (%chan !ischan) { var %input $input(%chan is not a valid channel! You need to be in the channel to add it.,oi) | goto chan }
  elseif (%chan isin $bwf_read(%bwf.active,chans)) { var %input $input(%chan is already in the list for %bwf.active,oi) | goto chan }
  else goto end
  :end
  bwf_write %bwf.active chans $addtok($bwf_read(%bwf.active,chans),%chan,44) 
  did -a badword.filter.v1 11 %chan
}
alias -l bwf_edit { 
  did $iif($1 == e,-e,-b) badword.filter.v1 7,8,10,11,12,13,14,15,16,17,18,19 | did $iif($1 == e,-n,-m) badword.filter.v1 11
  if ($2) {
    did -o badword.filter.v1 9 1 $2
    did -r badword.filter.v1 11
    var %i 1
    while ($gettok($bwf_read($2,chans),%i,44)) { did -a badword.filter.v1 11 $gettok($bwf_read($2,chans),%i,44) | inc %i }
    did $iif($bwf_read($2,punops) == 1,-c,-u) badword.filter.v1 12
    did $iif($bwf_read($2,punvos) == 1,-c,-u) badword.filter.v1 13
    did $iif($bwf_read($2,echo) == 1,-c,-u) badword.filter.v1 14
    did $iif($bwf_read($2,deov) == 1,-c,-u) badword.filter.v1 15
    did $iif($bwf_read($2,ban) == 1,-c,-u) badword.filter.v1 16
    did $iif($bwf_read($2,kick) == 1,-c,-u) badword.filter.v1 17
  }
}
alias -l bwf_list {
  if ($1 == begin) return -
  var %i 1
  while ($ini(badwords.conf,%i)) {
    if ($1 == %i) return $ini(badwords.conf,%i) $+ :return
    inc %i
  }
  if ($1 == end) return -
}
alias -l bwf_read return $readini -n badwords.conf $$1 $2-
alias -l bwf_remchan {
  if ($remtok($bwf_read(%bwf.active,chans),$did(badword.filter.v1,11).seltext,44) == $null) bwf_write %bwf.active chans none
  else bwf_write %bwf.active chans $remtok($bwf_read(%bwf.active,chans),$did(badword.filter.v1,11).seltext,44)
  did -d badword.filter.v1 11 $did(badword.filter.v1,11).sel
}
alias -l bwf_write writeini badwords.conf $$1 $2-
dialog badword.filter.v1 {
  title "Badword Filter [/badwords]"
  size -1 -1 191 141
  option dbu
  list 1, 6 6 65 95, sort size vsbar
  button "Close", 2, 6 103 65 15, ok
  button "Add New Word", 3, 75 6 55 15
  button "Remove Selected", 4, 130 6 55 15
  button "Edit Selected", 5, 75 21 55 15
  button "Clear All", 6, 130 21 55 15
  box "Edit Entry", 7, 76 39 110 97
  text "Badword:", 8, 81 50 24 8
  edit "", 9, 107 49 72 10, read
  text "Channels:", 10, 81 63 25 8
  combo 11, 107 62 72 33, sort size vsbar drop
  check "Punish ops", 12, 86 91 38 10
  check "Punish voices", 13, 130 91 43 10
  check "Echo", 14, 86 105 39 10
  check "Deop/voice", 15, 86 119 38 10
  check "Ban address", 16, 130 105 41 10
  check "Kick user", 17, 130 119 32 10
  button "Add", 18, 81 74 50 12
  button "Remove", 19, 131 74 49 12
  icon 20, 6 119 65 17,  $scriptdir $+ mircscripts.jpg, 0, noborder
}
menu Menubar,Channel {
  Badword Filter
  .Configure { badwords }
  .-
  .$iif($ini(badwords.conf,1),List)
  ..$submenu($bwf_list($1))
}
on 1:DIALOG:badword.filter.v1:*:*:{
  if (($devent == init) && ($did == 0)) {
    bwf_edit d
    var %i 1
    while ($ini(badwords.conf,%i)) { did -a $dname 1 $ini(badwords.conf,%i) | inc %i }
  }
  elseif (($devent == edit) && ($did == 11)) {
    if (($count($did(11).text,$chr(35)) > 1) && ($chr(44) !isin $did(11).text)) { var %input $input(Channels should be separated by commas $chr(40) $+ ex: #chan1 $+ $chr(44) $+ #chan2 $+ $chr(41),oi) }
    else bwf_write %bwf.active chans $did(11).text
  }
  elseif ($devent == sclick) {
    if (($did == 1) || ($did == 5)) { set %bwf.active $did(1).seltext | bwf_edit e $did(1).seltext }
    elseif ($did == 3) bwf_add
    elseif ($did == 4) { remini badwords.conf $did(1).seltext | did -d $dname 1 $did(1).sel | did -r $dname 9,11 | did -u $dname 12,13,14,15,16,17 | bwf_edit d }
    elseif (($did == 6) && ($input(Are you sure?,yvw) == $yes)) { write -c badwords.conf | did -r $dname 1 }
    elseif ($did == 12) bwf_write %bwf.active punops $did(12).state
    elseif ($did == 13) bwf_write %bwf.active punvos $did(13).state
    elseif ($did == 14) bwf_write %bwf.active echo $did(14).state
    elseif ($did == 15) bwf_write %bwf.active deov $did(15).state
    elseif ($did == 16) bwf_write %bwf.active ban $did(16).state
    elseif ($did == 17) bwf_write %bwf.active kick $did(17).state
    elseif ($did == 18) bwf_addchan
    elseif ($did == 19) bwf_remchan
  }
  elseif (($devent == dclick) && ($did == 1)) { set %bwf.active $did(1).seltext | bwf_edit e $did(1).seltext }
}
on 1:LOAD:{
  if ($version < 6.0) { echo -ati2 [notice] Badword Filter requires mIRC version 6.0 or higher. Badword Filter will now unload itself. | unload -rs badword.mrc }
  else echo -ati2 [notice] Badword Filter v1.0 has been loaded. Type /badwords to get started.
}
on 1:SIGNAL:bwf_check:{
  if ($bwf_read($1,echo)) echo -ati2 [notice] Badword:  $+ $1 $+  detected in $3 by  $+ $2 $+ 
  if ($bwf_read($1,deov)) .quote mode $3 -o-v $2 $2
  if ($bwf_read($1,ban)) .quote mode $3 +b $address($2,3)
  if ($bwf_read($1,kick)) .quote kick $3 $2 :Badword detected:  $+ $1 $+ 
}
on @1:TEXT:*:#:{
  var %i 1
  while ($ini(badwords.conf,%i)) {
    if (($ini(badwords.conf,%i) isin $1-) && ($istok($bwf_read($ini(badwords.conf,%i),chans),$chan,44))) {
      if (($nick isop $chan) && ($bwf_read($ini(badwords.conf,%i),punops) != 1)) halt
      elseif (($nick isvo $chan) && ($bwf_read($ini(badwords.conf,%i),punvos) != 1)) halt
      .signal bwf_check $ini(badwords.conf,%i) $nick $chan
      break
    }
    inc %i
  }
}