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.
70 lines
1.3 KiB
70 lines
1.3 KiB
4 years ago
|
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 Config
|
||
|
log = loggy.NewLogger(config.LogOpts)
|
||
|
r = rand.New(rand.NewSource(time.Now().UnixNano()))
|
||
|
)
|
||
|
|
||
|
func printChat(m chat1.MsgSummary) {
|
||
|
defer log.PanicSafe()
|
||
|
if m.Sender.Username == k.Username {
|
||
|
return
|
||
|
}
|
||
|
if strings.HasPrefix(m.Content.Text.Body, "@chessbot") {
|
||
|
chessCommand(m)
|
||
|
return
|
||
|
}
|
||
|
log.LogInfo("%s: %s\n", m.Sender.Username, m.Content.Text.Body)
|
||
|
}
|
||
|
func main() {
|
||
|
loadConfig()
|
||
|
log = loggy.NewLogger(config.LogOpts)
|
||
|
defer log.PanicSafe()
|
||
|
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()
|
||
|
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
|
||
|
|
||
|
}
|