diff --git a/app/assets/loading.webp b/app/assets/loading.webp new file mode 100644 index 0000000..544f428 Binary files /dev/null and b/app/assets/loading.webp differ diff --git a/app/main.go b/app/main.go index c20dcbf..4e315db 100644 --- a/app/main.go +++ b/app/main.go @@ -371,6 +371,10 @@ func main() { } }) + log.Println("Initialize loading emoji") + initLoadingEmoji(s) + + log.Println("Adding commands") registeredCommands := make([]*discordgo.ApplicationCommand, len(commands)) for i, v := range commands { diff --git a/app/misc.go b/app/misc.go index 0f63249..304cc69 100644 --- a/app/misc.go +++ b/app/misc.go @@ -2,11 +2,45 @@ package main import ( "fmt" - "os" + "log" "regexp" + _ "embed" + "encoding/base64" + + "github.com/bwmarrin/discordgo" ) -var loading_emoji = os.Getenv("LOADING_EMOJI") +var loading_emoji string + +//go:embed assets/loading.webp +var rawLoadingEmoji []byte + +var loadingEmojiBase64 = func() string { + s := "data:image/webp;base64," + base64.StdEncoding.EncodeToString(rawLoadingEmoji) + rawLoadingEmoji = nil + return s +}() + +func initLoadingEmoji(s *discordgo.Session) { + emojis, err := s.ApplicationEmojis(s.State.User.ID) + if err != nil { + log.Panic("Cannot get emojis") + } + for _, e := range emojis { + if e.Name == "loading" { + loading_emoji = fmt.Sprintf("", e.Name, e.ID) + return + } + } + e, err := s.ApplicationEmojiCreate(s.State.User.ID, &discordgo.EmojiParams{ + Name: "loading", + Image: loadingEmojiBase64, + }) + if err != nil { + log.Panicf("Cannot create loading emoji: %s", err) + } + loading_emoji = fmt.Sprintf("", e.Name, e.ID) +} var urlPattern = regexp.MustCompile(`https?://\S+`)