package main import ( "fmt" "image" "math/rand" "os" "strings" "time" "github.com/llgcode/draw2d/draw2dimg" "github.com/rogpeppe/misc/svg" "github.com/rudi9719/loggy" "samhofi.us/x/keybase/v2" "samhofi.us/x/keybase/v2/types/chat1" ) var ( k = keybase.NewKeybase() configFile = "config.json" config = loadConfig() log = loggy.NewLogger(config.LogOpts) r = rand.New(rand.NewSource(time.Now().UnixNano())) ) func printChat(m chat1.MsgSummary) { defer log.PanicSafe("printChat") if m.Sender.Username == k.Username { return } if strings.HasPrefix(m.Content.Text.Body, "@chessbot") { chessCommand(m) return } } func main() { fmt.Println("Loading config.") fmt.Println("Starting log") log = loggy.NewLogger(config.LogOpts) fmt.Println("Log configured") defer log.PanicSafe("main") log.LogInfo("Logger configured") chat := printChat err := log.LogErrorType handlers := keybase.Handlers{ ChatHandler: &chat, ErrorHandler: &err, } log.LogCritical("Starting Chessbot") k.Run(handlers, &keybase.RunOptions{}) } func svgToPNG(path string) bool { defer log.PanicSafe("svgToPNG") file, err := os.Open(fmt.Sprintf("%+v.svg", path)) if err != nil { return false } defer file.Close() size := image.Point{512, 512} dest, err := svg.Render(file, size) if err != nil { return false } err = draw2dimg.SaveToPngFile(fmt.Sprintf("%+v.png", path), dest) if err != nil { return false } return true }