package main import ( "container/ring" "fmt" irc "github.com/fluffle/goirc/client" ) type Last struct{} var buffer = ring.New(10) func (Last) Handle(conn *irc.Conn, line *irc.Line) { buffer.Do(func(v interface{}) { if v != nil { l := v.(*irc.Line) s := fmt.Sprintf("%v <%v> %v", l.Time.UTC().Format("15:04 UTC"), l.Nick, l.Text()) conn.Notice(line.Nick, s) } }) } func (Last) String() string { return "Return last 10 messages" } func Push(line *irc.Line) { buffer.Value = line buffer = buffer.Next() } func init() { Register("last", &Last{}) }