mirror of
https://github.com/diamondburned/arikawa.git
synced 2024-11-30 18:53:30 +00:00
diamondburned
86756dfbaa
This commit adds a new discord.APIEmoji type along with changes to certain methods in package API that utilizes this new type. Similarly to typed snowflakes, this should help reduce mistakes when using the React functions.
78 lines
2.6 KiB
Go
78 lines
2.6 KiB
Go
package api
|
|
|
|
import (
|
|
"github.com/diamondburned/arikawa/v2/discord"
|
|
"github.com/diamondburned/arikawa/v2/utils/httputil"
|
|
)
|
|
|
|
// Emojis returns a list of emoji objects for the given guild.
|
|
func (c *Client) Emojis(guildID discord.GuildID) ([]discord.Emoji, error) {
|
|
var e []discord.Emoji
|
|
return e, c.RequestJSON(&e, "GET", EndpointGuilds+guildID.String()+"/emojis")
|
|
}
|
|
|
|
// Emoji returns an emoji object for the given guild and emoji IDs.
|
|
func (c *Client) Emoji(guildID discord.GuildID, emojiID discord.EmojiID) (*discord.Emoji, error) {
|
|
var emj *discord.Emoji
|
|
return emj, c.RequestJSON(&emj, "GET",
|
|
EndpointGuilds+guildID.String()+"/emojis/"+emojiID.String())
|
|
}
|
|
|
|
// https://discord.com/developers/docs/resources/emoji#create-guild-emoji-json-params
|
|
type CreateEmojiData struct {
|
|
// Name is the name of the emoji.
|
|
Name string `json:"name"`
|
|
// Image is the the 128x128 emoji image.
|
|
Image Image `json:"image"`
|
|
// Roles are the roles that can use the emoji.
|
|
Roles *[]discord.RoleID `json:"roles,omitempty"`
|
|
}
|
|
|
|
// CreateEmoji creates a new emoji in the guild. This endpoint requires
|
|
// MANAGE_EMOJIS. ContentType must be "image/jpeg", "image/png", or
|
|
// "image/gif". However, ContentType can also be automatically detected
|
|
// (though shouldn't be relied on).
|
|
// Emojis and animated emojis have a maximum file size of 256kb.
|
|
func (c *Client) CreateEmoji(guildID discord.GuildID, data CreateEmojiData) (*discord.Emoji, error) {
|
|
|
|
// Max 256KB
|
|
if err := data.Image.Validate(256 * 1000); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var emj *discord.Emoji
|
|
return emj, c.RequestJSON(
|
|
&emj, "POST",
|
|
EndpointGuilds+guildID.String()+"/emojis",
|
|
httputil.WithJSONBody(data),
|
|
)
|
|
}
|
|
|
|
// https://discord.com/developers/docs/resources/emoji#modify-guild-emoji-json-params
|
|
type ModifyEmojiData struct {
|
|
// Name is the name of the emoji.
|
|
Name string `json:"name,omitempty"`
|
|
// Roles are the roles that can use the emoji.
|
|
Roles *[]discord.RoleID `json:"roles,omitempty"`
|
|
}
|
|
|
|
// ModifyEmoji changes an existing emoji. This requires MANAGE_EMOJIS. Name and
|
|
// roles are optional fields (though you'd want to change either though).
|
|
//
|
|
// Fires a Guild Emojis Update Gateway event.
|
|
func (c *Client) ModifyEmoji(guildID discord.GuildID, emojiID discord.EmojiID, data ModifyEmojiData) error {
|
|
return c.FastRequest(
|
|
"PATCH",
|
|
EndpointGuilds+guildID.String()+"/emojis/"+emojiID.String(),
|
|
httputil.WithJSONBody(data),
|
|
)
|
|
}
|
|
|
|
// Delete the given emoji.
|
|
//
|
|
// Requires the MANAGE_EMOJIS permission.
|
|
// Fires a Guild Emojis Update Gateway event.
|
|
func (c *Client) DeleteEmoji(guildID discord.GuildID, emojiID discord.EmojiID) error {
|
|
return c.FastRequest("DELETE", EndpointGuilds+guildID.String()+"/emojis/"+emojiID.String())
|
|
}
|