From cdc57f55c4129aec2710263201b96f94154f530d Mon Sep 17 00:00:00 2001 From: lyx0 Date: Sun, 17 Oct 2021 21:37:45 +0200 Subject: [PATCH] add numbers command --- pkg/api/numbersapi.go | 41 +++++++++++++++++++++++++++++++++++++++++ pkg/commands/number.go | 16 ++++++++++++++++ pkg/handlers/command.go | 6 ++++++ 3 files changed, 63 insertions(+) create mode 100644 pkg/api/numbersapi.go create mode 100644 pkg/commands/number.go diff --git a/pkg/api/numbersapi.go b/pkg/api/numbersapi.go new file mode 100644 index 0000000..e6f6a4e --- /dev/null +++ b/pkg/api/numbersapi.go @@ -0,0 +1,41 @@ +package api + +import ( + "fmt" + "io/ioutil" + "net/http" + "strconv" + + log "github.com/sirupsen/logrus" +) + +func RandomNumber() string { + response, err := http.Get("http://numbersapi.com/random/trivia") + if err != nil { + log.Fatalln(err) + } + responseData, err := ioutil.ReadAll(response.Body) + if err != nil { + log.Fatalln(err) + } + + return string(responseData) +} + +func Number(num string) string { + number, err := strconv.Atoi(num) + if err != nil { + return "Given value is not a number." + } else { + response, err := http.Get(fmt.Sprint("http://numbersapi.com/" + string(number))) + if err != nil { + log.Fatalln(err) + } + responseData, err := ioutil.ReadAll(response.Body) + if err != nil { + log.Fatalln(err) + } + return string(responseData) + } + +} diff --git a/pkg/commands/number.go b/pkg/commands/number.go new file mode 100644 index 0000000..11942b9 --- /dev/null +++ b/pkg/commands/number.go @@ -0,0 +1,16 @@ +package commands + +import ( + "github.com/gempir/go-twitch-irc/v2" + "github.com/lyx0/nourybot/pkg/api" +) + +func RandomNumber(channel string, client *twitch.Client) { + reply := api.RandomNumber() + client.Say(channel, string(reply)) +} + +func Number(channel string, number string, client *twitch.Client) { + reply := api.Number(number) + client.Say(channel, string(reply)) +} diff --git a/pkg/handlers/command.go b/pkg/handlers/command.go index cba9d2b..fc58f7d 100644 --- a/pkg/handlers/command.go +++ b/pkg/handlers/command.go @@ -136,6 +136,12 @@ func HandleCommand(message twitch.PrivateMessage, twitchClient *twitch.Client, u commands.Godocs(message.Channel, message.Message[9:len(message.Message)], twitchClient) return } + case "number": + if msgLen == 1 { + commands.RandomNumber(message.Channel, twitchClient) + } else { + commands.Number(message.Channel, cmdParams[1], twitchClient) + } case "ping": commands.Ping(message.Channel, twitchClient, uptime) return