package instance
import (
"io"
"net/http"
"regexp"
"strings"
"time"
"github.com/V4NSH4J/discord-mass-dm-GO/utilities"
)
var (
buildNumber = make(map[string]string)
)
func UpdateDiscordBuildInfo() error {
jsFileRegex := regexp.MustCompile(`([a-zA-z0-9]+)\.js`)
buildInfoRegex := regexp.MustCompile(`Build Number: "\)\.concat\("([0-9]{4,8})"`)
client := &http.Client{Timeout: 10 * time.Second}
res, err := client.Get("https://discord.com/app")
if err != nil {
return err
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
return err
}
r := jsFileRegex.FindAllString(string(body), -1)
asset := r[len(r)-1]
if strings.Contains(asset, "invisible") {
asset = r[len(r)-2]
}
resp, err := client.Get("https://discord.com/assets/" + asset)
if err != nil {
return err
}
defer resp.Body.Close()
b, err := io.ReadAll(resp.Body)
if err != nil {
return err
}
z := buildInfoRegex.FindAllString(string(b), -1)
e := strings.ReplaceAll(z[0], " ", "")
buildInfos := strings.Split(e, ",")
buildNum := strings.Split(buildInfos[0], `("`)
buildNumber["stable"] = strings.ReplaceAll(buildNum[len(buildNum)-1],`"`, ``)
return nil
}
func GetDiscordBuildNumber(discord string) string {
return buildNumber[discord]
}