package main import ( "fmt" "log" "regexp" _ "embed" "encoding/base64" "github.com/bwmarrin/discordgo" ) 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+`) func extractURLFromString(in_url string) string { return string(urlPattern.Find([]byte(in_url))) } // Helper function to create string pointer func ptr(s string) *string { return &s } func formatBytes(b int) string { switch { case b >= 1<<30: return fmt.Sprintf("%.1f GB", float64(b)/float64(1<<30)) case b >= 1<<20: return fmt.Sprintf("%.1f MB", float64(b)/float64(1<<20)) case b >= 1<<10: return fmt.Sprintf("%.1f KB", float64(b)/float64(1<<10)) default: return fmt.Sprintf("%d B", b) } }