#by wiebe @ QuakeNet



#help whoareknown msg
bind msgm fvlomn|fvlomn "help whoareknown" c_whoareknown:help:msg

proc c_whoareknown:help:msg { nick uhost handle text } {
  lappend output "Usage: whoareknown <channel>"
  lappend output "Shows what users are known on the channel in <nick>=<account>:<flag>. Where only the highest flag from the user is shown in this order nmbolvf. Global flags are shown in upper case."
  lappend output "Where \002b\002=bot \002f\002=friend \002l\002=halfop \002m\002=master \002n\002=owner \002o\002=op \002v\002=voice"
  if { [catch {set x [cnotice $nick $output]} error] || !$x } {
    foreach t $output { puthelp "NOTICE $nick :$t" }
  }
  putcmdlog "($nick!$uhost) !$handle! $text"
}



#whoareknown msg
bind msg fvlomn|fvlomn whoareknown c_whoareknown:msg

proc c_whoareknown:msg { nick uhost handle text } {
  set chan [lindex [split $text] 0]
  if { [string equal $chan ""] } {
    lappend output "Usage: whoareknown <channel>"
  } elseif { ![validchan $chan] || ![matchattr $handle fvlomn|fvlomn $chan] } {
    lappend output "No access or unknown channel $chan"
  } else {
    set shows ""
    foreach n [lsort [chanlist $chan bfvlomn|fvlomn]] {
      set h [nick2hand $n]
      if { [matchattr $h n] } { set flag N
      } elseif { [matchattr $h -|n $chan] } { set flag n
      } elseif { [matchattr $h m] } { set flag M
      } elseif { [matchattr $h -|m $chan] } { set flag m
      } elseif { [matchattr $h b] } { set flag B
      } elseif { [matchattr $h o] } { set flag O
      } elseif { [matchattr $h -|o $chan] } { set flag o
      } elseif { [matchattr $h l] } { set flag L
      } elseif { [matchattr $h -|l $chan] } { set flag l
      } elseif { [matchattr $h v] } { set flag V
      } elseif { [matchattr $h -|v $chan] } { set flag v
      } elseif { [matchattr $h f] } { set flag F
      } elseif { [matchattr $h -|f $chan] } { set flag f
      }
      if { ![string equal $flag ""] } { lappend shows "$n=$h:$flag" }
    }
    if { [string equal $shows ""] } {
      lappend output "Found no known users on $chan"
    } else {
      set output2 ""
      foreach show $shows {
        if { [string length "$output2 $show"] > "350" } {
          lappend output [join $output2 "   "]
          set output2 ""
        }
        lappend output2 $show
      }
      if { ![string equal $output2 ""] } { lappend output [join $output2 "   "] }
    }
  }
  if { [catch {set x [cnotice $nick $output]} error] || !$x } {
    foreach t $output { puthelp "NOTICE $nick :$t" }
  }
  return 1
}

