route/vendor/github.com/Xe/x/tg/covfefe/commands/dice.go

54 lines
1.2 KiB
Go
Raw Normal View History

2017-10-06 15:29:20 +00:00
package commands
import (
"math/rand"
"strings"
"time"
"github.com/justinian/dice"
"github.com/syfaro/finch"
"gopkg.in/telegram-bot-api.v4"
)
func init() {
finch.RegisterCommand(&diceCommand{})
rand.Seed(time.Now().Unix())
}
type diceCommand struct {
finch.CommandBase
}
func (cmd *diceCommand) Help() finch.Help {
return finch.Help{
Name: "Dice",
Description: "Standard: xdy[[k|d][h|l]z][+/-c] - rolls and sums x y-sided dice, keeping or dropping the lowest or highest z dice and optionally adding or subtracting c.",
Example: "/dice@@ 4d6kh3+4",
Botfather: [][]string{
[]string{"dice", "4d20, etc"},
},
}
}
func (cmd *diceCommand) ShouldExecute(message tgbotapi.Message) bool {
return finch.SimpleCommand("dice", message.Text)
}
func (cmd *diceCommand) Execute(message tgbotapi.Message) error {
parv := strings.Fields(message.CommandArguments())
if len(parv) != 1 {
msg := tgbotapi.NewMessage(message.Chat.ID, "Try something like 4d20")
return cmd.Finch.SendMessage(msg)
}
text, _, err := dice.Roll(parv[0])
if err != nil {
return err
}
msg := tgbotapi.NewMessage(message.Chat.ID, text.String())
return cmd.Finch.SendMessage(msg)
}