You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
1.4 KiB

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
}