forked from mischief/glenda
/
ident.go
54 lines (45 loc) · 1007 Bytes
/
ident.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
package main
import (
"fmt"
"github.com/kballard/goirc/irc"
"log"
"time"
)
func init() {
RegisterModule("ident", func() Module {
return &IdentMod{}
})
}
type IdentMod struct {
nick, pass string
}
func (i *IdentMod) Init(b *Bot, conn irc.SafeConn) (err error) {
conf := b.Config.Search("mod", "ident")
i.nick = conf.Search("nick")
if i.nick == "" {
i.nick = b.IrcConfig.Nick
}
i.pass = conf.Search("pass")
if i.pass == "" {
log.Printf("ident: no pass")
return nil
}
conn.AddHandler(irc.CONNECTED, func(c *irc.Conn, l irc.Line) {
go func() {
// curse you freenode NickServ..
time.Sleep(2 * time.Second)
c.Privmsg("nickserv", fmt.Sprintf("identify %s %s", i.nick, i.pass))
log.Printf("ident: identified")
time.Sleep(2 * time.Second)
c.Privmsg("nickserv", fmt.Sprintf("regain %s", i.nick))
log.Printf("ident: regained")
}()
})
return nil
}
func (i *IdentMod) Reload() error {
return nil
}
func (i *IdentMod) Call(args ...string) error {
return nil
}