package main import ( "flag" "fmt" "github.com/chrissexton/alepale/bot" "github.com/chrissexton/alepale/config" "github.com/chrissexton/alepale/plugins" ) 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) 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("first", plugins.NewFirstPlugin(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)) b.AddHandler("counter", plugins.NewCounterPlugin(b)) b.AddHandler("remember", plugins.NewRememberPlugin(b)) b.AddHandler("skeleton", plugins.NewSkeletonPlugin(b)) b.AddHandler("your", plugins.NewYourPlugin(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("QUIT", 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 }