-
Notifications
You must be signed in to change notification settings - Fork 0
/
option.go
48 lines (40 loc) · 1.23 KB
/
option.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package harmonia
import (
"log"
"github.com/bwmarrin/discordgo"
)
// An Option is a wrapper around an ApplicationCommandOption with added functionality.
type Option struct {
*discordgo.ApplicationCommandOption
}
// NewOption returns an option with given name and type.
func NewOption(name string, t discordgo.ApplicationCommandOptionType) *Option {
if name == "" {
log.Panic("empty option name")
}
return &Option{
&discordgo.ApplicationCommandOption{
Type: t,
Name: name,
},
}
}
// WithDescription changes the description of the Option and returns itself, so that it can be chained.
func (o *Option) WithDescription(description string) *Option {
o.Description = description
return o
}
// IsRequired sets the requirement of the Option to true and returns itself, so that it can be chained. By default an Option is not required.
func (o *Option) IsRequired() *Option {
o.Required = true
return o
}
// AddChoice adds a choice to an option, value should be the same as the choice's type and returns itself, so that it can be chained.
func (o *Option) AddChoice(name string, value interface{}) *Option {
c := &discordgo.ApplicationCommandOptionChoice{
Name: name,
Value: value,
}
o.Choices = append(o.Choices, c)
return o
}