diff --git a/cmd_getemoji.go b/cmd_addemoji.go similarity index 69% rename from cmd_getemoji.go rename to cmd_addemoji.go index 3221e80..eb1901e 100644 --- a/cmd_getemoji.go +++ b/cmd_addemoji.go @@ -12,7 +12,7 @@ import ( "github.com/sirupsen/logrus" ) -var cmd_getemoji Command = Command{ +var cmd_addemoji Command = Command{ Definition: discord.SlashCommandCreate{ Name: "add-emoji", Description: "Add an external emoji directly to the server.", @@ -27,9 +27,7 @@ var cmd_getemoji Command = Command{ Interact: func(e *events.ApplicationCommandInteractionCreate) { emojiRegex := regexp.MustCompile(`<(.+):(\d+)>`) emojistring := emojiRegex.FindString(e.SlashCommandInteractionData().String("emoji")) - logrus.Debug(emojistring) emojiArray := strings.Split(emojistring, ":") - logrus.Debug(emojiArray) var emojiName string var emojiID string var emojiFileName string @@ -37,28 +35,35 @@ var cmd_getemoji Command = Command{ emojiName = strings.TrimSuffix(emojiArray[1], ">") emojiID = strings.TrimSuffix(emojiArray[2], ">") } - imageType, emojiRead := getEmoji(emojiID) - emojiData, err := io.ReadAll(emojiRead) + imageType, emojiReadBit64 := getEmoji(emojiID) + emojiData, err := discord.NewIcon(imageType, emojiReadBit64) if err != nil { logrus.Error(err) } _, err = e.Client().Rest().CreateEmoji(*e.GuildID(), discord.EmojiCreate{ - Name: emojiName, - Image: discord.Icon{ - Type: imageType, - Data: emojiData, - }, + Name: emojiName, + Image: *emojiData, }) if err != nil { + if strings.HasPrefix(err.Error(), "50035") { + e.CreateMessage(discord.NewMessageCreateBuilder().SetContent("Failed adding emoji. Did you provide a correct one?").SetEphemeral(true).Build()) + return + } + if strings.HasPrefix(err.Error(), "50138") { + e.CreateMessage(discord.NewMessageCreateBuilder().SetContent("Failed adding emoji. Unable to resize the emoji image.").SetEphemeral(true).Build()) + return + } logrus.Error(err) + return } if imageType == discord.IconTypeGIF { emojiFileName = emojiName + ".gif" } else { emojiFileName = emojiName + ".png" } + _, emojiRead := getEmoji(emojiID) // for some reason any []bit variable thats used with NewIcon gets corrupted even when its redeclared in a new variable err = e.CreateMessage(discord.NewMessageCreateBuilder(). - SetContentf("Emoji %s sucessfully added to this server!", emojiName).SetFiles(discord.NewFile(emojiFileName, "The emoji that was picked", emojiRead)).SetEphemeral(true). + SetContentf("Emoji %s sucessfully added to this server!", emojiName).SetFiles(discord.NewFile(emojiFileName, "", emojiRead)).SetEphemeral(true). Build()) if err != nil { logrus.Error(err) @@ -80,10 +85,8 @@ func getEmoji(emojiID string) (discord.IconType, io.Reader) { } isAnimated := isGIFImage(imageData) if isAnimated { - logrus.Debug("GIF") return discord.IconTypeGIF, bytes.NewReader(imageData) } else { - logrus.Debug("PNG") return discord.IconTypePNG, bytes.NewReader(imageData) } } diff --git a/go.mod b/go.mod index 06b8f7e..92fe977 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/vaporvee/acecore go 1.21.6 require ( - github.com/disgoorg/disgo v0.18.1 + github.com/disgoorg/disgo v0.18.2 github.com/disgoorg/json v1.1.0 github.com/disgoorg/snowflake/v2 v2.0.1 github.com/google/uuid v1.6.0 diff --git a/go.sum b/go.sum index c520994..77fc0a2 100644 --- a/go.sum +++ b/go.sum @@ -5,6 +5,10 @@ github.com/disgoorg/disgo v0.18.1-0.20240408224120-2676e29d6e86 h1:hSRIjnKWL07TY github.com/disgoorg/disgo v0.18.1-0.20240408224120-2676e29d6e86/go.mod h1:gkl6DBdbKUvmOOJayWPSvS52KPN/8uJGJ2f13gCEB1o= github.com/disgoorg/disgo v0.18.1 h1:8g3ifRVlbdZ28bX2BAVkb04dvQnnRMwN89KUkclaniw= github.com/disgoorg/disgo v0.18.1/go.mod h1:gkl6DBdbKUvmOOJayWPSvS52KPN/8uJGJ2f13gCEB1o= +github.com/disgoorg/disgo v0.18.2-0.20240412120702-1c2e34f76c43 h1:ADoIkRUNXQPAuafuA3SZZvxPxWUK5rXSgNTmODXXgoI= +github.com/disgoorg/disgo v0.18.2-0.20240412120702-1c2e34f76c43/go.mod h1:gkl6DBdbKUvmOOJayWPSvS52KPN/8uJGJ2f13gCEB1o= +github.com/disgoorg/disgo v0.18.2 h1:pZCvaFamfHcnXrj0XA73qtVofP0R8dYEyQfPNgv8dLE= +github.com/disgoorg/disgo v0.18.2/go.mod h1:gkl6DBdbKUvmOOJayWPSvS52KPN/8uJGJ2f13gCEB1o= github.com/disgoorg/json v1.1.0 h1:7xigHvomlVA9PQw9bMGO02PHGJJPqvX5AnwlYg/Tnys= github.com/disgoorg/json v1.1.0/go.mod h1:BHDwdde0rpQFDVsRLKhma6Y7fTbQKub/zdGO5O9NqqA= github.com/disgoorg/snowflake/v2 v2.0.1 h1:CuUxGLwggUxEswZOmZ+mZ5i0xSumQdXW9tXW7uGqe+0= diff --git a/handlers.go b/handlers.go index cc0dfdd..42b53af 100644 --- a/handlers.go +++ b/handlers.go @@ -25,7 +25,7 @@ type Command struct { DynamicComponentIDs func() []string } -var commands []Command = []Command{cmd_tag, cmd_tag_short, context_tag, cmd_sticky, context_sticky, cmd_ping, cmd_userinfo, cmd_getemoji, cmd_form, cmd_ask, cmd_cat, cmd_dadjoke, cmd_ticket_form, cmd_autopublish, cmd_autojoinroles} +var commands []Command = []Command{cmd_tag, cmd_tag_short, context_tag, cmd_sticky, context_sticky, cmd_ping, cmd_userinfo, cmd_addemoji, cmd_form, cmd_ask, cmd_cat, cmd_dadjoke, cmd_ticket_form, cmd_autopublish, cmd_autojoinroles} func ready(e *events.Ready) { logrus.Info("Starting up...")