github.com/diamondburned/arikawa/v2@v2.1.0/api/application.go (about) 1 package api 2 3 import ( 4 "github.com/diamondburned/arikawa/v2/discord" 5 "github.com/diamondburned/arikawa/v2/utils/httputil" 6 ) 7 8 var EndpointApplications = Endpoint + "applications/" 9 10 type CreateCommandData struct { 11 Name string `json:"name"` 12 Description string `json:"description"` 13 Options []discord.CommandOption `json:"options"` 14 } 15 16 func (c *Client) Commands(appID discord.AppID) ([]discord.Command, error) { 17 var cmds []discord.Command 18 return cmds, c.RequestJSON( 19 &cmds, "GET", 20 EndpointApplications+appID.String()+"/commands", 21 ) 22 } 23 24 func (c *Client) Command( 25 appID discord.AppID, commandID discord.CommandID) ([]discord.Command, error) { 26 27 var cmds []discord.Command 28 return cmds, c.RequestJSON( 29 &cmds, "GET", 30 EndpointApplications+appID.String()+"/commands/"+commandID.String(), 31 ) 32 } 33 34 func (c *Client) CreateCommand( 35 appID discord.AppID, data CreateCommandData) (*discord.Command, error) { 36 37 var cmd *discord.Command 38 return cmd, c.RequestJSON( 39 &cmd, "POST", 40 EndpointApplications+appID.String()+"/commands", 41 httputil.WithJSONBody(data), 42 ) 43 } 44 45 func (c *Client) EditCommand( 46 appID discord.AppID, 47 commandID discord.CommandID, data CreateCommandData) (*discord.Command, error) { 48 49 var cmd *discord.Command 50 return cmd, c.RequestJSON( 51 &cmd, "PATCH", 52 EndpointApplications+appID.String()+"/commands/"+commandID.String(), 53 httputil.WithJSONBody(data), 54 ) 55 } 56 57 func (c *Client) DeleteCommand(appID discord.AppID, commandID discord.CommandID) error { 58 return c.FastRequest( 59 "DELETE", 60 EndpointApplications+appID.String()+"/commands/"+commandID.String(), 61 ) 62 } 63 64 func (c *Client) GuildCommands( 65 appID discord.AppID, guildID discord.GuildID) ([]discord.Command, error) { 66 67 var cmds []discord.Command 68 return cmds, c.RequestJSON( 69 &cmds, "GET", 70 EndpointApplications+appID.String()+"/guilds/"+guildID.String()+"/commands", 71 ) 72 } 73 74 func (c *Client) GuildCommand( 75 appID discord.AppID, 76 guildID discord.GuildID, 77 commandID discord.CommandID) ([]discord.Command, error) { 78 79 var cmds []discord.Command 80 return cmds, c.RequestJSON( 81 &cmds, "GET", 82 EndpointApplications+appID.String()+ 83 "/guilds/"+guildID.String()+ 84 "/commands/"+commandID.String(), 85 ) 86 } 87 88 func (c *Client) CreateGuildCommand( 89 appID discord.AppID, 90 guildID discord.GuildID, data CreateCommandData) (*discord.Command, error) { 91 92 var cmd *discord.Command 93 return cmd, c.RequestJSON( 94 &cmd, "POST", 95 EndpointApplications+appID.String()+"/guilds/"+guildID.String()+"/commands", 96 httputil.WithJSONBody(data), 97 ) 98 } 99 100 func (c *Client) EditGuildCommand( 101 appID discord.AppID, 102 guildID discord.GuildID, 103 commandID discord.CommandID, data CreateCommandData) (*discord.Command, error) { 104 105 var cmd *discord.Command 106 return cmd, c.RequestJSON( 107 &cmd, "PATCH", 108 EndpointApplications+appID.String()+ 109 "/guilds/"+guildID.String()+ 110 "/commands/"+commandID.String(), 111 httputil.WithJSONBody(data), 112 ) 113 } 114 115 func (c *Client) DeleteGuildCommand( 116 appID discord.AppID, guildID discord.GuildID, commandID discord.CommandID) error { 117 118 return c.FastRequest( 119 "DELETE", 120 EndpointApplications+appID.String()+ 121 "/guilds/"+guildID.String()+ 122 "/commands/"+commandID.String(), 123 ) 124 }