package main import ( "fmt" "log" "strconv" "strings" "dim13.org/rfc" irc "github.com/fluffle/goirc/client" ) var rfcMap = make(map[int]rfc.Entry) type RFC struct{ Command } func (_ RFC) Timeout() bool { return false } func (_ RFC) WithArgs(n int) bool { return n == 2 } func (_ RFC) Handle(conn *irc.Conn, line *irc.Line) { if q := strings.Fields(line.Text()); len(q) == 2 { if id, err := strconv.Atoi(q[1]); err != nil { conn.Privmsg(line.Target(), err.Error()) } else { if entry, ok := rfcMap[id]; ok { s := fmt.Sprint(entry) conn.Privmsg(line.Target(), s) } else { conn.Privmsg(line.Target(), "not found") } } } } func init() { fd, err := rfc.Open() if err != nil { log.Fatal(err) } entries, err := rfc.Decode(fd) if err != nil { log.Fatal(err) } for _, e := range entries { id := e.ID() rfcMap[id] = e } Register("rfc", &RFC{ Command{ Help: "Perform RFC lookup", }, }) }