All checks were successful
Build only (for PRs) / build-only (pull_request) Successful in 4m52s
68 lines
1.4 KiB
Go
68 lines
1.4 KiB
Go
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("<a:%s:%s>", 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("<a:%s:%s>", 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)
|
|
}
|
|
}
|