mirror of https://github.com/fluffle/goirc
Add a command system
This commit is contained in:
parent
f212894aed
commit
3e83d30e71
1
Makefile
1
Makefile
|
@ -7,6 +7,7 @@ include $(GOROOT)/src/Make.inc
|
||||||
TARG=rbot
|
TARG=rbot
|
||||||
GOFILES=\
|
GOFILES=\
|
||||||
rbot.go\
|
rbot.go\
|
||||||
|
handler.go\
|
||||||
|
|
||||||
include $(GOROOT)/src/Make.cmd
|
include $(GOROOT)/src/Make.cmd
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"irc"
|
||||||
|
//"fmt"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
var commands = map [string]func(*irc.Conn, string, string, string) {
|
||||||
|
"kill": kill,
|
||||||
|
}
|
||||||
|
|
||||||
|
func handlePrivmsg(conn *irc.Conn, line *irc.Line) {
|
||||||
|
target := line.Args[0]
|
||||||
|
if target[0] == '#' || target[0] == '&' {
|
||||||
|
// message to a channel
|
||||||
|
command(conn, line.Nick, line.Text, target)
|
||||||
|
} else if target == nick {
|
||||||
|
// message to us
|
||||||
|
command(conn, line.Nick, line.Text, target)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func command(conn *irc.Conn, nick, text, target string) {
|
||||||
|
if text[:len(trigger)] != trigger {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
split := strings.Split(text, " ", 2)
|
||||||
|
if len(split[0]) < 2 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
handler := commands[split[0][1:]]
|
||||||
|
if handler != nil {
|
||||||
|
if len(split) > 1 {
|
||||||
|
handler(conn, nick, split[1], target)
|
||||||
|
} else {
|
||||||
|
handler(conn, nick, "", target)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func kill(conn *irc.Conn, nick, args, target string) {
|
||||||
|
conn.Action(target, "dies.")
|
||||||
|
}
|
|
@ -3,5 +3,6 @@ server: irc.rizon.net
|
||||||
nick: rbot
|
nick: rbot
|
||||||
user: rbot
|
user: rbot
|
||||||
ssl: false
|
ssl: false
|
||||||
|
trigger: !
|
||||||
|
|
||||||
[#raylu]
|
[#raylu]
|
||||||
|
|
6
rbot.go
6
rbot.go
|
@ -7,7 +7,7 @@ import (
|
||||||
"github.com/kless/goconfig/config"
|
"github.com/kless/goconfig/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
var nick, server, user string
|
var nick, server, user, trigger string
|
||||||
var ssl bool
|
var ssl bool
|
||||||
var channels []string
|
var channels []string
|
||||||
|
|
||||||
|
@ -22,6 +22,7 @@ func main() {
|
||||||
conn.Join(c)
|
conn.Join(c)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
c.AddHandler("privmsg", handlePrivmsg)
|
||||||
|
|
||||||
for {
|
for {
|
||||||
fmt.Printf("Connecting to %s...\n", server)
|
fmt.Printf("Connecting to %s...\n", server)
|
||||||
|
@ -62,4 +63,7 @@ func parseConfig(confFile string) {
|
||||||
i++
|
i++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
trigger, err = conf.String("DEFAULT", "trigger")
|
||||||
|
if err != nil { fmt.Printf("Config error: %s\n", err); os.Exit(1) }
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue