Slash commands manager for discordgo
go get github.com/ethanent/discordgo-scm/v3
SCM is based around the concept of a Feature. It's meant to be a somewhat futureproof way to handle all kinds of Discord interactions.
You may create Features for a number of different interaction types, including ApplicationCommand, ApplicationCommandAutocomplete, and MessageComponent.
Interaction Type | Relevant Feature Properties |
---|---|
discordgo.InteractionApplicationCommand | Type, Handler, ApplicationCommand |
discordgo.InteractionApplicationCommandAutocomplete | Type, Handler, ApplicationCommand |
discordgo.InteractionMessageComponent | Type, Handler, CustomID |
Now, to actually use the library, you must create an SCM and add Features.
Create an SCM:
m := scm.NewSCM()
Add a Feature to your SCM:
m.AddFeature(myFeature)
Have your SCM handle interactions with a bot:
s.AddHandler(m.HandleInteractionCreate)
Register ApplicationCommands with your bot:
// Where s is your discordgo session
err := m.CreateCommands(s, "")
// Please handle your errors :)
Delete ApplicationCommands once bot shuts down:
m.DeleteCommands(s, "")
See the godoc for full details.