diff options
Diffstat (limited to 'irc/splatbot/handler.go')
| -rw-r--r-- | irc/splatbot/handler.go | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/irc/splatbot/handler.go b/irc/splatbot/handler.go new file mode 100644 index 0000000..51ff843 --- /dev/null +++ b/irc/splatbot/handler.go @@ -0,0 +1,53 @@ +package main + +import ( + "encoding/json" + "io/ioutil" + "log" + "net/http" + "strings" + + "github.com/belak/irc" +) + +func handlePrivmsg(c *irc.Client, e *irc.Event) { + if strings.HasPrefix(e.Trailing(), "!splatoon") { + splatoonLookup(c, e) + } +} + +func splatoonLookup(c *irc.Client, e *irc.Event) { + resp, err := http.Get(url) + if err != nil { + c.Reply(e, "Couldn't look up splatoon maps: %s", err.Error()) + return + } + + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + c.Reply(e, "Couldn't look up splatoon maps: %s", err.Error()) + return + } + + defer resp.Body.Close() + + var sd []SplatoonData + err = json.Unmarshal(body, &sd) + if err != nil { + c.Reply(e, "Couldn't look up splatoon maps: %s", err.Error()) + return + } + + data := sd[0] + + stage1 := data.Stages[0] + stage2 := data.Stages[1] + c.Reply( + e, + "From %s to %s, the stage rotation is %s and %s", + data.DatetimeTermBegin, data.DatetimeTermEnd, + englishIfy(stage1), englishIfy(stage2), + ) + + log.Printf("%s asked me to look up data", e.Identity.Nick) +} |
