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.
78 lines
2.1 KiB
78 lines
2.1 KiB
package generate
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/go-chat-bot/bot"
|
|
"github.com/spf13/viper"
|
|
"math/rand"
|
|
"ratbot/plugins/web"
|
|
"time"
|
|
)
|
|
|
|
func generateLink(command *bot.Cmd) (string, error) {
|
|
apiURL := viper.GetString("MAZE_RATS_API_URL") // From global viper state
|
|
if apiURL == "" {
|
|
return "", fmt.Errorf("Could not determine Maze Rats API URL from config")
|
|
}
|
|
|
|
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
|
seed := r.Int63()
|
|
|
|
var response string
|
|
response = fmt.Sprintf(
|
|
"%v/api/%v/%v",
|
|
apiURL, command.Command, seed,
|
|
)
|
|
|
|
return response, nil
|
|
}
|
|
|
|
func generateSimple(command *bot.Cmd) (string, error) {
|
|
apiURL := viper.GetString("MAZE_RATS_API_URL") // From global viper state
|
|
if apiURL == "" {
|
|
return "", fmt.Errorf("Could not determine Maze Rats API URL from config")
|
|
}
|
|
|
|
var response string
|
|
url := fmt.Sprintf(
|
|
"%v/api/generate/%v",
|
|
apiURL, command.Command,
|
|
)
|
|
|
|
body, err := web.GetBody(url, "text")
|
|
|
|
if err != nil {
|
|
response = fmt.Sprintf("ERROR: %v returned '%v'", url, err)
|
|
} else {
|
|
response = fmt.Sprintf(
|
|
"%v generates a %v: %v",
|
|
command.User.Nick, command.Command, string(body),
|
|
)
|
|
}
|
|
|
|
return response, nil
|
|
}
|
|
|
|
func init() {
|
|
commands := []struct {
|
|
command string
|
|
description string
|
|
exampleArgs []string
|
|
handler func(*bot.Cmd) (string, error)
|
|
}{
|
|
{"character", "Generate a Maze Rats character", []string{}, generateLink},
|
|
{"city", "Generate a Maze Rats city", []string{}, generateLink},
|
|
{"monster", "Generate a Maze Rats monster", []string{}, generateLink},
|
|
{"dungeon", "Generate a Maze Rats dungeon", []string{}, generateLink},
|
|
|
|
{"spell", "Generate a Maze Rats spell", []string{}, generateSimple},
|
|
{"name", "Generate a name", []string{}, generateSimple},
|
|
{"potion", "Generate a potion", []string{}, generateSimple},
|
|
{"mutation", "Generate a mutation", []string{}, generateSimple},
|
|
{"insanity", "Generate an insanity", []string{}, generateSimple},
|
|
{"catastrophe", "Generate an catastrophe", []string{}, generateSimple},
|
|
}
|
|
for _, c := range commands {
|
|
bot.RegisterCommand(c.command, c.description, "", c.handler)
|
|
}
|
|
}
|
|
|