Kick/ban stats

By Sasha on May 04, 2010

Screenshots

With this snippet you can track user's kick/ban activities on channels. You can choose witch nicks/channels you want to track (or not (Except)).

Syn.:
!stats nick channel
or
!stats nick
for nick's stats on every channel.

I guess I could do the same thing for voices/devoices, ops/deops, hops/dehops, words, lines etc, if you wish. :p

dialog kbstats {
  title "• Kick/ban stats settup. •"
  size -1 -1 283 110
  option dbu
  box "Channels:", 1, 7 8 86 96
  list 2, 16 28 68 51, size
  edit "", 3, 16 17 38 10, autohs
  button "+", 4, 56 17 13 10
  button "-", 5, 71 17 13 10
  radio "Only for listed channels.", 6, 16 81 70 10, group
  radio "Except listed channels.", 7, 16 91 67 10
  box "Nicks:", 8, 98 8 86 96
  list 9, 106 28 68 51, size
  edit "", 10, 106 17 38 10, autohs
  button "+", 11, 146 17 13 10
  button "-", 12, 161 17 13 10
  radio "Only for listed nicks.", 13, 106 81 64 10, group
  radio "Except listed nicks.", 14, 106 91 68 10
  box "Delete:", 16, 190 8 86 78
  text "Channel:", 17, 195 21 24 8
  edit "", 18, 195 29 42 10, autohs
  button "Delete?", 19, 239 29 32 10
  text "Nick:", 20, 195 45 25 8
  edit "", 21, 195 53 42 10, autohs
  button "Delete?", 22, 239 53 32 10
  button "Delete all stats?", 23, 210 68 43 12
  button "Ok/close.", 24, 190 90 86 12, ok
}
alias kbstats { dialog $iif(!$dialog(kbstats),-m,-v) kbstats kbstats }
on *:dialog:kbstats:*:*:{
  if ($devent == sclick) {
    if ($did == 19) {
      if ($did(18) != $null) && ($chr(32) !isin $did(18)) && ($+($chr(35),*) iswm $did(18)) {
        hdel -w stats $+(*.,$did(18)) | var %chn $did(18) | did -r $dname 18      
        noop $input(Stats for %chn successfully deleted.,oi,Done.) 
      }
    }
    if ($did == 22) {
      if ($did(21) != $null) && ($chr(32) !isin $did(21)) {
        hdel -w stats $+($did(21),.*) | var %nks $did(21) | did -r $dname 21
        noop $input(Stats for %nks successfully deleted.,oi,Done.) 
      }
    }
    if ($did == 23) { hdel -w stats * | noop $input(All stats successfully deleted.,oi,Done.) } 
    if ($did == 4) {
      if ($did(3) != $null) && ($chr(32) !isin $did(3)) && ($+($chr(35),*) iswm $did(3)) && (!$istok($hget(statset,channels),$did(3),32)) {
        hadd statset channels $addtok($hget(statset,channels),$did(3),32)
        did -a $dname 2 $did(3)
        did -r $dname 3
      }
    }
    if ($did == 5) {
      if ($did(2).seltext != $null) {
        hadd statset channels $remtok($hget(statset,channels),$did(2).seltext,32))
        did -d $dname 2 $did(2).sel
      }
    }
    if ($did == 11) {
      if ($did(10) != $null) && ($chr(32) !isin $did(10)) && (!$istok($hget(statset,nicks),$did(10),32)) {
        hadd statset nicks $addtok($hget(statset,nicks),$did(10),32)
        did -a $dname 9 $did(10)
        did -r $dname 10
      }
    }
    if ($did == 12) {
      if ($did(9).seltext != $null) {
        hadd statset nicks $remtok($hget(statset,nicks),$did(9).seltext,32))
        did -d $dname 9 $did(9).sel
      }
    }
    if ($did == 24) { hsave statset statset.hsh | hsave stats stats.hsh }
    if ($did == 6) { hadd statset chs only }
    if ($did == 7) { hadd statset chs except }
    if ($did == 13) { hadd statset nks only }
    if ($did == 14) { hadd statset nks except } 
  }
  if ($devent == init) {
    $iif($hget(statset,chs) == only,did -c $dname 6,did -c $dname 7)
    $iif($hget(statset,nks) == only,did -c $dname 13,did -c $dname 14)
    didtok $dname 2 32 $hget(statset,channels)
    didtok $dname 9 32 $hget(statset,nicks)
  }
}
on *:start:{
  $iif(!$hget(stats),hmake stats 500)
  $iif(!$exists(stats.hsh),hsave stats stats.hsh)
  $iif(!$hget(statset),hmake statset 100)
  $iif(!$exists(statset.hsh),hsave statset statset.hsh)
  hload stats stats.hsh
  hload statset statset.hsh
}
on *:kick:#:{
  if ($kbcheck != false) {
    if (!$hget(stats,$+($nick,.,$chan))) {
      hadd stats $+($nick,.,$chan) 1 0 $date(dd/mm/yyyy)
    }
    else {
      var %blah $gettok($hget(stats,$+($nick,.,$chan)),1,32)
      hadd stats $+($nick,.,$chan) $puttok($hget(stats,$+($nick,.,$chan)),$calc(%blah + 1),1,32)
    }
    hsave stats stats.hsh
  }
}
on *:ban:#:{
  if ($kbcheck != false) {
    if (!$hget(stats,$+($nick,.,$chan))) {
      hadd stats $+($nick,.,$chan) 0 1 $date(dd/mm/yyyy)
    }
    else {
      var %blah $gettok($hget(stats,$+($nick,.,$chan)),2,32)
      hadd stats $+($nick,.,$chan) $puttok($hget(stats,$+($nick,.,$chan)),$calc(%blah + 1),2,32)
    }
    hsave stats stats.hsh
  }
}
alias -l kbcheck {
  $iif($hget(statset,chs) == only && !$istok($hget(statset,channels),$chan,32),goto false)
  $iif($hget(statset,chs) == except && $istok($hget(statset,channels),$chan,32),goto false) 
  $iif($hget(statset,nks) == only && !$istok($hget(statset,nicks),$nick,32),goto false)
  $iif($hget(statset,nks) == except && $istok($hget(statset,nicks),$nick,32),goto false)
  goto end
  :false
  return false
  :end
}
on *:load:{
  $iif(!$hget(stats),hmake stats 500)
  $iif(!$exists(stats.hsh),hsave stats stats.hsh)
  $iif(!$hget(statset),hmake statset 100)
  $iif(!$exists(statset.hsh),hsave statset statset.hsh)
  hload stats stats.hsh
  hload statset statset.hsh
  hadd statset channels #Help
  hadd statset nicks ChanServ
  hadd statset chs except
  hadd statset nks except
}
menu menubar {
  -
  • Kick/ban stats. •:kbstats
  -
} 
on *:text:!stats *:#:{
  if ($3) {
    if (!$hget(stats,$+($2,.,$3))) {
      msg # • No available kick/ban stats for $+(,$2,) on $+(,$3,.)
    }
    else {
      msg # • $+(,$2,'s) activity since $+(,$gettok($hget(stats,$+($2,.,$3)),3,32),) on $+(,$3,:)
      msg # • Kick(s): $+(,$gettok($hget(stats,$+($2,.,$3)),1,32),) • Ban(s): $+(,$gettok($hget(stats,$+($2,.,$3)),2,32),.)
    }
  }
  if ($2 && !$3) {
    var %brm 1 , %brmz1 0 , %brmz2 0
    while (%brm <= $hget(stats,0).item) {
      if ($+($2,.*) iswm $hget(stats,%brm).item) {
        var %brmz = $addtok(%brmz,$remove($hget(stats,%brm).item,$+($2,.)) • Kick(s): $gettok($hget(stats,%brm).data,1,32) • Ban(s): $gettok($hget(stats,%brm).data,2,32),44)
      }
      inc %brm
    }
    msg # • $+(,$2,'s) kick/ban stats:
    var %smor 1
    while (%smor <= $numtok(%brmz,44)) {
      msg # • $gettok(%brmz,%smor,44)
      inc %brmz1 $gettok($gettok(%brmz,%smor,44),4,32)
      inc %brmz2 $gettok($gettok(%brmz,%smor,44),7,32)
      inc %smor

    }
    msg # •--------------------------•
    msg # • Total kick(s): %brmz1 • Ban(s): %brmz2
  }
}

Comments

Sign in to comment.
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.