func (conn *Conn) h_QUIT(line *Line) {
	conn.st.DelNick(line.Nick)
}
Handle other people's QUITs
package client
import (
	"strings"
	"github.com/fluffle/goirc/logging"
)
var stHandlers = map[string]HandlerFunc{
	"JOIN":  (*Conn).h_JOIN,
	"KICK":  (*Conn).h_KICK,
	"MODE":  (*Conn).h_MODE,
	"NICK":  (*Conn).h_STNICK,
	"PART":  (*Conn).h_PART,
	"QUIT":  (*Conn).h_QUIT,
	"TOPIC": (*Conn).h_TOPIC,
	"311":   (*Conn).h_311,
	"324":   (*Conn).h_324,
	"332":   (*Conn).h_332,
	"352":   (*Conn).h_352,
	"353":   (*Conn).h_353,
	"671":   (*Conn).h_671,
}
func (conn *Conn) addSTHandlers() {
	for n, h := range stHandlers {
		conn.stRemovers = append(conn.stRemovers, conn.handle(n, h))
	}
}
func (conn *Conn) delSTHandlers() {
	for _, h := range conn.stRemovers {
		h.Remove()
	}
	conn.stRemovers = conn.stRemovers[:0]
}
func (conn *Conn) h_STNICK(line *Line) {
	conn.st.ReNick(line.Nick, line.Args[0])
}
func (conn *Conn) h_JOIN(line *Line) {
	ch := conn.st.GetChannel(line.Args[0])
	nk := conn.st.GetNick(line.Nick)
	if ch == nil {
		if !conn.Me().Equals(nk) {
			logging.Warn("irc.JOIN(): JOIN to unknown channel %s received "+
				"from (non-me) nick %s", line.Args[0], line.Nick)
			return
		}
		conn.st.NewChannel(line.Args[0])
		conn.Mode(line.Args[0])
		conn.Who(line.Args[0])
	}
	if nk == nil {
		conn.st.NewNick(line.Nick)
		conn.st.NickInfo(line.Nick, line.Ident, line.Host, "")
		conn.Who(line.Nick)
	}
	conn.st.Associate(line.Args[0], line.Nick)
}
func (conn *Conn) h_PART(line *Line) {
	conn.st.Dissociate(line.Args[0], line.Nick)
}
func (conn *Conn) h_KICK(line *Line) {
	if !line.argslen(1) {
		return
	}
	conn.st.Dissociate(line.Args[0], line.Args[1])
}