summaryrefslogtreecommitdiff
path: root/last.go
blob: 8cf12fa0393d04dc5b0d3c20d6384de1e911f055 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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{})
}