-
Notifications
You must be signed in to change notification settings - Fork 0
/
vikingdice.go
78 lines (64 loc) · 1.48 KB
/
vikingdice.go
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package main
import (
"github.com/hirsch/ircudf"
"github.com/hirsch/conf"
"log"
"math/rand"
"strings"
"time"
)
var (
chann = ""
admin = ""
add = make(map[string]string)
)
func main() {
cfg, err := conf.Open("server.cfg"); check(err)
addr, err := cfg.Read("server", "address"); check(err)
pass, err := cfg.Read("server", "password"); check(err)
nick, err := cfg.Read("server", "nickname"); check(err)
chann, err = cfg.Read("server", "channel"); check(err)
admin, err = cfg.Read("server", "admin"); check(err)
admin = strings.ToLower(admin)
ircudf.Debug = true
ircudf.HandleReply(reply)
ircudf.HandlePrivmsg(privmsg)
server := ircudf.Create(addr, nick, nick, nick, pass)
err = server.Connect(); check(err)
}
func reply(server *ircudf.Server, number, name, reply string) {
if number == "376" {
log.Println("Quick fix: Waiting 10 seconds")
time.Sleep(10 * time.Second)
server.Join(chann)
}
}
func privmsg(server *ircudf.Server, channel, user, message string) {
if message == "!get" && strings.ToLower(user) == admin {
if len(add) < 1 {
server.Privmsg(chann, "no entries yet")
return
}
i := 0
rand := rand.Intn(len(add))
for name, entry := range add {
if i == rand {
server.Privmsg(chann, "Selected " + name + ": " + entry)
break
}
i++
}
add = make(map[string]string)
return
}
if len(message) > 5 {
if message[:5] == "!add " {
add[user] = message[5:]
}
}
}
func check(err error) {
if err != nil {
log.Fatal(err)
}
}