package main import ( "fmt" "log" "strings" irc "github.com/fluffle/goirc/client" ) type Commander interface { irc.Handler fmt.Stringer } const maxLen = 500 var commands = make(map[string]Commander) func Register(cmd string, f Commander) { commands[cmd] = f } func Dispatch(conn *irc.Conn, line *irc.Line) { if f := strings.Fields(line.Text()); len(f) > 0 { cmd := strings.ToLower(f[0]) if c, ok := commands[cmd]; ok { log.Println(line.Nick, f) c.Handle(conn, line) } } }