ChannelStats

By Gecko321 on Mar 29, 2008

Copy and paste into a new remotes file. Than just type /Chanstats . It will echo the channel stats in the channel.

alias ChanStats {
  if ($active ischan) { var %Chan = $active }
  elseif (!$1 ischan) { echo -a You must select a channel you are on | halt }
  else { var %Chan = $1 }  
  set %ChanStats $1
  .who $1
}

alias -l ChanStat {
  var %Chan_Temp = 0
  While (%Chan_Temp != $Nick($1,0)) {
    inc %Chan_Temp 1
    if ($Nick($1,%Chan_Temp) isop $1) { inc %Chan_op 1 }
    elseif ($Nick($1,%Chan_Temp) ishop $1) { inc %Chan_Hop 1 }
    elseif ($Nick($1,%Chan_Temp) isvoice $1) { inc %Chan_voice 1 }
    else { inc %Chan_Reg 1 }
  }
  echo $1 8[ 15-- 9S3tat9s 14Total Users8: $Nbr($nick($1,0)).c $iif(%Chan_Op != $Null,14OPs8: $Nbr(%Chan_op $Percent(%Chan_op,$1,2).c).c) $iif(%Chan_Hop != $Null,14HOPs8: $nbr(%Chan_hop $Percent(%Chan_hop,$1,2).c).c) $iif(%Chan_Voice != $Null,14Voices8: $nbr(%Chan_Voice $Percent(%Chan_Voice,$1,2).c).c) $iif(%Chan_Reg != $Null,14Regulars8: $Nbr(%Chan_Reg $Percent(%Chan_Reg,$1,2).c).c) 
  echo $1 8[ 15-- 9S3tat9s 14Clones8: $Nbr($CCheck($1) $Percent($CCheck($1),$1,2).c).c $iif($Hget($1,Away),14Away Users8: $nbr($Hget($1,Away) $Percent($Hget($1,Away),$1,2).c).c) $iif($Hget($1,IRCop),14IRCops8: $nbr($Hget($1,IRCop) $Percent($Hget($1,IRCop),$1,2).c).c) $iif($Hget($1,Bots),14Bots8: $nbr($Hget($1,Bots) $Percent($Hget($1,Bots),$1,2).c).c) $iif($Hget($1,Reg),14Reg8/14UnReg8: $nbr($+($Hget($1,Reg),8/15,$Hget($1,UnReg))).c)
  unset %Chan_*
}

alias percent {
  if ($2 ischan) { Var %Val2 = $Nick($2,0) }
  else { var %Val2 = $2 }
  var %z = $calc($1 / %Val2 *100)
  if ($3 != $null) { %z = $round(%z,$3) }
  if (%z) { var %x = $+(15,$Replace(%z,.,8.15),8%) }
  else { var %x = 1508% }
  if ($Prop = c) { Return %x }
  else { Return $strip(%x) }
}

alias nbr { 
  if ($1- != $null) { 
    if ($prop = c) { return 10(15 $+ $1- $+ 10) } 
    else { return ( $+ $1- $+ )  }
  }
}

alias who {
  if ($1 ischan) {
    if ((!$isTok(%Who.Queue,$1,32)) && ($Numtok(%Who.Queue,32) > 0)) { set %Who.Queue %Who.Queue $1 }
    if (!$isTok(%Who.Chan,$1,32)) { set %Who.Chan %Who.Chan $1 }
    if ($HGet($1)) { hfree $1 }
    hmake $1 5
    hadd -m $1 Away 0
    hadd -m $1 Bots 0
    hadd -m $1 IRCop 0
    hadd -m $1 Reg 0
    hadd -m $1 UnReg 0
  }
  !.raw who $1-
}

alias CCheck {
  var %x = 1
  var %a 0
  while (%x <= $nick($1,0)) {
    var %clones = $cclone($address($nick($1,%x),2),$1)
    if (%clones) {
      inc %a $Numtok(%Clones,32)
    }
    inc %x
  }
  return %a
}

alias CClone {
  if ($ialchan($1,$2,0) >= 2) {
    var %x = 1
    while ($ialchan($1,$2,%x)) {
      inc %x
    }
  }
  return %x
}
raw 315:*:{
  haltdef
  if ($IsTok(%Who.Chan,$2,32)) { 
    ChanStat $2 Self 
    %Who.Chan = $DelTok(%Who.Chan,$FindTok(%Who.Chan,$2,32),32)
  }
  if (%Who.Queue) {
    var %Chan = $GetTok(%Who.Queue,1,32)
    %Who.Queue = $DelTok(%Who.Queue,1,32)    
    .who %Chan
  }
}

raw 352:*:{
  haltdef
  if ($2 = *) { halt }
  var %Chan = $GetTok(%Who.Chan,$FindTok(%Who.Chan,$2,1,32),32)
  if ($6 ison %Chan) {
    if (G isin $7) { hinc -m %Chan Away 1 }
    if (* isin $7) { hinc -m %Chan IRCop 1 } 
    if (B isin $7) { hinc -m %Chan Bots 1 }
    if (r isin $7) { hinc -m %Chan Reg 1 }
    if (r !isin $7) { hinc -m %Chan UnReg 1 }
  }
}

Comments

Sign in to comment.
ovelayer   -  Mar 05, 2013

can this script be updated with channel triggers for a bot?
!chanstats #channel

 Respond  
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.