#by wiebe @ QuakeNet



#help removeuser msg
bind msgm mn|mn "help removeuser" c_removeuser:help:msg

proc c_removeuser:help:msg { nick uhost handle text } {
  lappend output "Usage: removeuser <channel> <nick>|<#account>"
  lappend output "Removes a user or account from the channel."
  if { [catch {set x [cnotice $nick $output]} error] || !$x } {
    foreach t $output { puthelp "NOTICE $nick :$t" }
  }
  putcmdlog "($nick!$uhost) !$handle! $text"
}



#removeuser msg
bind msg mn|mn removeuser c_removeuser:msg

proc c_removeuser:msg { nick uhost handle text } {

  set chan [lindex [split $text] 0]
  set target [lindex [split $text] 1]
  set accountgiven 0
  if { [string match \#* $target] } {
    set account [string range $target 1 end]
    set accountgiven 1
  } else {
    set account [nick2hand $target]
    if { [string equal $account *] } { set account "" }
  }
  if { !$accountgiven } { set accountshow "User $target ($account)" } else { set accountshow " Account $account" }

#always require a channel param
  if { [string equal $chan ""] || [string equal $target ""] } {
    lappend output "Usage: removeuser <channel> <nick>|<#account>"

#unknown channel or no access
  } elseif { ![validchan $chan] || ![matchattr $handle mn|mn $chan] } {
    lappend output "No access or unknown channel $chan"

#error nick is unknown, or unknown account
  } elseif { ![validuser $account] && ![string equal $target ""] } {
    if { $accountgiven } {
      lappend output "Account $account is not known."
    } else {
      lappend output "User $target is not known."
    }

#error, target is not known on the channel
  } elseif { ![haschanrec $account $chan] } {
    lappend output "$accountshow is not known on $chan"

#nick +m tries to remove a +mn target
  } elseif { ![matchattr $handle n|n $chan] && [matchattr $account mn|mn $chan] } {
    lappend output "You can remove other masters or owners on $chan"

#do it
  } else {
    delchanrec $account $chan
    if { !$accountgiven } { set accountshow "user $target ($account)" } else { set accountshow " account $account" }
    lappend output "Removed $accountshow from $chan"
  }

  if { [catch {set x [cnotice $nick $output]} error] || !$x } {
    foreach t $output { puthelp "NOTICE $nick :$t" }
  }
  return 1
}

