package main import ( "fmt" "os" "os/signal" "syscall" "time" "app/cmd" "github.com/kf5grd/keybasebot" "samhofi.us/x/keybase/v2" "samhofi.us/x/keybase/v2/types/chat1" ) func main() { opts := parseArgs(os.Args) b := keybasebot.New("", keybase.SetHomePath(opts.HomePath)) b.Debug = opts.Debug b.JSON = opts.JSON b.LogWriter = os.Stdout b.LogConv = chat1.ConvIDStr(opts.LogConvIDStr) if opts.RedditUser != "" && opts.RedditPass != "" { b.Meta["reddit-user"] = opts.RedditUser b.Meta["reddit-pass"] = opts.RedditPass } // register the bot commands b.Commands = append(b.Commands, keybasebot.BotCommand{ Name: "ping", Ad: &cmd.PingAd, Run: keybasebot.Adapt( cmd.SendPong, keybasebot.MessageType("text"), keybasebot.CommandPrefix("!ping"), ), }, keybasebot.BotCommand{ Name: "age", Ad: &cmd.AgeAd, Run: keybasebot.Adapt( cmd.Age, keybasebot.MessageType("text"), keybasebot.CommandPrefix("!age"), ), }, keybasebot.BotCommand{ Name: "convert", Ad: &cmd.ConvertAd, Run: keybasebot.Adapt( cmd.Convert, keybasebot.MessageType("text"), keybasebot.CommandPrefix("!convert"), ), }, keybasebot.BotCommand{ Name: "price", Ad: &cmd.PriceAd, Run: keybasebot.Adapt( cmd.SendPrice, keybasebot.MessageType("text"), keybasebot.CommandPrefix("!price"), ), }, ) // if there are reddit credentials add the reddit commands if opts.RedditPass != "" && opts.RedditUser != "" { b.Commands = append(b.Commands, keybasebot.BotCommand{ Name: "eyebleach", Ad: &cmd.EyebleachAd, Run: keybasebot.Adapt(cmd.Eyebleach, keybasebot.MessageType("text"), keybasebot.CommandPrefix("!eyebleach")), }, ) fmt.Printf("%+v\n", opts) } // catch ctrl-c so we can clean up c := make(chan os.Signal) signal.Notify(c, os.Interrupt, syscall.SIGTERM) go func() { <-c b.Logger.Info("Caught SIGINT, cleaning up.") b.KB.ClearCommands() b.Logger.Info("Cleared command adverts. Bye.") time.Sleep(time.Second * 2) os.Exit(0) }() // then run b.Run() }