package main import ( "context" "flag" "log" "math/rand" "strings" "time" "github.com/fluffle/goirc/client" "github.com/tcolgate/hugot" "github.com/tcolgate/hugot/adapters/irc" "ur.gs/lysenko/handlers/deadline" "ur.gs/lysenko/handlers/quotedb" ) var ( channels = flag.String("channels", "##testing,##test", "Channels to join (separated by comma)") host = flag.String("host", "chat.freenode.net", "Server host[:port]") ident = flag.String("ident", "lysenko", "Lysenko Bot") nick = flag.String("nick", "lysenko", "Lysenko Bot") nickserv = flag.String("nickserv", "", "NickServ password") quotes = flag.String("quotedb", ":memory:", "sqlite3 quote database") ssl = flag.Bool("ssl", true, "Enable SSL") ) func init() { // TODO: better rand.Seed rand.Seed(time.Now().Unix()) } func main() { flag.Parse() channelList := strings.Split(*channels, ",") config := client.NewConfig(*nick) config.Server = *host config.Pass = *nickserv config.SSL = *ssl adapter := irc.New(config, channelList...) db, err := quotedb.New(*quotes) if err != nil { log.Fatal(err) } defer db.DB.Close() mux := hugot.DefaultMux mux.HandleCommand("edb.AddQuoteHandler{QuoteDB: db}) mux.HandleCommand(deadline.NewCommand("edb.LastQuoteHandler{QuoteDB: db})) mux.HandleCommand(deadline.NewCommand("edb.FindQuoteHandler{QuoteDB: db})) mux.HandleCommand(deadline.NewCommand("edb.RandQuoteHandler{QuoteDB: db})) mux.HandleCommand(deadline.NewCommand("edb.QuoteHandler{QuoteDB: db})) hugot.ListenAndServe(context.Background(), mux, adapter) }