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  }