-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcallback.go
More file actions
52 lines (44 loc) · 985 Bytes
/
callback.go
File metadata and controls
52 lines (44 loc) · 985 Bytes
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package irc
const (
REGISTER = "REGISTER"
DISCONNECTED = "DISCONNECTED"
)
type Callbacker interface {
Callback(*Conn, *Event)
}
type CallbackFunc func(*Conn, *Event)
func (cf CallbackFunc) Callback(conn *Conn, e *Event) {
cf(conn, e)
}
func (conn *Conn) CallbackerFunc(f func(*Conn, *Event)) {
conn.callbacker = CallbackFunc(f)
}
func (conn *Conn) Callbacker(cf CallbackFunc) {
conn.callbacker = cf
}
func (conn *Conn) callback(e *Event) {
conn.callbacker.Callback(conn, e)
}
func DefaultCallback(conn *Conn, e *Event) {
switch e.Code {
case REGISTER:
if 0 < len(conn.password) {
conn.Pass(conn.password)
}
conn.Nick(conn.nick)
conn.User(conn.cfg.User, conn.cfg.RealName)
case "001":
conn.cnick = e.Args[0]
case "433":
conn.cnick = conn.cnick + "_"
conn.Nick(conn.cnick)
case "437":
conn.cnick = conn.cnick + "_"
conn.Nick(conn.cnick)
case "NICK":
conn.cnick = e.Message()
case "PING":
conn.Pong(e.Message())
case DISCONNECTED:
}
}