catbase/main.go

93 lines
2.7 KiB
Go
Raw Normal View History

package main
import (
"bitbucket.org/phlyingpenguin/godeepintir/bot"
"bitbucket.org/phlyingpenguin/godeepintir/config"
"bitbucket.org/phlyingpenguin/godeepintir/plugins"
"flag"
"fmt"
)
import irc "github.com/fluffle/goirc/client"
func main() {
// These belong in the JSON file
// var server = flag.String("server", "irc.freenode.net", "Server to connect to.")
// var nick = flag.String("nick", "CrappyBot", "Nick to set upon connection.")
// var pass = flag.String("pass", "", "IRC server password to use")
// var channel = flag.String("channel", "#AlePaleTest", "Channel to connet to.")
var cfile = flag.String("config", "config.json", "Config file to load. (Defaults to config.json)")
flag.Parse() // parses the logging flags.
config := config.Readconfig(Version, *cfile)
c := irc.SimpleClient(config.Nick)
// Optionally, enable SSL
c.SSL = false
// Add handlers to do things here!
// e.g. join a channel on connect.
c.AddHandler("connected",
func(conn *irc.Conn, line *irc.Line) {
for _, channel := range config.Channels {
conn.Join(channel)
2012-08-25 04:49:48 +00:00
fmt.Printf("Now talking in %s.\n", channel)
}
})
// And a signal on disconnect
quit := make(chan bool)
c.AddHandler("disconnected",
func(conn *irc.Conn, line *irc.Line) { quit <- true })
b := bot.NewBot(config, c)
// b.AddHandler(plugins.NewTestPlugin(b))
b.AddHandler("admin", plugins.NewAdminPlugin(b))
b.AddHandler("downtime", plugins.NewDowntimePlugin(b))
b.AddHandler("talker", plugins.NewTalkerPlugin(b))
b.AddHandler("dice", plugins.NewDicePlugin(b))
b.AddHandler("beers", plugins.NewBeersPlugin(b))
2013-01-23 21:25:04 +00:00
b.AddHandler("counter", plugins.NewCounterPlugin(b))
b.AddHandler("remember", plugins.NewRememberPlugin(b))
2012-08-26 15:45:04 +00:00
b.AddHandler("skeleton", plugins.NewSkeletonPlugin(b))
// catches anything left, will always return true
b.AddHandler("factoid", plugins.NewFactoidPlugin(b))
c.AddHandler("NICK", func(conn *irc.Conn, line *irc.Line) {
b.ActionRecieved(conn, line)
})
c.AddHandler("NAMES", func(conn *irc.Conn, line *irc.Line) {
b.ActionRecieved(conn, line)
})
c.AddHandler("MODE", func(conn *irc.Conn, line *irc.Line) {
b.ActionRecieved(conn, line)
})
c.AddHandler("PART", func(conn *irc.Conn, line *irc.Line) {
b.ActionRecieved(conn, line)
})
c.AddHandler("JOIN", func(conn *irc.Conn, line *irc.Line) {
b.ActionRecieved(conn, line)
})
c.AddHandler("ACTION", func(conn *irc.Conn, line *irc.Line) {
b.MsgRecieved(conn, line)
})
c.AddHandler("PRIVMSG", func(conn *irc.Conn, line *irc.Line) {
b.MsgRecieved(conn, line)
})
// Tell client to connect
if err := c.Connect(config.Server, config.Pass); err != nil {
fmt.Printf("Connection error: %s\n", err)
}
// Wait for disconnect
<-quit
}