TCL Add user

Add user

## Bind

unbind dcc m|m adduser *dcc:adduser 
unbind dcc m|- +user *dcc:+user
unbind dcc m|- -user *dcc:-user
unbind dcc t|- +bot *dcc:+bot
bind dcc m|m adduser dcc:adduser
bind dcc m|- +user dcc:+user
bind dcc m|- -user dcc:-user
bind dcc t|- +bot dcc:+bot

## Initiliaze

if {![info exists whois-fields]} {
    set whois-fields ""
}
set Addedapp 0
set Usersapp 0
set Botsapp 0
foreach z [split ${whois-fields}] {
    if {[string tolower $z] == [string tolower "Added"]} {
        set Addedapp 1
    }
    if {[string tolower $z] == [string tolower "Users"]} {
        set Usersapp 1
    }
    if {[string tolower $z] == [string tolower "Bots"]} {
        set Botsapp 1
    }
}

if {$Addedapp == 0} { append whois-fields " " "Added" }
if {$Usersapp == 0} { append whois-fields " " "Users" }
if {$Botsapp == 0} { append whois-fields " " "Bots" }

## dcc:adduser start

proc dcc:adduser {hand idx paras} {
  global botnick
    set user [lindex $paras 1]
    set userorbot "user"
    if {$user == ""} {
	if {[string index $paras 0] == "!"} {
	    set user [string range [lindex $paras 0] 1 end]
	} else {
	    set user [lindex $paras 0]
	}
    }
    if {[validuser $user]} {
	*dcc:adduser $hand $idx $paras
    } else {
	*dcc:adduser $hand $idx $paras
	if {[validuser $user]} {
            setuser $user xtra Added "by $hand"
          userxtra $hand $userorbot
	    tellabout $hand $user
	}
    }
}    

## dcc:adduser end

## dcc:+user start

proc dcc:+user {hand idx paras} {
  global botnick
    set user [lindex $paras 0]
    set userorbot "user"
    if {[validuser $user]} {
        *dcc:+user $hand $idx $paras
    } else {
        *dcc:+user $hand $idx $paras
        if {[validuser $user]} {
            setuser $user xtra Added "by $hand"
          userxtra $hand $userorbot
	    tellabout $hand $user
        }
    }
}

## dcc:+user end

## dcc:+bot start

proc dcc:+bot {hand idx paras} {
  global botnick
    set user [lindex $paras 0]
    set userorbot "bot"
    if {[validuser $user]} {
        *dcc:+bot $hand $idx $paras
    } else {
        *dcc:+bot $hand $idx $paras
        if {[validuser $user]} {
            setuser $user xtra Added "by $hand"
          userxtra $hand $userorbot
	    tellabout $hand $user
        }
    }
}

## dcc:+bot end

## dcc:-user start

proc dcc:-user {hand idx paras} {
  global botnick
  set user [lindex $paras 0]
  if {[validuser $user]} {
    set umaster "[lindex [getuser $user xtra Added] 1]"
    if {[matchattr $user b]} {
      set userorbot "bot"
    } else { set userorbot "user" }
    *dcc:-user $hand $idx $paras
    if {![validuser $user]} {
      if {[validuser $umaster]} {
        sendnote $botnick $umaster "$user deleted. $hand ($botnick)"
        userxtradel $umaster $userorbot
      }
    }
  } else {
    *dcc:-user $hand $idx $paras
  }
}

## dcc:-user end

## tellabout start

proc tellabout {hand user} {
    global nick notify-newusers
    foreach ppl ${notify-newusers} {
	sendnote $nick $ppl "introduced to $user by $hand"
    }
}    

## tellabout end

## xtras start
proc userxtra {hand arg} {
  if {$arg == "user"} {
    if {[getuser $hand xtra Users] == ""} {
      setuser $hand xtra Users "(1)"
    } else {
      set a [string trimleft [getuser $hand xtra Users] (] ; set a [string trimright $a )]
      setuser $hand xtra Users "([expr $a + 1])"
    }
  }
  if {$arg == "bot"} {
    if {[getuser $hand xtra Bots] == ""} {
      setuser $hand xtra Bots "(1)"
    } else {
      set a [string trimleft [getuser $hand xtra Bots] (] ; set a [string trimright $a )]
      setuser $hand xtra Bots "([expr $a + 1])"
    }
  }
}

proc userxtradel {hand arg} {
  if {$arg == "user"} {
    if {[getuser $hand xtra Users] == ""} {
      return 0
    } else {
      set a [string trimleft [getuser $hand xtra Users] (] ; set a [string trimright $a )]
      if {$a == 0} { return 0 }
      setuser $hand xtra Users "([expr $a - 1])"
    }
  }
  if {$arg == "bot"} {
    if {[getuser $hand xtra Bots] == ""} {
      return 0
    } else {
      set a [string trimleft [getuser $hand xtra Bots] (] ; set a [string trimright $a )]
      if {$a == 0} { return 0 }
      setuser $hand xtra Bots "([expr $a - 1])"
    }
  }
}