All pastes #620800 Raw Edit

Something

public text v1 · immutable
·published 2007-07-15 19:18 UTC
rendered paste body
menu menubar {
  Blacklist:/dialog -md blk blk
}
dialog blk {
  title "Blacklist"
  size -1 -1 229 103
  option dbu
  list 1, 2 2 183 99, size
  button "Global Ban", 3, 188 61 37 12
  button "Ban All", 4, 188 73 37 12
  button "Add", 5, 188 19 37 12
  button "Remove", 6, 188 31 37 12
  button "Edit", 7, 188 43 37 12
  check "Enable", 8, 193 4 25 10
}
on *:DIALOG:blk:init:*:{
  if ($readini(blacklist.ini,-n,set,e)) { did -c blk 8 }
  var %x = 1
  while ($ini(blacklist.ini,bans,%x)) {
    did -a blk 1 $ifmatch
    inc %x
  }
}
on *:DIALOG:blk:close:*:{ writeini blacklist.ini set e $did(blk,8).state }
on *:DIALOG:blk:sclick:3:{
  if ($did(blk,1).seltext) {
    var %x = 1
    while (%x <= $chan(0)) {
      if ($me isop $chan(%x) || $me ishop $chan(%x)) { mode $chan(%x) +b $did(blk,1).seltext }
      inc %x
    }
  }
}
on *:DIALOG:blk:sclick:4:{ 
  var %x = 1
  while ($did(blk,1,%x)) {
    var %c = 1
    while (%c <= $chan(0)) {
      if ($me isop $chan(%c) || $me ishop $chan(%c)) { mode $chan(%c) +b $did(blk,1,%x) }
      inc %c
    }
    inc %x
  }
}
on *:DIALOG:blk:sclick:5:{ dialog -ma blke blke }
on *:DIALOG:blk:sclick:6:{ 
  if ($did(blk,1).seltext) {
    remini blacklist.ini bans $did(blk,1).seltext
    did -d blk 1 $did(blk,1).sel
  }
}
on *:DIALOG:blk:sclick:7:{
  if ($did(blk,1).seltext) {
    set %blk.edit $ifmatch
    dialog -ma blke blke
  }
}
dialog blke {
  title "Blacklist - Editor"
  size -1 -1 117 134
  option dbu
  check "Enable", 1, 2 2 26 10
  check "Ban on Join", 2, 2 12 37 10
  check "Timed Ban", 3, 2 52 34 10
  edit "", 4, 39 52 20 10
  text "mins", 5, 61 54 10 8
  check "Part Channel on Join", 6, 2 62 59 10
  box "Nick/*!*@host", 7, 2 74 113 21
  edit "", 8, 5 82 108 10, autohs
  box "Reason", 9, 2 97 113 21
  edit "", 10, 5 105 107 10, autohs
  check "Mute Ban", 11, 2 22 32 10
  check "Kick on Join", 12, 2 42 37 10
  check "Nickname Ban", 13, 2 32 43 10
  button "Ok", 14, 3 120 25 12, ok
  button "Cancel", 15, 31 120 25 12, cancel
}
on *:DIALOG:blke:init:*:{
  if (%blk.edit) {
    tokenize 32 $readini(blacklist.ini,-n,bans,$ifmatch)
    did -a blke 8 $ifmatch
    if ($1) { did -c blke 1 }
    if ($2) { did -c blke 2 }
    if ($3) { did -c blke 3 }
    did -a blke 4 $4
    if ($5) { did -c blke 6 }
    if ($6) { did -c blke 11 }
    if ($7) { did -c blke 12 }
    if ($8) { did -c blke 13 }
    did -a blke 10 $9-
  }
}
on *:DIALOG:blke:sclick:14:{
  if ($did(blke,8)) {
    if (%blk.edit) { 
      remini blacklist.ini bans %blk.edit
      did -d blk 1 $did(blk,1).sel
      did -a blk 1 $did(blke,8)
    }
    writeini blacklist.ini bans $did(blke,8) $did(blke,1).state $did(blke,2).state $did(blke,3).state $iif($did(blke,4),$ifmatch,0) $did(blke,6).state $did(blke,11).state $did(blke,12).state $did(blke,13).state $iif($did(blke,10),$ifmatch,No Reason)
    if (!%blk.edit) { did -a blk 1 $did(blke,8) }
    unset %blk.edit
  }
}
on *:DIALOG:blke:sclick:15:{ unset %blk.edit }
on *:DIALOG:blke:close:*:{ unset %blk.edit }
on *:JOIN:#:{
  if ($readini(blacklist.ini,-n,bans,$address($nick,2)) || $readini(blacklist.ini,-n,bans,$nick)) {
    tokenize 32 $ifmatch
    if ($1) {
      if ($me isop $chan || $me ishop $chan) {
        if ($2) { ban $chan $nick 2 }
        if ($6) { mode $chan +b ~q: $+ $address($nick,2) }
        if ($8) { mode $chan +b ~n: $+ $address($nick,2) }
        if ($3) { .timer 1 $calc( $4 * 60 ) /mode $chan -b $address($nick,2) }
        if ($7) { kick $chan $nick Blacklist Match • Reason: $9- }
      }
      if ($5) { part $chan Blacklist Match • Reason: $9- }
    }
  }
}