#by wiebe @ QuakeNet



#help unmute pub
bind pubm lomn|lomn "% ${botnet-nick} help unmute" c_unmute:help:pub

proc c_unmute:help:pub { nick uhost handle chan text } {
  lappend output "Usage: unmute <nick1> \[<nick2>\] \[<nick3>\]"
  lappend output "Removes the ban previous set with mute."
  if { [catch {set x [cnotice $nick $output]} error] || !$x } {
    foreach t $output { puthelp "NOTICE $nick :$t" }
  }
  putloglev c $chan "[lindex [split $text] 1]: $nick $uhost $handle $chan [join [lrange [split $text] 2 end]]"
}



#help unmute msg
bind msgm lomn|lomn "help unmute" c_unmute:help:msg

proc c_unmute:help:msg { nick uhost handle text } {
  lappend output "Usage: unmute <channel> <nick1> \[<nick2>\] \[<nick3>\]"
  lappend output "Removes the ban previous set with mute."
  if { [catch {set x [cnotice $nick $output]} error] || !$x } {
    foreach t $output { puthelp "NOTICE $nick :$t" }
  }
  putcmdlog "($nick!$uhost) !$handle! $text"
}



#unmute pub
bind pubm lomn|lomn "% ${botnet-nick} unmute" c_unmute:pub
bind pubm lomn|lomn "% ${botnet-nick} unmute *" c_unmute:pub

proc c_unmute:pub { nick uhost handle chan text } {
  if { ![validchan $chan] } { return 0 }
  if { ![botisop $chan] && ![botishalfop $chan] } { return 0 }
  if { ![onchan $nick $chan] } { return 0 }
  set text [join [lrange [split $text] 2 4]]
  if { [string equal $text ""] } {
    lappend output "Usage: unmute <nick1> \[<nick2>\] \[<nick3>\]"
  } else {
    foreach user [split $text] { c_unmute:-b $chan $user }
    lappend output "Unmuted targets on $chan"
  }
  if { [catch {set x [cnotice $nick $output]} error] || !$x } {
    foreach t $output { puthelp "NOTICE $nick :$t" }
  }
  putloglev c $chan "[lindex [split $text] 1]: $nick $uhost $handle $chan [join [lrange [split $text] 2 end]]"
}



#unmute msg
bind msg lomn|lomn unmute c_unmute:msg

proc c_unmute:msg { nick uhost handle text } {
  set chan [lindex [split $text] 0]
  set target [join [lrange [split $text] 1 3]]
  if { [string equal $chan ""] || [string equal $target ""] } {
    lappend output "Usage: unmute <channel> <nick1> \[<nick2>\] \[<nick3>\]"
  } elseif { ![validchan $chan] || ![matchattr $handle lomn|lomn $chan] || ![onchan $nick $chan] } {
    lappend output "No access or unknown channel $chan"
  } elseif { ![botisop $chan] && ![botishalfop $chan] } {
    lappend output "I am not a channel operator on $chan"
  } else {
    foreach user [split $target] { c_unmute:-b $chan $user }
    lappend output "Unmuted targets on $chan"
  }
  if { [catch {set x [cnotice $nick $output]} error] || !$x } {
    foreach t $output { puthelp "NOTICE $nick :$t" }
  }
  return 1
}



#sets -b
proc c_unmute:-b { chan user } {
  if { ![onchan $user] } { return 0 }
  set mask *![getchanhost $user]
  if { [isban $mask $chan] } { return 0 }
  if { ![ischanban $mask $chan] } { return 0 }
  pushmode $chan -b $mask
}

