Implement slash commands for playback control
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
package commands
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/disgoorg/disgo/discord"
|
||||
"github.com/disgoorg/disgo/events"
|
||||
)
|
||||
|
||||
type VolumeCommand struct {
|
||||
deps *Dependencies
|
||||
}
|
||||
|
||||
func NewVolumeCommand(deps *Dependencies) *VolumeCommand {
|
||||
return &VolumeCommand{deps: deps}
|
||||
}
|
||||
|
||||
func (c *VolumeCommand) Definition() discord.ApplicationCommandCreate {
|
||||
return discord.SlashCommandCreate{
|
||||
Name: "volume",
|
||||
Description: "Sets the playback volume",
|
||||
Options: []discord.ApplicationCommandOption{
|
||||
discord.ApplicationCommandOptionInt{
|
||||
Name: "level",
|
||||
Description: "Volume percentage, 0-200 (default 100)",
|
||||
Required: true,
|
||||
MinValue: intPtr(0),
|
||||
MaxValue: intPtr(200),
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func (c *VolumeCommand) Execute(ctx context.Context, event *events.ApplicationCommandInteractionCreate) error {
|
||||
gid, err := requirePlaybackAccess(c.deps.Discord, event)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
level := event.SlashCommandInteractionData().Int("level")
|
||||
|
||||
if err := c.deps.Music.Guild(gid).SetVolume(ctx, level); err != nil {
|
||||
return replyWithError(event, "Could not change the volume.", err)
|
||||
}
|
||||
return reply(event, fmt.Sprintf("Volume set to **%d%%**.", level))
|
||||
}
|
||||
Reference in New Issue
Block a user