summaryrefslogtreecommitdiff
path: root/last.go
blob: f993e82536198ed9b0ca8061202c78220d35f6b8 (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 "Renurn last 10 messages"
}

func Push(line *irc.Line) {
	buffer.Value = line
	buffer = buffer.Next()
}

func init() {
	Register("last", &Last{})
}