func (conn *Conn) h_NICK(line *Line) {
	if conn.st == nil && line.Nick == conn.cfg.Me.Nick {
		conn.cfg.Me.Nick = line.Args[0]
	}
}
Handle updating our own NICK if we're not using the state tracker
package client
import (
	"strings"
	"time"
)
var intHandlers = map[string]HandlerFunc{
	REGISTER: (*Conn).h_REGISTER,
	"001":    (*Conn).h_001,
	"433":    (*Conn).h_433,
	CTCP:     (*Conn).h_CTCP,
	NICK:     (*Conn).h_NICK,
	PING:     (*Conn).h_PING,
}
func (conn *Conn) addIntHandlers() {
	for n, h := range intHandlers {
		conn.handle(n, h)
	}
}
func (conn *Conn) h_PING(line *Line) {
	conn.Pong(line.Args[0])
}
func (conn *Conn) h_REGISTER(line *Line) {
	if conn.cfg.Pass != "" {
		conn.Pass(conn.cfg.Pass)
	}
	conn.Nick(conn.cfg.Me.Nick)
	conn.User(conn.cfg.Me.Ident, conn.cfg.Me.Name)
}
func (conn *Conn) h_001(line *Line) {
	conn.dispatch(&Line{Cmd: CONNECTED, Time: time.Now()})
	t := line.Args[len(line.Args)-1]
	if idx := strings.LastIndex(t, " "); idx != -1 {
		t = t[idx+1:]
		if idx = strings.Index(t, "@"); idx != -1 {
			if conn.st != nil {
				me := conn.Me()
				conn.st.NickInfo(me.Nick, me.Ident, t[idx+1:], me.Name)
			} else {
				conn.cfg.Me.Host = t[idx+1:]
			}
		}
	}
}
func (conn *Conn) h_433(line *Line) {
	me := conn.Me()
	neu := conn.cfg.NewNick(line.Args[1])
	conn.Nick(neu)
	if !line.argslen(1) {
		return
	}
	if line.Args[1] == me.Nick {
		if conn.st != nil {
			conn.cfg.Me = conn.st.ReNick(me.Nick, neu)
		} else {
			conn.cfg.Me.Nick = neu
		}
	}
}
func (conn *Conn) h_CTCP(line *Line) {
	if line.Args[0] == VERSION {
		conn.CtcpReply(line.Nick, VERSION, conn.cfg.Version)
	} else if line.Args[0] == PING && line.argslen(2) {
		conn.CtcpReply(line.Nick, PING, line.Args[2])
	}
}