TCL Nick Ghost

Nick Ghost

#################################################################################
## Imeto koeto botyt wi polzwa w IRC.
set ImeNaBota "NickName"

## Parolata na botyt wi s koqto se identificira w NS-a.
set Parola "Password"

## Alternatiwniqt psewdonim na botyt. Tozi koito shte polzwa ako $ImeNaBota e zaet.
set AltImeNaBota "NickName2"

## Parolata za identifikaciq na Alternatiwniqt psewdonim.
set AltParola "Password2"

## uhost na NS (za UniBG go ostawete taka!)
set NSnuh "NS!NickServ@UniBG.Services"

bind notc - * serv_check

## Fuck the rules.
set keep-nick 0

proc strlwr {string} {
  string tolower $string
}

if {[strlwr $nick] != [strlwr $ImeNaBota]} {
  set nick $ImeNaBota
  putquick "NICK $ImeNaBota"
}

set altnick $AltImeNaBota

set IdPls "This nickname is owned by someone else"
set IdOrDie "If you do not \001IDENTIFY\001 within one minute, you will be disconnected"
set PassAcc "Password accepted - you are now recognized"
set WrongPass "Password Incorrect"

set NS(Critic) 0
set NS(SentPass) 0
set NS(NotId) 0
set NS(NotReg) 0
set NS(Critic) 0

proc serv_check {nick uhost hand text dest} {
  global botnick NS NSnuh IdPls IdOrDie PassAcc WrongPass
  global Parola AltParola ImeNaBota AltImeNaBota 
  if {[strlwr $botnick] != [strlwr $dest]} {
	return -1
  }
  if {[strlwr "$nick!$uhost"] == [strlwr $NSnuh]} {
	if {[strlwr $text] == [strlwr $IdPls]} {
	  set NS(Critic) 1
	  set NS(SentPass) 1
	  set NS(NotId) 1
	  set NS(NotReg) 0
	  botnsidentify
	} elseif {[strlwr $text] == [strlwr $IdOrDie]} {
	  set NS(Critic) 2
	  set NS(NotId) 1
	  set NS(NotReg) 0
	  if {$NS(SentPass) == 0} {
		set NS(SentPass) 1
		botnsidentify
	  }
	} elseif {[strlwr $text] == [strlwr $PassAcc]} {
	  set NS(Critic) 0
	  set NS(SentPass) 0
	  set NS(NotReg) 0
	  set NS(NotId) 0
	} elseif {[strlwr $text] == [strlwr $WrongPass]} {
	  set NS(NotReg) 0
	  if {$NS(Critic) == 1} {
		if {[strlwr $botnick] == [strlwr $ImeNaBota]} {
		  set NS(Critic) 0
		  set NS(SentPass) 0
		  set NS(NotId) 0
		  putquick "NICK $AltImeNaBota"
		}
		return 1
	  }
	  set NS(Critic) 0
	  set NS(SentPass) 0
	  set NS(NotReg) 0
	  set NS(NotId) 0
	}
  }
}

# From alltools.tcl.

proc botnsidentify {} {
  global botnick ImeNaBota AltImeNaBota NS NSnuh Parola AltParola
  if {[strlwr $botnick] == [strlwr $ImeNaBota]} {
	putquick "PRIVMSG [lindex [split $NSnuh "!"] 0] :identify $Parola"
  } elseif {[strlwr $botnick] == [strlwr $AltImeNaBota]} {
	putquick "PRIVMSG [lindex [split $NSnuh "!"] 0] :identify $AltParola"
  }
}

proc botnsregister {} {
  global botnick ImeNaBota AltImeNaBota NS NSnuh Parola AltParola

  if {[strlwr $botnick] == [strlwr $ImeNaBota]} {
	putquick "PRIVMSG [lindex [split $NSnuh "!"] 0] :register $Parola $Parola"
  } elseif {[strlwr $botnick] == [strlwr $AltImeNaBota]} {
	putquick "PRIVMSG [lindex [split $NSnuh "!"] 0] :register $AltParola $AltParola"
  }
}

bind raw - 303 bot_is_online

proc bot_is_online {* 303 arg} {
global botnick ImeNaBota AltImeNaBota Parola AltParola NSnuh

  foreach nqh [lrange $arg 1 end] {
  set nqh [lindex [split $nqh ":"] 1]
  if {[strlwr $nqh] == [strlwr $ImeNaBota] && [strlwr $nqh] != [strlwr $botnick]} {
    putserv "PRIVMSG [lindex [split $NSnuh "!"] 0] :ghost $ImeNaBota $Parola"
    putserv "NICK $ImeNaBota"
  } elseif {[strlwr $nqh] == [strlwr $AltImeNaBota] && [strlwr $nqh] != [strlwr $botnick]} {
    putserv "PRIVMSG [lindex [split $NSnuh "!"] 0] :ghost $AltImeNaBota $AltParola"
    putserv "NICK $AltImeNaBota"
	}
  }
}

proc cycle_ison {} {
global botnick ImeNaBota AltImeNaBota
  putserv "ISON :$ImeNaBota $AltImeNaBota"
  if {![string match *cycle_ison* [utimers]]} { utimer 60 cycle_ison }
}

if {![string match *cycle_ison* [utimers]]} { utimer 60 cycle_ison }

putlog "NS/CS support TCL by IRCHelp.UniBG.Org Team Loaded!!!"