#by wiebe @ QuakeNet
# .chanset #channel +wallusers
# .chanset #channel -wallusers
# or in the channel
# -wallusers on/off

setudef flag wallusers

bind wall * {*} walluser.pub

proc walluser.pub { from msg } {
  if { [lindex [split $msg] 0] == "$" } {
    set from [join [split $from !]]
    set nick [lindex [split $from] 0]
    set userhost [lindex [split $from] 1]
    foreach chan [channels] {
      if { [channel get $chan wallusers] && [botonchan $chan] } {
        if { [string match *c* [lindex [split [getchanmode $chan]] 0]] } { set msg [stripcodes bcru $msg] }
        puthelp "PRIVMSG $chan :* walluser: !$nick! ($userhost) $msg"
      }
    }
  }
}

#bind pub m|m -wallusers walluser.cmd

proc walluser.cmd { nick uhost handle chan msg } {
  global lastbind
  set msg [string tolower [lindex $msg 0]]
  if { $msg == "on" } {
    channel set $chan +wallusers
    puthelp "NOTICE $nick :\[$chan\] walluser messages is on"
  } elseif { $msg == "off" } {
    channel set $chan -wallusers
    puthelp "NOTICE $nick :\[$chan\] walluser messages is off"
  } else {
    puthelp "NOTICE $nick :$lastbind on|off"
  }
}
